Programación y Métodos Numéricos Errores de redondeo en...

Post on 13-Sep-2018

220 views 0 download

transcript

63Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Programación y Métodos NuméricosErrores de redondeo en la representación

de números reales: CODIFICACIÓN DE NÚMEROS REALES

Programación y Métodos NuméricosErrores de redondeo en la representación

de números reales: CODIFICACIÓN DE NÚMEROS REALES

Carlos Conde LCarlos Conde LáázarozaroArturo Hidalgo LArturo Hidalgo LóópezpezAlfredo LAlfredo Lóópez Benitopez Benito Febrero, 2007

64Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Expresan los números en notación científica binaria pero:

2º) Utilizando mantisas con (s+1) bits1º) Asignando (t+1) bits para almacenar el exponente.

La condición 1ª implica que sólo se pueden representar números no nulos cuyo valor absoluto esté comprendido entre ciertas cotas.Las condiciones 1ª y 2ª implican que:

* Sólo existe un número finito de números.* Las mantisas de los números reales con más dígitos

decimales deben ser aproximadas por otras con s dígitos binarios decimales.

3º) Almacenando sólo la información significativa de la mantisa

Sistemas de codificación binarios en coma flotante normalizada

Sistemas de codificación binarios en coma flotante normalizada

65Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Bit de signodel exponente

t bits para el valor absoluto del exponente

CONVENIO: 0 Signo +1 Signo -

Ejemplo: Con 7 bits se tienen las siguientes codificaciones de exponentes:

-18 = 1 42 = 00 1 0 0 1 0 1 0 1 0 1 0

-67 = No puede codificarse 93 = No puede codificarse

Codificación del exponente en (t+1) bitsCodificación del exponente en (t+1) bits

66Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Mayor exponente que puede codificarse:

M = 0 1 1 1 .. 1 1.. .. = ( 2t –1 )10

t bitsMenor exponente que puede codificarse:

m = 1 1 1 1 .. 1 1.. .. = -( 2t –1 )10

t bitsOBSERVACIÓN: En los sistemas reales estas cotas son “ligeramente”

distintas al evitarse la duplicidad del código asignado al exponente nulo y normalizarse los exponentes.

Codificación del exponente en (t+1) bits: cotas

Codificación del exponente en (t+1) bits: cotas

67Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Técnicas de aproximación de mantisas de la forma:1 2 s s 1d d ...d1 d. ....+±

por mantisas con s dígitos decimales:Truncado: 1 2 s s 1 1 2 sd d ...d d .... d d1. .1. ..d+± ≈ ±

Redondeo:1 2 s s 1

1 2 s s 1 1 2 ss 1

1. si 01. (

d d ...d dd d ...d d .... d

11.

si 0.0 0 .

d ...d)

d..1

+

++

+

± =⎧⎪± ≈ ±⎧ ⎫⎨⎨ ⎬+

=⎪⎩ ⎭⎩

“Suma binaria”NOTA: Algunos fabricantes de ordenadores incorporan también otras

técnicas

Aproximación de números reales en base 2 expresados en coma flotante normalizada

Aproximación de números reales en base 2 expresados en coma flotante normalizada

68Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Redondeo a mantisas con 6 dígitos binarios decimales:

z = 1.0110111010....

7º Dígito decimal

1. 0 1 1 0 1 1+ 0. 0 0 0 0 0 1

0

1

0

1

1

0

1

0

1

0

0

0

1. = z*

z = 1.1111111010..... 2e

7º Dígito decimal

1. 1 1 1 1 1 1+ 0. 0 0 0 0 0 1

0

1

0

1

0

1

0

1

0

1

0

1

0.

= z*

1

1

.2e

.2e

.2e

0000001. .2e+1Ajuste de exponentes:

Aproximación de números reales en base 2 expresados en coma flotante normalizada

Aproximación de números reales en base 2 expresados en coma flotante normalizada

69Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Los (s+1) bits disponibles para almacenar la mantisa se destinan a:• El primero para almacenar el signo (un 0 si es positivo yun 1 si es negativo).

• Los s bits siguientes para almacenar los s primeros dígitos binarios decimales de la mantisa.

