Professional Documents
Culture Documents
Errores
REFERENCIAS:
- D. Goldberg, What every computer scientist should know about floating point arithmetic. ACM Computing
Surveys, 23(1), 1991.
- J. A. Infante, J. M. Rey, Métodos numéricos. Teoría, problemas y prácticas con MATLAB, Ed. Pirámide
(1999). 1
0 1 ?
(Mundo del “continuo”)
(Mundo “discreto”)
Objetivos: - Representar números reales en el ordenador.
- Hacer operaciones aritméticas con el ordenador
Cuestiones previas:
• Los números reales son infinitos.
• Capacidad almacenamiento del ordenador es finita (capaz de manejar una cantidad
finita de números y realizar un número finito de operaciones).
Como consecuencia:
• No podemos representar todos los números reales: consideramos un conjunto finito
de números, los llamaremos números máquina. Representación de números
máquina.
• Con el resto de los números reales: los aproximamos por el número máquina mas
próximo -> errores de redondeo.
• Dado una cantidad finita de números (números máquina) tenemos:
– Número máquina menor/mayor, cantidad de números máquina, distancia entre
dos números máquina consecutivos,… 2
– Almacenamiento en la memoria del ordenador. Operaciones.
1
Apuntes descargados de wuolah.com
Representación de números reales -> números máquina
Representación de la recta real
x es un número real
x es un número máquina
-vmax 0 x 1 vmax
Ejercicio: Se consideran dos representaciones de números máquina: una es más grande (tiene mas
cantidad de números) y otra es menor (menos cantidad de números máquina).
¿Cuál de las dos representacíones ocupa mas espacio en memoria?
¿Con qué representación los errores son mas pequeños?
¿Qué preferimos: representaciones que ocupen mucha/poca memoria; representaciones con errores
grandes/pequeños? 3
• Otra base b:
d1d0 .d 1d 2 d 3 d1 b1 d 0 b0 d 1b 1
d 2b 2
d 3b 3
d1d0 .d 1d 2 d 3 b
Observaciones:
Se almacenaría la información: d1 d0 . d 1 d 2 d 3 (para representar nº anterior).
0 di b son números enteros.
Múltiples representaciones del mismo número Representación normalizada.
2
BNext, tu cuenta sin banco.
Representación de números máquina: Capacidad, valores
máximos/mínimos, eps
• Rango de valores pequeños: valor del número positivo más pequeño: vmin
• Por construcción: los números máquinas no son equidistantes.
1. Cada representación tendrá una cierta cantidad de números máquina en el intervalo (0, 1).
2. Salto de números máquina: eps (spacing of floating point numbers): distancia entre dos
números máquina consecutivos. Ej.: eps(0), eps(1), eps(1e+10). ¿son iguales eps(0) y
eps(1)? ¿cual es el siguiente número al número 1?
0 1
x = número real
x x
x = número máquina aproxima a x
Error absoluto E x x
3
BNext, tu cuenta sin banco.
Representación de números máquina: Error absoluto y error relativo
Ej 1: x=342732890032.134, x 342732809000.000
x y x coinciden en 7 cifras decimales significativas, e.e., x tiene una precisión de 7 cifras dec. significativas.
x x 7
E _ rel 2.36 10 , log10 E _ rel log10 2.36 7 log10 10 0.37 7, 7 log10 E _ rel
x
Ej 2: x=0.0000013405, x 0.0000015040
x y x coinciden en 1 cifra decimal significativa, e.e., x tiene una precisión de 1 cifra dec. significativa.
1
E _ rel 1.22 10 , log10 E _ rel log10 1.22 1log10 10, 1 log10 E _ rel
Se verifica la relación:
4
3. Representación científica o en coma flotante
Los números máquina x vienen dados por la siguiente expresión
x= mbe
donde:
utilizamos un bit para el signo:
m es la mantisa,
b es la base (2 en un sistema binario, 10 en un sistema decimal),
e es el exponente,
tanto m como e se representan en base b.
La representación anterior se puede escribir como
p
s s
x 1 (d0 .d1d 2 d3 ....d p )b be 1 ( d j b j )be
j 0
se almacena:
... ...
signo mantisa exponente
10
5
BNext, tu cuenta sin banco.
Representación normalizada:
Múltiples formas de representación del mismo nº:
Ejemplo: b=10, p=6
0.10000 10 0 = 1.10000 10 1 = 0.00010 103 =... Representación no única
Ejemplo: b=2, p=4
1 2 3
(0.001) 2 (0.010) 2 x 2 (0.100) 2 x 2 (1.000) 2 x 2
11
Números no máquina:
Mantisa con más de p dígitos "Redondeo". Varias estrategias
Observación:
- eps(1) es el menor x tal que 1+x 1
- epsilon de máquina eps=eps(1)
6
BNext, tu cuenta sin banco.
Errores redondeo: Supongamos el número real x se aproxima por el nº máquina más próximo x
1 1 1 p e
E _ abs x x x x eps (1)b e b b
2 i d 2 2
x x E _ abs b pbe 1 p
E _ rel b
x x 2be 2
donde xi y xd son los nº máquina más próximos a x por la izquierda y por la derecha respect.
(x mb e b e , por ser m 1)
Observación:
1. Si la técnica de aproximación es por truncamiento:
E _ abs x x xi xd eps (1)b e b pbe
x x E _ abs E _ abs p
E _ rel b
x x be
2. La cota del error relativo sólo depende del nº bits de la mantisa.
13
7
BNext, tu cuenta sin banco.
4. Representación en coma flotante. Estándar IEEE 754
e 00000000 2
0, ....., e 11111111 2 28 1 255 e 0, 255
8
Estándar IEEE 754 simple precisión: rango de valores
Sistema binario (b=2). Palabras de 32 bits (4 bytes): 8 bits exponente + 24 bits mantisa
0 1
1038 10 38
0 10 38
1038
17
9
BNext, tu cuenta sin banco.
Estándar IEEE 754 simple precisión: Error relativo. Precisión. Eps
x xˆ xˆ1 xˆ2 m1 2e m2 2e m1 m2 2e 1 1
E _ rel 0.00.....1 2 eps (1)
x 2 xˆ 2 m1 2 e
2m1 2e 2 2
si estrategia redondeo al nº máquina más próximo
1 7 7
E _ rel 1.19 10 10
2
Luego:
nº cifras decimales significativas log10 E _ rel 7 7 cifras decimales significativas
de precisión
19
23 23 7
Restando: eps(1) x 1 1 2 1 2 1.19 10
23
eps(1) 2
Ejercicio:
1. Calcular el eps(2) y el eps(4).
2. ¿Cuántos números máquina hay entre 20 , 21 ? ¿a qué distancia están los números máquina
en el intervalo 20 , 21 ?. Idem para el intervalo 21 , 22 .
20
10
BNext, tu cuenta sin banco.
Estándar IEEE 754 simple precisión: Cota error relativo
Sea x número real que está entre dos números máquina consecutivos, x x ', x '' , con:
e e
x' m2 1.d1d 2 .....d 23 2
2
x '' 1.d1d 2 .....d 23 2
0.00.....1 2 2e x ' 2 232e
y llamamos x nº máquina más próximo a x.
Luego,
1 1 23 e
E_abs= x x x ' x '' 2 2 depende de e
2 2
1 23 e 1 23
x x 2 2 2
2 2 1 23 1 8 7
E_rel= e
2 eps (1) 5.96 10 10 (si redondeo nº máquina mas próximo)
x m2 m 2 2
valor constante con m 1, 2
38
Rango de valores vmin , vmax 10 ,1038 . Y sus opuestos 1038 , 10 38
23
Tamaño del salto en 1: eps (1) 2
eps (1) 2 ( n º bits mantisa )
Precisión: E_rel 2 24 10 7
2 2
(Error relativo es constante, 7 cifras significativas de precisión)
0 1
1038 10 38
0 10 38
1 1+2 23
1038
22
11
BNext, tu cuenta sin banco.
Estándar IEEE 754 simple precisión: Números normalizados/denormalizados
Sistema binario. Palabras de 32 bits: 8 bits exponente + 24 bits mantisa
¿0 es número máquina?
Objetivo de los números denormalizados: Obtener más números muy pequeños
23
11111110 127 23
Número normalizado mas grande: xmax 1.1.....1 2 2 2
(2 2 ) 2127
00000001 2 127 126
Número normalizado mas pequeño: xmin 1.0.....0 2 2 2
d 126 23 126
Número denormalizado mas grande: xmax 0.11....1 2 2 (1 2 ) 2
Número denormalizado mas pequeño: x0d 0.0....00 2
2 126
0
d 126 23 126 149
el siguiente: x min 0.0....01 2 2 2 2 2
Rango de valores: vmd in , vmax
d
10 45
,10 38
, vmin , vmax 10 38
,1038 24
12
25
d d 45 38 38
Rango de valores representados: vmin , vmax 10 ,10 , vmin , vmax 10 ,1038
0 1
45 38 23
Inf 0 10 10 1 1+2 1038 Inf
26
13
BNext, tu cuenta sin banco.
4.2. Estándar IEEE 754 doble precisión
Sistema binario. Palabras 8 bytes (64 bits): 11 bits exponente + 52 bits mantisa + 1 signo
Precisión:
52 16 15
eps(1)= 0.00.....01 2 2 2 10 10
eps (1) 53 15
La cota del error relativo es: E_rel 2 10 15 cifras significativas precisión
2 28
14
BNext, tu cuenta sin banco.
29
52
eps(1) 2
eps(1) 15
Un error relativo constante acotado por E_rel= 10 ,
2
una precisión de 15 cifras significativas.
0 1
323 307 52
Inf 0 10 10 1 1+2 10308 Inf
30
15
BNext, tu cuenta sin banco.
Resumen. Relaciones representación de números en
coma flotante
31
32
16
5. Operaciones aritméticas con números en coma
flotante. Propagación de errores
33
+, -, *, /
34
17
BNext, tu cuenta sin banco.
OBJETIVO: Analizar efecto de los errores redondeo en las operaciones aritméticas
IN :
Sean x=x(1+ x ), e y=y(1+ y ) los dos números máquina mas próximos a x e y,
x x y y
donde x
y son los errores relativos correspondientes
x y
y
x x
Número máquina x x, se puede escribir como x=x(1+ x ), con : x
x
x x eps (1) 7 16
x
=E_rel Cota= 10 (simple presición) 10 (doble precisión)
x 2
OUT : Queremos conocer los errores relativos de los resultados de efectuar las operaciones:
¿x+y x+y ? x+y = (x+y)(1+ x y ), e.e., calcular x y en función de: x , y , x, y
¿x-y x-y ? x-y = (x-y)(1+ x y )
¿xy xy ? xy = (xy)(1+ xy )
x x
¿x/y x/y ? = (1+ x/ y )
y y
Operación Operación Error 35
relativo
nºs máquina nºs reales
x x y y
1. Suma: x+y=(x+y)(1+ x y ) x(1+ x ) y (1+ y )=x+y+(x+y) x y x y
x y
x x y y x y Cota
Cota error relativo: x y
x y x y
x x y y
Resta: x-y=(x-y)(1+ x y ) x(1+ x ) y (1+ y )=x-y+(x-y) x y x y
x y
x x y y x y Cota
Cota error relativo: x y si 0 x, y ( x
, x
Cota)
x y x y
Obeservación:
i) Si x y, x y 0
ii) x y si x y. Cancelación dígitos significativos al calcular diferencia de números similares.
2. Producto: xy = x y x y
x y
3. Cociente: x/ y
1 y
36
18
BNext, tu cuenta sin banco.
Ejemplos
x ( y) x ¿ y 0?
x=1.d1....d 23 2ex 1.d1....d 23 2 ex
e
y=1.d1....d 23 2 y , e y ex 24 1.0....00..1d1..d 23 2ex
CANCELACIÓN
((1.00....0) 2 20 ) ((1.11....1) 2 2 1 ) fl (((1.00....0) 2 20 ) ((0.11....1) 2 20 ))
0
(0.00....0) 2 2
37
Ejemplos
x
1. log x log y con x y log x log y log log1 0.
y
2. Reemplazar x 2 y 2 por x y x y .
1 x2 1 1 x2 1 x2
3. 1 x2 1 con x 0 1 x2 1
1 x2 1 1 x2 1 1 x2 1
expresión sin dificultad numérica.
4. x2 y 2 con x, y muy grandes. Si x 0 x2 0 problema overflow.
2
x2 y2 x
Suponemos 0 x y x2 y2 y y 1
y2 y
38
19
BNext, tu cuenta sin banco.
Ejemplo numérico con Matlab (1)
La función seno hiperbólico (igualdad matemática):
ex e x
sinh( x) (1)
2
Objetivo:
ex e x
- Calcular sinh( x) (comando Matlab) y , para valores de x muy pequeños (x 0).
2
- Estimar el error relativo y una cota de la fórmula (1).
- Calcular el número de cifras de precisión para cada x.
39
40
20
Ejemplo numérico 1:
Gráfica del error relativo de sinh(x) y su cota , respecto de x
41
21
BNext, tu cuenta sin banco.
Ejemplo numérico con Matlab (2): Cálculo de la derivada mediante una
fórmula aproximada. Aplicación y Estudio del error
f (x h) f ( x)
Fórmula aproximada: f '( x) para h muy pequeños (h 0).
h
f (x h) f ( x)
Nota: Definición de derivada de una función f '( x ) lim .
h 0 h
OBJETIVO:
cos(1) (vía función Matlab)
sin(1 h) sin(1)
- Calcular (Fórmula aproximada)
h
- Estimar error relativo y una cota de la fórmula (2), para valores de h muy pequeños (h 0).
¿Cuántas cifras de precisión se obtienen para cada h?
¿Cómo de buena/precisa es la representación de números de Matlab?
43
Visualizar el error
f (x h) f ( x)
FÓRMULA APROXIMADA: f '( x) (1)
h
Sean
der_f_exacto=f '( x)
der_f_exacto der_f_aprox
f (x h) f ( x) E _ rel
der_f_aprox= der_f_exacto
h
Fuentes de error:
- Error relativo de truncamiento, debido a fórmula aproximada (1)
h f ''( x)
E _ rel _ trunc , (h pequeño)
2 f '( x)
- Error relativo de redondeo:
eps (1) f ( x)
E _ rel _ redondeo (h pequeño)
h f '( x)
44
22
BNext, tu cuenta sin banco.
f (x h) f ( x)
f '( x) (1)
h
- Error relativo de truncamiento:
f (x h) f ( x) h h2
f '( x) f ''( x) f '''( x) ...
h 2 3! h f ''( x)
E _ rel _ trunc ,
f '( x) f '( x) 2 f '( x )
2
si h pequeño h h.
h2
Nota: Desarrollo de Taylor f ( x h) f ( x) hf '( x) f ''( x) ....
2!
45
46
23
BNext, tu cuenta sin banco.
Ejemplo 2: Grafica del error relativo y número de cifras significativas
47
24