Programación y Métodos Numéricos Errores de

Anuncio
Universidad Politécnica de Madrid
Ingeniería de Minas
Programación
Programación yy Métodos
Métodos Numéricos
Numéricos
Errores
Errores de
de redondeo
redondeo en
en la
la representación
representación
de
de números
números reales:
reales:
CODIFICACIÓN
CODIFICACIÓN DE
DE NÚMEROS
NÚMEROS REALES
REALES
Carlos Conde Lázaro
Arturo Hidalgo López
Alfredo López Benito
Departamento de Matemática Aplicada y Métodos Informáticos
Febrero, 2007
63
Universidad Politécnica de Madrid
Ingeniería de Minas
Sistemas
Sistemas de
de codificación
codificación binarios
binarios en
en coma
coma
flotante
flotante normalizada
normalizada
Expresan los números en notación científica binaria pero:
1º) Asignando (t+1) bits para almacenar el exponente.
2º) Utilizando mantisas con (s+1) bits
3º) Almacenando sólo la información significativa
de la mantisa
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.
Departamento de Matemática Aplicada y Métodos Informáticos
64
Universidad Politécnica de Madrid
Ingeniería de Minas
Codificación
Codificación del
del exponente
exponente en
en (t+1)
(t+1) bits
bits
Bit de signo
del exponente
CONVENIO:
t bits para el valor absoluto del exponente
0 Æ Signo +
1 Æ Signo -
Ejemplo: Con 7 bits se tienen las siguientes codificaciones
de exponentes:
-18 = 1 0 1 0 0 1 0
42 = 0 1 0 1 0 1 0
-67 = No puede codificarse
93 = No puede codificarse
Departamento de Matemática Aplicada y Métodos Informáticos
65
Universidad Politécnica de Madrid
Ingeniería de Minas
Codificación
Codificación del
del exponente
exponente en
en (t+1)
(t+1) bits:
bits:
cotas
cotas
Mayor exponente que puede codificarse:
M = 0 1 1 1 .. .. .. 1 1 = ( 2t –1 )10
t bits
Menor exponente que puede codificarse:
m = 1 1 1 1 .. .. .. 1 1 = -( 2t –1 )10
t bits
OBSERVACIÓ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.
Departamento de Matemática Aplicada y Métodos Informáticos
66
Universidad Politécnica de Madrid
Ingeniería de Minas
Aproximación
Aproximación de
de números
números reales
reales en
en base
base 22
expresados
expresados en
en coma
coma flotante
flotante normalizada
normalizada
Técnicas de aproximación de mantisas de la forma:
±1.d1d 2 ...dsds+1 ....
por mantisas con s dígitos decimales:
Truncado: ±1.d1d 2 ...dsds+1 .... ≈ ±1.d1d 2 ...ds
Redondeo:
si ds+1 = 0
⎧ ±1.d1d 2 ...ds
⎪
±1.d1d 2 ...dsd s+1 .... ≈ ⎨ ⎧ ± (1.d1d 2 ...ds + ⎫
⎪ ⎨ +0.0 0 ...1 ) ⎬ si ds+1 = 1
⎭
⎩⎩
“Suma binaria”
NOTA: Algunos fabricantes de ordenadores incorporan también otras
técnicas
Departamento de Matemática Aplicada y Métodos Informáticos
67
Universidad Politécnica de Madrid
Ingeniería de Minas
Aproximación
Aproximación de
de números
números reales
reales en
en base
base 22
expresados
expresados en
en coma
coma flotante
flotante normalizada
normalizada
Redondeo a mantisas con 6 dígitos binarios decimales:
0 0 0 0 11
1. 0 1 1 0 1 1
+ 0. 0 0 0 0 0 1
z = 1.0110111010....
7º Dígito decimal
1. 0 1 1 1 0 0
.
z = 1.1111111010.... 2e
7º Dígito decimal
= z*
1 1 1 1 1 11
1. 1 1 1 1 1 1 .2e
+ 0. 0 0 0 0 0 1 .2e
Ajuste de exponentes:
1 0. 0 0 0 0 0 0 .2e
1. 0 0 0 0 0 0 .2e+1 = z*
Departamento de Matemática Aplicada y Métodos Informáticos
68
Universidad Politécnica de Madrid
Ingeniería de Minas
Codificación
Codificación de
de las
las mantisas
mantisas
Los (s+1) bits disponibles para almacenar la mantisa se
destinan a:
• El primero para almacenar el signo (un 0 si es positivo y
un 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 siempre
es 1 (salvo para el número 0., que tiene una codificación
especial).
Departamento de Matemática Aplicada y Métodos Informáticos
69
Universidad Politécnica de Madrid
Ingeniería de Minas
Codificación
Codificación de
de las
las mantisas:
mantisas: ejemplo
ejemplo
Sistema con t = 7 bits para el exponente y s = 13 bits
para mantisa
(-13457.258)10 = -11010010010001.01000...
≡ −1.101001001000101000...i213
Exponente: +1101 Mantisa: - 1.101001001000101000...
(redondeo)
0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1
Departamento de Matemática Aplicada y Métodos Informáticos
70
Universidad Politécnica de Madrid
Ingeniería de Minas
Los
Los números
números máquina
máquina binarios
binarios
El conjunto de todos los números expresados en base 2 que
expresados en coma flotante tienen mantisas formadas por
s dígitos decimales y exponentes acotados por entre los
valores enteros m y M se denomina conjunto de números
máquina del sistema:
Inicial de Float
F((s+1), m, M, 2)
Bits de
la mantisa
Base de numeración
utilizada
Menor exponente
permitido
Mayor exponente
permitido
Departamento de Matemática Aplicada y Métodos Informáticos
71
Universidad Politécnica de Madrid
{
Ejemplo
Ejemplo
Ingeniería de Minas
F(3, -2, 2, 2) ≡ 0, ± 1.00i2−2 , ± 1.01i2−2 , ± 1.10i2−2 , ± 1.11i2−2 ,
±1.00i2−1 , ± 1.01i2−1 , ± 1.10i2−1 , ± 1.11i2−1 ,
± 1.00i20 , ± 1.01i20 , ± 1.10i20 , ± 1.11i20 ,
±1.00i21 , ± 1.01i 21 , ± 1.10i 21 , ± 1.11i21 ,
± 1.00i22 , ± 1.01i22 , ± 1.10i22 , ± 1.11i22
≡
{ 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) ,
En base 10
+ 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) }
Departamento de Matemática Aplicada y Métodos Informáticos
72
Universidad Politécnica de Madrid
Ingeniería de Minas
Ejemplo
Ejemplo (cont.)
(cont.)
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,
+7.0
}
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.
Departamento de Matemática Aplicada y Métodos Informáticos
73
Universidad Politécnica de Madrid
Ingeniería de Minas
Distribución
Distribución de
de los
los números
números de
de F(s+1,
F(s+1, m,
m, M,
M, 2)
2)
Los números máquina de mayor valor absoluto
son más distantes entre sí
Departamento de Matemática Aplicada y Métodos Informáticos
74
Universidad Politécnica de Madrid
Ingeniería de Minas
Distribución
Distribución del
del conjunto
conjunto F(s+1,
F(s+1, m,
m, M,
M, 2)
2)
*) Número de números máquina de F(s+1, m, M, 2):
N = 2(s+1) i(M − m + 1) + 1
*) Mayor número máquina de F(s+1, m, M, 2):
C = (2(s+1) − 1)i2M −s
*) Menor número máquina positivo de F(s+1, m, M, 2):
c = 2m
*) Siendo e el exponente de un número máquina positivo
de F(s+1,m,M,2), la distancia entre él y el siguiente
e− s
en valor absoluto es: d = 2
(Igual para negativos sustituyendo “siguiente” por “anterior”.)
Departamento de Matemática Aplicada y Métodos Informáticos
75
Universidad Politécnica de Madrid
Ingeniería de Minas
Propiedades
Propiedades de
de la
la aproximación
aproximación de
de números
números
reales
reales por
por números
números máquina
máquina de
de F(s+1,
F(s+1, m,
m, M,
M, 2)
2)
mediante
mediante truncado
truncado
Sean:
z = ±1.d1d 2 ...dsds+1 ...i2e
z* = ±1.d1d 2 ...ds i2e
(número que se aproxima)
(número máquina de F(s+1, m, M, 2)
obtenido aproximando z por truncado)
Se verifica:
Δ z = z − z * ≤ 2e − s
z − z*
Ez =
≤ 2− s
z
∀z ≠ 0
Departamento de Matemática Aplicada y Métodos Informáticos
76
Universidad Politécnica de Madrid
Ingeniería de Minas
Propiedades
Propiedades de
de la
la aproximación
aproximación de
de números
números
reales
reales por
por números
números máquina
máquina de
de F(s+1,
F(s+1, m,
m, M,
M, 2)
2)
mediante
mediante redondeo
redondeo
Sean:
z = ±1.d1d 2 ...dsds+1 ...i2e
(número que se aproxima)
z* = ±1.d'1 d'2 ...d's i2e' (número máquina de F(s+1, m, M, 2)
obtenido aproximando z por redondeo)
Se verifica:
Δ z = z − z * ≤ 2e−s−1
Ez =
z − z*
≤ 2− s−1
z
∀z ≠ 0
Departamento de Matemática Aplicada y Métodos Informáticos
77
Universidad Politécnica de Madrid
Ingeniería de Minas
La
La unidad
unidad de
de redondeo
redondeo de
de F(s+1,
F(s+1, m,
m, M,
M, 2)
2)
De las propiedades anteriores se tiene que:
∀z ≠ 0 :
⎧ 2− s aproximando por truncado
z − z*
≤ u = ⎨ − s −1
Ez =
z
aproximando por redondeo
⎩2
UNIDAD DE REDONDEO DE F(s+1, m, M, 2)
Propiedad.
∀z ≠ 0 sea δ z =
z * −z
⇔ z* = (1 + δ z )iz
z
Se verifica que: δ z ≤ u
Departamento de Matemática Aplicada y Métodos Informáticos
78
Universidad Politécnica de Madrid
Ingeniería de Minas
Overflow
Overflow yy underflow
underflow en
en F(s+1,
F(s+1, m,
m, M,
M, 2)
2)
NO pueden aproximarse por un número máquina del sistema
F(s+1, m, M, 2):
* Los números reales con valor absoluto superior o igual a:
⎧
2 M +1
(truncando)
N OVERFLOW = ⎨ s+ 2
M − s −1
−
i
(2
1)
2
(redondeando)
⎩
* Los números reales no nulos con valor absoluto inferior a:
n UNDERFLOW
⎧
2m
= ⎨ s+ 2
m −s − 2
(2
1)
2
i
−
⎩
(truncando)
(redondeando )
Departamento de Matemática Aplicada y Métodos Informáticos
79
Universidad Politécnica de Madrid
Ingeniería de Minas
Overflow
Overflow yy underflow
underflow en
en F(s+1,
F(s+1, m,
m, M,
M, 2)
2)
(cont.)
(cont.)
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:
n UNDERFLOW ≤ z < N OVERFLOW
Si z ≥ N OVERFLOW
ERROR DE OVERFLOW
Si z < n UNDERFLOW
ERROR DE UNDERFLOW
ASIMILACIÓN A 0.
Departamento de Matemática Aplicada y Métodos Informáticos
80
Universidad Politécnica de Madrid
Ingeniería de Minas
Ejemplo
Ejemplo 1º
1º
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
Redondeando
u = 2-23 ≈ 1·10-7
u = 2-24 ≈ 1·10-8
Departamento de Matemática Aplicada y Métodos Informáticos
81
Universidad Politécnica de Madrid
Ingeniería de Minas
Ejemplo
Ejemplo 2º
2º
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
Redondeando
u = 2-52 ≈ 2.1·10-16
u = 2-53 ≈ 1.1·10-16
Departamento de Matemática Aplicada y Métodos Informáticos
82
Universidad Politécnica de Madrid
Ingeniería de Minas
Departamento de Matemática Aplicada y Métodos Informáticos
83
Descargar