El dígito entero de la mantisa no se almacena pues siemprees 1 (salvo para el número 0., que tiene una codificación especial).

Codificación de las mantisasCodificación de las mantisas

70Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

(-13457.258)10 = -11010010010001.01000...

13101001001000101000...1. 2≡ − i

Exponente: +1101 Mantisa: - 1.101001001000101000...

0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1

Sistema con t = 7 bits para el exponente y s = 13 bits para mantisa

(redondeo)

Codificación de las mantisas: ejemploCodificación de las mantisas: ejemplo

71Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

El conjunto de todos los números expresados en base 2 queexpresados en coma flotante tienen mantisas formadas pors dígitos decimales y exponentes acotados por entre losvalores enteros m y M se denomina conjunto de números máquina del sistema:

F((s+1), m, M, 2)

Bits dela mantisa

Menor exponentepermitido

Mayor exponentepermitido

Base de numeraciónutilizada

Inicial de Float

Los números máquina binariosLos números máquina binarios

72Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

F(3, -2, 2, 2) { 2 2 2 20, 1. 2 , 1. 2 , 1. 200 01 1 , 1. 2 , 0 11− − − −≡ ± ± ± ±i i i i1 1 1 11. 2 , 1. 2 , 1. 200 ,01 1 1 20 11. ,− − − −± ± ± ±i i i i

0 0 0 0 1. 2 , 1. 2 , 00 01 1. 2 , 1.10 11 2 , ± ± ± ±i i i i1 1 1 11. 2 , 1. 2 , 1. 2 , 1. 200 01 10 1 ,1± ± ± ±i i i i

}2 2 2 2 1. 2 , 1. 2 ,00 01 10 11. 2 , 1. 21± ± ± ±i i i i

{ 0, + 2-2 , +(2-2 + 2-4) , +(2-2 + 2-3) , +(2-2 + 2-3 + 2-4) ,

+ 2-1 , +(2-1 + 2-3) , +(2-1 + 2-2) , +(2-1 + 2-2 + 2-3) ,

+ 20 , +(20 + 2-2) , +(20 + 2-1) , +(20 + 2-1 + 2-2) ,

+ 21 , +(21 + 2-1) , +(21 + 20) , +(21 + 20 + 2-1) , + 22 , +(22 + 20) , +(22 + 21) , +(22 + 21 + 20) }

En base 10

EjemploEjemplo

73Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Sólo hay N = 41 números.

El mayor de ellos es C = 7.

El positivo menor no nulo es c =0.25.

No todos los números consecutivos distan lo mismo.

F(3, -2, 2, 2) ≡ { 0., +0.25 , +0.3125 , +0.375 ,

+0.4375, +0.5, + 0.625, + 0.75, + 0.875, +1.0, +1.25,

+1.5, +1.75, + 2.0, +2.5, +3.0, +3.5, + 4.0, +5.0, +6.0,

Ejemplo (cont.)Ejemplo (cont.)

+7.0 }

74Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Los números máquina de mayor valor absoluto son más distantes entre sí

Distribución de los números de F(s+1, m, M, 2)Distribución de los números de F(s+1, m, M, 2)

75Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

*) Número de números máquina de F(s+1, m, M, 2):(s 1)2 (M m )N 1 1+= − + +i

*) Mayor número máquina de F(s+1, m, M, 2):(s 1) M s(2 1 2C ) −+= − i

*) Menor número máquina positivo de F(s+1, m, M, 2):mc 2=

*) Siendo e el exponente de un número máquina positivode F(s+1,m,M,2), la distancia entre él y el siguienteen valor absoluto es: e sd 2 −=

Distribución del conjunto F(s+1, m, M, 2)Distribución del conjunto F(s+1, m, M, 2)

(Igual para negativos sustituyendo “siguiente” por “anterior”.)

76Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Sean:1

e2 s s 1d d ...d d ..z 1. 2.+= ± i (número que se aproxima)

1 2 sed d ...dz* 1. 2= ± i (número máquina de F(s+1, m, M, 2)

obtenido aproximando z por truncado)

Se verifica:e

zsz z * 2 −Δ = − ≤

sz

z z * 2Ez

−−= ≤ z 0∀ ≠

Propiedades de la aproximación de números reales por números máquina de F(s+1, m, M, 2)

mediante truncado

Propiedades de la aproximación de números reales por números máquina de F(s+1, m, M, 2)

mediante truncado

77Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Sean:1

e2 s s 1d d ...d d ..z 1. 2.+= ± i (número que se aproxima)

1 2 se'd' d' ...d'z* 1. 2= ± i (número máquina de F(s+1, m, M, 2)

obtenido aproximando z por redondeo)Se verifica:

1z

sez z * 2 − −= − ≤Δ

sz

1z z * 2z

E − −−= ≤ z 0∀ ≠

Propiedades de la aproximación de números reales por números máquina de F(s+1, m, M, 2)

mediante redondeo

Propiedades de la aproximación de números reales por números máquina de F(s+1, m, M, 2)

mediante redondeo

78Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

De las propiedades anteriores se tiene que:z 0 :∀ ≠

− −

⎧−= ≤ = ⎨

⎩1z

s

s

2 aproximando por truncadoz z *z 2 aproximando por redondeo

uE

UNIDAD DE REDONDEO DE F(s+1, m, M, 2)Propiedad.

z 0∀ ≠ sea z zz * z z* (1 ) z

z−

= ⇔ = +δ δ i

Se verifica que: δ ≤z u

La unidad de redondeo de F(s+1, m, M, 2)La unidad de redondeo de F(s+1, m, M, 2)

79Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

NO pueden aproximarse por un número máquina del sistemaF(F(s+1s+1, , mm, , MM, 2):, 2):

* Los números reales con valor absoluto superior o igual a:

OVERFLOW s s2

M

1

1

M

2 (truncando)(2 1) 2 (redondeando)

N+

+

− −

⎧= ⎨

−⎩ i

* Los números reales no nulos con valor absoluto inferior a:

UNDERFLO sW 2

m

ms 2

2 (truncando)(2 1) 2 (redondea )

nndo+ − −

⎧= ⎨

−⎩ i

Overflow y underflow en F(s+1, m, M, 2)Overflow y underflow en F(s+1, m, M, 2)

80Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

UNDERFLO OVERFLOWW z Nn ≤ <

OVERFLOWSi z N≥ ERROR DE OVERFLOW

UNDERFLOWSi z n< ERROR DE UNDERFLOW

ASIMILACIÓN A 0.

Sólo pueden aproximarse por números máquina no nulos del

sistema F(s+1, m, M, 2) aquellos números reales z para los

que se verifique:

Overflow y underflow en F(s+1, m, M, 2) (cont.)

Overflow y underflow en F(s+1, m, M, 2) (cont.)

81Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Exponente: 8 bits (uno para el signo)Mantisa: 24 bits (uno para el signo)• Mayor exponente:

+ (1·26 + 1·25 + 1·24 + 1·23 + 1·22 + 1·21 + 1·20) = 127

• Menor exponente: -127

• Número de números máquina:

224(127 – (-127) + 1) + 1 = 4278190081

• Mayor número máquina: (224-1)·2127-23 = 2128 - 2104≈ 3·1038

• Menor número máquina positivo: 2-127≈ 5·10-39

• Unidad de redondeo: Truncando u = 2-23 ≈ 1·10-7

Redondeando u = 2-24 ≈ 1·10-8

Ejemplo 1ºEjemplo 1º

82Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Exponente: 11 bits (uno para el signo)Mantisa: 53 bits (uno para el signo)• Mayor exponente:

+ (1·29 + 1·28 + ...... + 1·22 + 1·21 + 1·20) = 1023

• Menor exponente: -1023

• Número de números máquina:253(1023 – (-1023) + 1) + 1 = 18437736874454810625 ≈

18.5·1018

• Mayor número máquina: (253-1)·21023-52 = 21024 - 2971≈ 1·10308

• Menor número máquina positivo: 2-1023 ≈ 1·10-308

• Unidad de redondeo: Truncando u = 2-52 ≈ 2.1·10-16

Redondeando u = 2-53 ≈ 1.1·10-16

Ejemplo 2ºEjemplo 2º

83Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas