Вы находитесь на странице: 1из 44

U

C
M
Aritmtica del Computador
Manuel Prieto Matas
mpmatias@dacya.ucm.es
2
U
C
M
Contenido
1 - Fuentes de Error:
1. Representacin de las nmeros enteros
2. Representacin de los nmeros reales
(Representacin en Punto Flotante)
3. Estndar IEEE 754
4. Errores de Redondeo
5. Anulacin Catastrfica
6. Desbordamiento
2 - Estabilidad y Condicionamiento:
Clculos estables e inestables
Sucesiones decrecientes
Condicionamiento y Nmero de condicin
3
U
C
M
Fuentes de Error
1. Datos de entrada (experimental o clculos previos)
2. Representacin de los nmeros : Redondeo y Desbordamiento
3. Clculos: Acumulacin de errores de redondeo, anulacin catastrfica
y Desbordamiento
4. Algoritmo : Discretizacin / Truncamiento
4
U
C
M
Representacin de los Enteros (I)
Enteros sin signo: Binario puro
Cambio de base decimal-> binario : Algoritmo de divisiones sucesivas
decimal = ...
bit = 1;
while (decimal >2)
a[bit]= rem(decimal,2);
decimal = fix(decimal/2);
bit= bit+1;
end
disp(a);
Rango Representable con n bits: [0 , 2
n
-1 ]
Puede producirse desbordamiento
Ejemplo: n= 4 bits
Qu valor es 15 + 1
5
U
C
M
Representacin de los Enteros (II)
Enteros con signo
Magnitud y signo = binario puro + bit de signo
2 representaciones para el 0
Rango de valores representables con n bits [2
n-1
- 1, 2
n-1
1]
Complemento a 2
Coincide con Magnitud y signo para los nmeros positivos
Para los nmeros negativos se utiliza la representacin en binario del C2
C2 (x) = C1 (x) + 1
Una sola representacin para el 0
Rango de representacin [2
n-1
, 2
n-1
1]
Exceso Z
movemos el cero: Un valor en exceso Z representa a su valor binario
menos la cantidad Z
6
U
C
M
Representacin en Punto Flotante (I)
+ 0.101110 2
-1100
mantisa
exponente
base
signo
Los computadores representan los nmeros reales utilizando una notacin semejante a
la conocida notacin cientfica normalizada:
+ 0.602 10
-22
mantisa
exponente
base
signo
Notacin cientfica
Normalizada
Representacin en punto
flotante normalizada
En todo nmero en punto se flotante distinguen cuatro componentes:
Signo: indica el signo del nmero (0= positivo, 1=negativo)
Mantisa: contiene la magnitud del nmero (en binario puro)
Exponente: contiene el valor de la potencia de la base (notacin exceso)
Base: queda implcita y es comn a todos los nmeros (habitual base 2)
Otras alternativas menos extendidas para la representaciones de los nmeros reales:
Notacin punto fijo (primeros computadores)
Ciertas representaciones involucran el almacenamiento de los logaritmo de un nmero (las
multiplicaciones se pueden implementar mediante sumas)
Notacin racional : se utilizan dos nmeros enteros (a,b) para representar la fraccin a/b
7
U
C
M
Un mismo nmero puede tener varias representaciones (0.110 2
5
= 110 2
2
= 0.0110 2
6
)
Los nmero suelen estar normalizados normalizados. Un nmero est normalizado en base dos si tiene
la forma:
Representacin en Punto Flotante (II)
Tienen siempre un 1 a la izquierda: Se
puede almacenar de forma implcita
0.1 xxxxxxxx 2
xxx
1. xxxxxxxx 2
xxx
Ejemplo: Ejemplo: Formato de punto flotante de 32 bits
sig. exponente mantisa
8 bits 23 bits 1 bit
32 bits
El rango de valores representable por cada uno de los campos es:
Exponente (8 bits en exceso 128) :
-128 ... +127
Mantisa (23 bits normalizados 1.M) :
los valores binarios representables oscilan entre 1.00...0 y 1.11...1 (1 y 2-2
-23
)
8
U
C
M
Representacin en Punto Flotante (III)
La cantidad de nmeros representables es 2
32
. El espacio de representacin no es El espacio de representacin no es
uniforme : uniforme : Mayor densidad cerca del 0 !!
0 n 2n 4n -n
Precisin: Precisin: Depende del nmero de bits de la mantisa
Con 23 bits es imposible distinguir entre 2 nmeros que se diferencien en 2
-23
10
7
Precisin 23 bits, Precisin 7 dgitos decimales, Epsilon (eps) del computador : 2
-23
nmeros positivos
expresables
nmeros negativos
expresables
overflow
positivo
overflow
negativo
underflow
positivo
underflow
negativo
0 1.02
-128
-1.02
-128
(2.0-2
-23
)2
127
-(2.0-2
-23
)2
127
Overflow y Underflow :
9
U
C
M
IEEE 754 (I)
Hasta la dcada de los 90 cada computador utilizaba su propio formato en punto
flotante (numero de bits para exponente y mantinsa, como se realiza el redondeo,
acciones tomadas en condiciones excepcionales) :
En algunas mquinas (Crays, IBM System 370) era necesario utilizar ciertos trucos
para obtener resultados correctos.
Ejemplo : En algunos computadores, algunos nmeros prximos a cero slo se consideraban
distintos de cero en comparaciones y sumas (se trataban como ceros en multiplicaciones y
divisiones). Consecuencia: Para poder utilizar de forma segura una variable como denominador
deba multiplicarse por 1.0 antes de comparar con cero!!
Era imposible escribir programas portables que produjesen los mismos resultados
en mquinas diferentes (Slo el pentgono, AT&T... Podan permitrselo)
John Palmer (Intel) promueve la creacin de un estndar para punto flotante (1976)
antes de comenzar el diseo del coprocesador matemtico del i8086/8 y del i432.
Primeras reuniones comenzaron en 1977
El primer borrador fue elaborado por William Kahan (Intel), Jerome Coonen (Berkeley)
y Harold Stone (Berkeley): documento K-C-S. Inspirado en el trabajo de Kahan en el
IBM 7094 (1968)
Proceso de estandarizacin bastante lento. El estndar no fue introducido hasta 1985
El i8087 (coprocesador) fue la primera implementacin comercial importante (1981)
El i486 fue el primer Procesador que implementaba el estndar (1989)
10
U
C
M
IEEE 754 (II)
Signo explcito
Representacin del exponente en exceso
Mantisa normalizada con un 1 implcito (1.M)
Codificaciones con significado especial: Codificaciones con significado especial:
Cero (e=0, m=0): nmero no normalizado que representa al cero
Infinito : representan cualquier valor de la regin de overflow
El estndar especifica aritmtica en el infinito. Ejemplos:
1/ = 0, atan()= /2 , acos (-1) =
sig. exponente mantisa
Precisin simple (32 bits): 8 de exponente, 23 de mantisa
Precisin simple extendida (43 bits): 11 de exponente, 31 de mantisa
Precisin doble (64 bits): 11 de exponente, 52 de mantisa
Precisin doble extendida ( 80 bits): 15 de exponente, 63 de mantisa
Precisin cudruple (128 bits): 15 de exponente,112 de mantisa
11
U
C
M
IEEE 754 (III)
Codificaciones con significado especial: Codificaciones con significado especial:
NaN (Not-a-Number) : se obtienen como resultado de operaciones invlidas.
El estndar especifica que cuando el argumento de una operacin es un NaN, el
resultado tambin es NaN. Ejemplo:
Nmero desnormalizado (e=0, m>0): nmero sin normalizar cuyo bit implcito se
supone que es 0. Permiten representar nmeros en las regiones de underflow
(desbordamiento a cero gradual).
Parte ms controvertida del estndar.
Ejemplo:
x = 1.234 10
Emin
x/10 = 0.123 10
Emin
x/100 = 0.012 10
Emin
x/1000 = 0.001 10
Emin
x/10000 = 0
Ventaja: Si x y x-y 0 (Con redondeo a cero, esto no es siempre cierto)
Inconveniente: ms lento que el desbordamiento a cero. Muchos programas lo
inhabilitan con frecuencia.
12
U
C
M
t0
t inf
NaN
IEEE 754 (IV)
Precisin simple (32 bits): Exponente Exceso 127
Precisin doble (64 bits): Exponente Exceso 1023
-127 (combinacin binaria 0)
-127 (combinacin binaria 0)
[-126, 127] (combinacin binaria [1, 254])
128 (combinacin binaria 255)
128 (combinacin binaria 255)
Exponente Mantisa Representa
127 ) ... (
2 1 23
2 1 8
2 ) ... . 1 ( ) 1 (


e e sm
m m
126
2 1 23
2 ) ... . 0 ( ) 1 (

m m
sm
0
0
___
0

-1023
-1023
[-1022, 1023]
1024
1024
Exponente Mantisa Representa
t0
t inf
NaN
0
0
___
0

1022
2 1 52
2 ) ... . 0 ( ) 1 (

m m
sm
1023 ) ... (
2 1 52
2 1 11
2 ) ... . 1 ( ) 1 (


e e sm
m m
13
U
C
M
IEEE 754. Ejemplos
Ejemplo 1: Cul es el valor decimal de: 1 01111100 11000000000000000000000?
El bit de signo es 1 : nmero negativo
El exponente contiene 01111100 = 124
La mantisa es 0.11000 = 0.75
El valor es : (- 1) x (1 + 0.75) x (2^(124-127)) = -1.75 x (2 ^(-3)) = - 0.21875
Ejemplo 2: Cul es la representacin en simple precisin de : 347.625 ?
1- Convertir a binario: 347.625 = 101011011.101
2- Normalizar el nmero (mover el punto decimal hasta que haya un solo 1 a la izquierda)
101011011.101 =1.01011011101 x (2 ^(8))
3- mantisa: 01011011101
4- exponente: 8 en exceso 127 = 8 + 127 = 135 = 10000111
5- El nmero es positivo: bit de signo 0
Resultado : 0 10000111 01011011101000000000000
Ejemplo 3: Ejemplo utilidad precisin extendida: clculo de distancias (x
2
+y
2
)
-1/2
si x > 2
Emax/2
no se puede calcular la distancia
x = 2 ^((1023/2)+1)
y = 2
d = sqrt((x^2)+(y^2))
MATLAB 5.3 L
14
U
C
M
IEEE 754 (IV)
Redondeo:
Cuando se opera sobre dos nmeros en punto flotante, el resultado es habitualmente un
nmero que no se puede representar exactamente como otro nmero en punto flotante.
Redondeo hacia el nmero ms prximo
Ejemplo: sistema de punto flotante que utiliza base 10 y dos dgitos significativos
2.1 x 0.6 = 1.26 necesita redondearse a dos dgitos: 1.3
2.1 x 0.5 = 1.05 necesita redondearse a dos dgitos: 1.0 1.1 ? estndar : 1.0
El IEEE 754 redondea los casos intermedios hacia el nmero cuyo dgito de orden
inferior es par
El estndar incluye 3 modos de redondeo adicionales:
Redondeo hacia cero
Redondeo hacia +
Redondeo hacia -
Excepciones (No es slo un estndar Hardware, es tambin un estndar Software! ):
Operacin invlida: t, 0, 00, , x mod 0, x cuando x< 0, x=
Inexacto: el resultado debe ser redondeado
Overflow y underflow
Divisin por cero
15
U
C
M
IEEE 754 (V)
Ejercicio: Comprobar usando MATLAB si el computador que estamos utilizando sigue el
estndar IEEE 754 para representar los nmeros reales.
El sistema MATLAB trabaja con nmeros en doble precisin. Por ello:
El mayor exponente es 1023, el computador no es capaz de representar el nmero
2
1024
: el resultado de 2
1023
x 2 debe ser igual a infinito:
La precisin dada por la mantisa es de 52 bits: el computador no distingue nmeros
que se diferencien en 2
-53
: sumando 2
-53
a 1 el resultado debe ser igual a 1:
2^(-53)+1
2^(-53)+1
ans =
1
ans =
1
k=1
while ((1.0 + 2^(-k)) > 1.0)
k = k + 1;
end
disp(k-1)
k=1
while ((1.0 + 2^(-k)) > 1.0)
k = k + 1;
end
disp(k-1)
(2^1023), (2^1023)*2
(2^1023), (2^1023)*2
ans =
8.9885e+307
ans =
Inf
ans =
8.9885e+307
ans =
Inf
16
U
C
M
IEEE 754 (VI)
Cul es el nmero ms pequeo que se puede representar y no es igual a 0? Cerca del
cero se usa el formato desnormalizado: el nmero ms pequeo es 2
-52
x 2
-1022
= 2
-1074
,
ya que 2
-53
x 2
-1022
es lo mismo que cero:
Se utiliza los 11 bits de mantisa extras del formato doble extendido (80 bits) ?
Matlab 5.3 : L
bits extra desactivado
Matlab 4.2:
bits extra activado
Los bits extra se desechan
despus de evaluar ciertas
subexpresiones
1
er
redondeo: z se redondea a 1 + e/2 (63 bits)
2

redondeo: z se redondea a 1
(2^(-52))*(2^(-1022)), (2^(-53))*(2^(-1022))
(2^(-52))*(2^(-1022)), (2^(-53))*(2^(-1022))
ans =
4.940656458412465e-324
ans =
0
ans =
4.940656458412465e-324
ans =
0
e = eps , z = 1 + (1 + e)*e/2 , d = z - 1
e = eps , z = 1 + (1 + e)*e/2 , d = z - 1
ans =
2.220446049250313e-016
ans =
2.220446049250313e-016
z excede a 1 + e/2 antes del redondeo
e = eps , z = 1 + (1 + e)*e/2 , d= z - 1
e = eps , z = 1 + (1 + e)*e/2 , d= z - 1
ans =
0
ans =
0
17
U
C
M
TRUNCAMIENTO: fl(x)=x
T
=(1.a
1
a
2
a
23
)*2
exp
Se descartan el resto de bits
EXCESO: fl(x)=x
E
=((1.a
1
a
2
a
23
)+2
-23
)*2
exp
El ltimo bit se incrementa en uno
x
T
REDONDEO: fl(x)= Se usa el ms cercano
x
E
Error de Redondeo Unitario (I)
Representacin en punto flotante de x-> fl(x)=(1.a
1
a
2
a
23
)2
exp (suponemos 23 bits de mantisa)
2
-23
Error de redondeo unitario: Depende del n de bits de la mantisa
psilon (eps) o precisin del computador
x= (1.a
1
a
2
a
23
........)2
exp
= q2
exp
1 q 2
Error relativo=|(x-x
T
)/x| |xx
T
|/|x| = 2
exp-24
/(q2
exp
) = 2
-24
/q 2
-23
Error absoluto=|x-x
T
| 1/2|x
E
x
T
| = (1/2) 2
23
2
exp
= 2
exp - 24
x
T
x
E
18
U
C
M
Error de Redondeo Unitario (II)
Formato n Bits eps=2
-n
Axioma de la Representacin en punto Flotante
fl(x) = x
redondeado
= x(1+); | | eps
Matlab 5.3:
eps=2
-52
=2.22044 e 016
Ejemplo: Error al representar 2/3 en formato simple IEEE754
Calcular el error de truncado relativo
Calcular el error de exceso relativo
Cual es la representacin final
19
U
C
M
Otros Errores
Errores en la Realizacin de Operaciones
La acumulacin de error de redondeo
Debidos a:
Anulacin de dgitos significativos
(ANULACIN CATASTRFICA)
Errores por Desbordamiento
No son debidos a la precisin (bits de mantisa)
Solo se puede representar un rango limitado de valores
Dependen del n de bits asignados al exponente
Solucin: Utilizar cdigos especiales para que el programa tenga
en cuenta que se ha producido desbordamiento
20
U
C
M
Acumulacin de Errores de Redondeo (I)
Ejemplo : Suma en punto flotante (99.99 + 0.161 = 100.151). Suponemos que:
La mantisa puede ser de 4 dgitos decimales
El exponente puede tener dos dgitos
Extraer signos, exponentes y magnitudes.
Tratar operandos especiales (por ejemplo, alguno de ellos a cero)
Desplazar la mantisa del nmero ms pequeo a la derecha |e
1
-e
2
| bits
Fijar el exponente del resultado al mximo de los exponentes
+ +
9.99910
1
1.61010
-1
9.99910
1
0.016110
1
10.015 x 10
1
1.0015 10
2
1. Alineamiento
3
.

n
o
r
m
a
l
i
z
a
c
i

n
1.00210
2
4. redondeo
2. Operacin
Si la operacin es suma y los signos son
iguales, o si la operacin es resta y los signos
son diferentes, sumar las mantisas. En otro
caso restarlas
Detectar Overflow de la mantisa
Redondear el resultado y renormalizar la mantisa
si es necesario (IEE754 ultimo par si hay duda)
Corregir el exponente en funcin de los
desplazamientos realizados sobre la mantisa.
Detectar overflow o underflow del exponente
Error de Redondeo Relativo : 0.0005/1.002 0.05 %
5. Re-normalizacin: A veces es necesario volver a normalizar (9.9999 10.000 ...)
21
U
C
M
x e y nmeros mquina (es decir, son representables de forma exacta)
operacin aritmtica bsica (+, -, , )
Axioma fundamental de la aritmtica en punto flotante:
Flotante (x y) = (x y) (1+) | | eps
Supongamos un computador decimal de 5 dgitos (Epsilon del computador = 10
5
) en el
que se utiliza formato extendido para clculos intermedios y dos nmeros maquina x e y:
x = 3.1426 10
2
y = 9.2577 10
4
OPERACIN RESULTADO NORMALIZADO REDONDEO ERROR RELATIVO
Multiplicacin 2.909324802 10
7
2.9093 10
7
8.5 10
-6
Suma 9.289126 10
4
9.2891 10
4
2.3 10
-6
Resta - 9.2262740 10
4
- 9.2263 10
4
2.8 10
-6
Divisin 3.394579647 10
-3
3.3946 10
-3
6.0 10
-6
Epsilon del computador (Salvo posibles discrepancias ) : Cota Superior
del error de redondeo Relativo en cualquier aritmtica bsica
Acumulacin de Errores de Redondeo (II)
22
U
C
M
Acumulacin de Errores de Redondeo (III)
A pesar de que el error de redondeo al realizar una operacin aritmtica bsica pueda
ser pequeo, al encadenar operaciones dichos errores pueden magnificarse
(acumularse) considerablemente.
Ejemplo: x, y, z nmeros mquina
Flotante (x (y + z)) = (x Flotante (y + z)) (1+
1
) |
1
| eps
= (x (y + z)) (1+
1
+
2
+
1

2
) |
2
| eps
(x (y + z)) (1+2) | | eps
El error de redondeo relativo se multiplica por 2
Cmo se acumulan los errores al encadenar varias operaciones?
23
U
C
M
Teorema 1
Sean x
0
, x
1
, ..., x
n
nmeros mquina positivos. El error de redondeo relativo al calcular la
suma de dichos nmeros de la manera usual es a lo sumo (1+eps)
n
- 1.
Esta cantidad es aproximadamente igual a neps (Teorema del binomio)
Ejemplo:
x = [2.718281828 -3.141592654 1.414213562 0.5772156649 0.3010299957];
y = [1486.2497 878366.9879 -22.37492 4773714.647 0.000185049];
Calcular el producto escalar
a) en orden ascendente
b) en orden descendente
c) en orden mayor a menor (sumas parciales: + de mayor a menor, - de menor a mayor)
d) en orden menor a mayor (sumas parciales: + de menor a mayor, - de mayor a mayor)

n
i
i i
y x
1
Teorema 2
Sean x e y dos vectores de nmeros mquina de dimensin n. El error de redondeo
relativo al calcular el producto escalar de dichos vectores est acotado por neps. Es
decir:
Acumulacin de Errores de Redondeo (IV)
24
U
C
M
funcin suma ( sum(x.*y)) 1.02518813682967e-010
suma ascendente 1.02518813682967e-010
suma descendente -1.56433088704944e-010
suma parcial negativos: menor -> mayor -2.75950291961806e+006
suma parcial negativos: mayor -> menor -2.75950291961806e+006
suma parcial positivos: menor -> mayor 2.75950291961806e+006
suma parcial positivos: mayor -> menor 2.75950291961806e+006
suma menor -> mayor 0
suma mayor -> menor 0
Matricial ( x*y ) 0
Matlab 5.3
En el mejor de los casos el error de redondeo relativo es prximo al 90%
En esta situacin el Teorema 2 no ha tenido validez
Resultado correcto con 7 decimales: 1.006571e-9
Acumulacin de Errores de Redondeo (V)
25
U
C
M
x = [2.718281828 -3.141592654 1.414213562 0.5772156649 0.3010299957];
y = [1486.2497 878366.9879 -22.37492 4773714.647 0.000185049];
Funcin suma ( sum(x.*y)) 5.681801009907059e-010
Suma ascendente 5.681801009907059e-010
Suma descendente 3.096829459536820e-010
Suma parcial negativos: menor -> mayor -2.759502919618059e+006
Suma parcial negativos: mayor -> menor -2.759502919618059e+006
Suma parcial positivos: menor -> mayor 2.759502919618060e+006
Suma parcial positivos: mayor -> menor 2.759502919618060e+006
Suma menor -> mayor 4.656612873077392e-010
Suma mayor -> menor 4.656612873077392e-010
Matricial ( x*y ) 2.953316904618516e-010
Matlab 4.2
En el mejor de los casos el error de redondeo relativo es menor que con
Matlab 5.3 pero en cualquier caso muy significativo (prximo al 40%)
Qu ocurre si se introduce un pequeo cambio en x?
Acumulacin de Errores de Redondeo (VI)
26
U
C
M
Acumulacin de Errores de Redondeo (VII)
Ejemplo 1: Suma de cantidades grandes a nmeros pequeos
(1.5 10
38
) + (1.0 10
0
) = 1.5 10
38
Hay SITUACIONES EXTREMAS en las que no se puede evitar considerables errores
de redondeo: ERRORES DEBIDO A LA PERDIDA DE DIGITOS SIGNIFICATIVOS
Alineamiento : es necesario desplazar el punto decimal 38 posiciones a la izquierda
Con 16 dgitos decimales de mantisa ese desplazamiento
supone convertir al segundo sumando en 0
No hay Propiedad Conmutativa !!!!!
x = 1.5 10
38
y =

1.5 10
38
x + (y + 1) 0
(x + y) + 1 1
(x + y) + 1 x + (y + 1)
27
U
C
M
Acumulacin de Errores de Redondeo (VIII)
Ejemplo 2 : Sustraccin de cantidades casi iguales (100.1 - 99.35 = 0.75).
La mantisa puede ser de 4 dgitos decimales
El exponente puede tener dos dgitos
-
1.00110
2
9.93510
1
1.00110
2
0.99410
2
0.007 x 10
2
7.000 10
-1
1. Alineamiento
3
.

n
o
r
m
a
l
i
z
a
c
i

n
4 y 5 no son
necesarios
2. Operacin
Error de Redondeo Relativo : 6.7 %
Problema: En el Alineamiento se pierde 1 dgito significativo
Teorema 1:
En un sistema de representacin en punto flotante con base y p dgitos de mantisa en el
que las sustracciones se realizan utilizado p dgitos, el error de redondeo relativo puede
llegar a ser 1 1
Teorema 1:
En un sistema de representacin en punto flotante con base y p dgitos de mantisa en el
que las sustracciones se realizan utilizado p dgitos, el error de redondeo relativo puede
llegar a ser 1 1
= 10
x = 1.00 ... 0 10
0
y = 9.99 ... 9 10
-1
x - y = 10
-p
fl(x- y) = 10
-p+1
Error Redondeo= |10
-p
- 10
-p-1
|= 10
-p
(10 - 1)
Error Relativo = 10 - 1
28
U
C
M
Acumulacin de Errores de Redondeo (IX)
Dgitos de Proteccin (guard digits) :
Para minimizar este problema, el estndar IEEE 754 especifica que los
clculos intermedios deben realizarse utilizando 2 dgitos de proteccin.
2. Operacin
+ +
1.001010
2
9.935010
1
1.001010
2
0.993510
2
0.0075x 10
2
7.5000 10
-1
1. Alineamiento
3
.

n
o
r
m
a
l
i
z
a
c
i

n
4 y 5 no son
necesarios
Resultado Correcto
Serie 360 de IBM (1968)
Teorema 2:
En un sistema de representacin en punto flotante con base y p dgitos de mantisa en el
que las sustracciones se realizan utilizado p+1 dgitos (1 dgito de guarda), el error de
redondeo relativo es menor que 2eps
Teorema 2:
En un sistema de representacin en punto flotante con base y p dgitos de mantisa en el
que las sustracciones se realizan utilizado p+1 dgitos (1 dgito de guarda), el error de
redondeo relativo es menor que 2eps
Ejemplo 2 revisado
29
U
C
M
Anulacin Catastrfica (I)
Cancelacin / Anulacin : 2 Tipos
Anulacin Benigna: los operandos se conocen de forma exacta (Teorema 2)
Anulacin Catastrfica: los operandos estn sujetos a errores de redondeo:
La sustraccin puede ocasionar que se cancelen los dgitos ms significativos,
que no estn afectados por el redondeo (son exactos), dejando
fundamentalmente en el resultado dgitos que estn contaminados por el
redondeo
Cancelacin / Anulacin : 2 Tipos
Anulacin Benigna: los operandos se conocen de forma exacta (Teorema 2)
Anulacin Catastrfica: los operandos estn sujetos a errores de redondeo:
La sustraccin puede ocasionar que se cancelen los dgitos ms significativos,
que no estn afectados por el redondeo (son exactos), dejando
fundamentalmente en el resultado dgitos que estn contaminados por el
redondeo
Ejemplo : b
2
- 4ac
b = 3.34
a = 1.22
c = 2.28
Resultado exacto : 0.0292
b
2
= 11.1556 11.16
4ac = 11.1264 11.13
Resultado con 1 dgito de guarda : 0.03
Error Relativo 2.7 %
En este ejemplo la resta no introduce ningn error, pero pone
de manifiesto el error cometido en los clculos previos !
30
U
C
M
Anulacin Catastrfica (II)
Ejemplo 1
1 1
2
+
x
y
( )
( )
( ) 1 1 1 1
1 1
1 1
2
2
2
2
2
+ +

,
_

+ +
+ +
+
x
x
x
x
x
y
Implica una cancelacin por sustraccin y prdida de
dgitos significativos para valores pequeos de x
Cmo evitarlo?
Solucin: utilizar una forma alternativa de asignacin
Multiplicando y Dividiendo por el Conjugado
Regla Prctica: Se debe evitar situaciones en las que se restan cantidades casi iguales
31
U
C
M
Anulacin Catastrfica (III)
Ejemplo 2: x
2
- y
2
x = 3.340
y = 1.220
x
2
- y
2
= 9.6672
x
2
= 11.1556 que se redondea a 11.16 (guard digits).
y
2
= 1.4884 que se redondea a 1.488.
x
2
- y
2
= 9.672 (error 0.0048)
El error de redondeo en x
2
e y
2
se propaga a la resta
La multiplicacin de dos nmeros con 4 dgitos puede contener 8 dgitos
significativos (que deben ser redondeados)
En este caso, la anulacin catastrfica se puede transformar en anulacin benigna:
x
2
- y
2
=(x+y)*(x-y)
x+ y = 4.56
x- y = 2.12
x
2
- y
2
= 9.6672 que se redondea a 9.667 (error = 0.0002)
32
U
C
M
Anulacin Catastrfica (IV)
Ejemplo 3
( ) x sin x y
Implica una cancelacin para valores pequeos de x
Cmo evitarlo? Desarrollo en serie de Taylor para sin(x)
L
L
+ +

,
_

+ +

! ! !
! ! !
) (
7 5 3
7 5 3
7 5 3
7 5 3
x x x
x x x
x x
x sin x y

'

1
1
]
1

,
_


72
1
42
1
20
1
6
2 2 2 3
x x x x
y
Si x est cercano a cero, se puede utilizar una serie truncada
Si se necesitase un rango amplio de valores para x, lo ms conveniente es utilizar
ambas expresiones (el error cometido al utilizar la serie truncada crece x), cada
uno con su propio rango
33
U
C
M
Acumulacin de Errores de Redondeo. Ejemplo (I)
Para las mediciones de tiempo, el sistema utiliza un reloj interno con una precisin de
dcimas de segundo. El tiempo transcurrido desde el boot se almacenaba en un registro
como un valor entero.
Guerra del Golfo, 25 Febrero 1991. Una batera de
antimisiles Patriot en Dharan (Arabia Saudita), no
consigui interceptar un misil Scud iraqu, que
impact contra un barracn de la armada americana,
muriendo 28 soldados
La prediccin de la puerta de alcance (range gate)
se calcula en funcin de:
Velocidad del Scud (dato conocido : 1676
metros por segundo)
Tiempo transcurrido desde que el Scud fue
detectado por el radar por ltima vez
34
U
C
M
Acumulacin de Errores de Redondeo. Ejemplo (II)
Cul es la representacin en simple precisin de : 0.10 ?
1- Convertir a binario: 0.10 = 0.0001100110011001100110011001100 ...
2- Normalizar el nmero : 1.100110011001100110011001100 x 2
-4
3- Truncar el nmero: 23 bits de mantisa!!! 1.10011001100110011001100 x 2
-4
0.10 no se puede escribir como una suma finita de potencias de 2 !!!
0.10 se representa en precisin simple por el nmero 0.09999999403953552
El error cometido es : 5.960464483090178 x 10
-09
Aunque el reloj interno daba dcimas de segundo, para hacer los clculos, el nmero
entero con las dcimas de segundo transcurridas se converta a punto flotante,
multiplicndose el valor por 0.1 para obtener el tiempo en segundos.
Qu pasa con el 0.1?
35
U
C
M
Acumulacin de Errores de Redondeo. Ejemplo (III)
Batera Antimisiles Patriot: El tiempo en segundo se almacena en un registro de 24 bits,
El error de redondeo cometido al representar 0.1 es de 5.9 x 10
-9
.
00011001100110011001100
La batera llevaba unas 100 horas en funcionamiento antes de producirse el fallo. El error
cometido al representar 0.1 SE HABIA ACUMULADO
5.9 x 10
-9
x (100x60x60x10) = 0.0212 segundos
Fuente: General Accounting Office, GAO/IMTEC-92-26 Patriot Missile Defense:
Software Problem Led to System Failure at Dhahran, Saudi Arabia
En ese intervalo, un misil Scud recorre 35.60 m. Este error solo se tena en cuenta en
algunas de las partes del software (LOS ERRORES NO SE CANCELABAN!!!!)
36
U
C
M
Desbordamiento (I)
Cuidado con las Conversiones Cuidado con las Conversiones
La explosin fue debida a un fallo software (Sistema de Referencia Inercial):
Un numero en punto flotante en doble precisin relacionado con la velocidad horizontal
del cohete con respecto a la plataforma se converta a un entero (con signo) de 16 bits.
El nmero era superior a +32768 (el mayor entero con signo representable con 16 bits) y
la conversin fallo.
Guayana Francesa, 4 Junio 1996.
Un Cohete Ariane V de la
Agencia Espacial Europea estalla
a los 40 segundos del despegue.
Era el primer lanzamiento del
Ariane V, despus de 10 aos de
desarrollo (7 billones de $). El
cohete y su carga estaban
valorados en 800 millones de $.
37
U
C
M
Desbordamiento (II)
Ejemplo: Clculo de la norma-2
[ ]

n
i
n
i
x x x x x S
1
2 1
2 2
, , , L
function s=norma2(x)
s= 0;
n=size(x,1)+size(x,2)-1
for i=1:n
s=s+(x(i) ^2);
end
s=sqrt(s);
Problema: El algoritmo sufre desbordamiento
incluso para n=1 si x(1) es mayor que la raz
cuadrada del mayor nmero representable
x=2^(1024/2)
x =
1.340780792994260e+154
norma2(x)
ans =
Inf
norm(x,2)
ans =
1.340780792994260e+154
Funcin norm de Matlab
Para n=1, a partir de que valor de x hay problemas de underflow?
38
U
C
M
Desbordamiento (III)
BLAS (Basic Linear Algebra Subroutines) :
Coleccin estndar de funciones usuales del
algebra matricial soportada por la gran mayoria de
fabricantes y optimizadas para explotar
eficientemente el hardware.
Se distinguen 3 niveles:
BLAS 1: operaciones simples
(scalar-vector, producto escalar ...)
BLAS 2: matriz-vector
BLAS 3: matriz-matriz
www.netlib.org/blas
www.netlib.org/cgi-bin/netlibget.pl/blas/snrm2.f
function s=norma2(x)
s= 0;
n=size(x,1)+size(x,2)-1;
if n==1
s=abs(x);
else
scale = 0.0;
ssq = 1.0;
for i=1:n
absxi=abs(x(i));
if (scale < absxi)
ssq = 1 + ssq*((scale/absxi)^2);
scale = absxi;
else
ssq = ssq + ((absxi/scale)^2);
end
end
s=scale*sqrt(ssq);
end
39
U
C
M
Desbordamiento (IV)
x= [(2^(-52/2))*(2^(-1022/2))*(2^-1) (2^(-52/2))*(2^(-1022/2))*(2^-1)]
x =
1.111379374742539e-162 1.111379374742539e-162
norm(x)
ans =
1.571727784702629e-162
norma2(x)
ans =
1.571727784702629e-162
x=[2^(1024/2) 2^(1024/2)]
x =
1.340780792994260e+154 1.340780792994260e+154
norma2(x)
ans =
1.896150381621836e+154
norm(x)
ans =
1.896150381621836e+154
40
U
C
M
Algoritmo Estable (backward stability) :
Si alg(x) representa la versin discreta de un algoritmo ALG(x), en el que se incluye el
efecto del error de redondeo, se dice que alg(x) es estable si para todo los datos de
entrada x existe un pequeo x tal que alg(x)=ALG(x+ x)
Clculos Estables e Inestables (I)
Proceso/Algoritmo Numrico Inestable (Informal) :
Los pequeos errores que se producen en alguna de sus etapas se agrandan en etapas
posteriores y degradan seriamente la exactitud del resultado final, a pesar de que en
aritmtica exacta el algoritmo sea correcto.
EJEMPLO 1: sucesin de nmeros reales

'

+ + n n n
x x x
x
x
3
4
3
13
3
1
1
1 2
1
0
1
3
1
3
1

,
_

n
n
n
x x ' '
Por induccin, se puede
demostrar que es equivalente
Vamos a suponer que x'
n
son los valores exactos de la sucesin y con ellos vamos a
estimar el error de redondeo de x
n
.
backward error
41
U
C
M
Clculos Estables e Inestables (II)
%Definicion de vectores e inicializacion en instantes iniciales
x = [1:20]';
x_prima = [1:20]';
error_absoluto = [1:20]';
error_relativo = [1:20]';
x(1) = 1.0;
x(2) = 1.0/3.0;
x_prima(1) = 1.0;
x_prima(2) = 1.0/3.0;
error_absoluto(1) = 0.0;
error_absoluto(2) = 0.0;
error_relativo(1) = 0.0;
error_relativo(2) = 0.0;
%Calculo de nuevos valores y errores
for i = 3:20
x(i) = (13.0/3.0)*x(i-1) - (4.0/3.0)*x(i-2);
x_prima(i) = x_prima(i-1)*(1.0/3.0);
error_absoluto(i) = abs(x(i) - x_prima(i));
error_relativo(i) = error_absoluto(i)/x_prima(i);
end
%Visualizion de resultado
disp([x, x_prima, error_absoluto, error_relativo])
42
U
C
M
1.0000e+000 1.0000e+000 0 0
3.3333e-001 3.3333e-001 0 0
1.1111e-001 1.1111e-001 1.6653e-016 1.4988e-015
3.7037e-002 3.7037e-002 7.7716e-016 2.0983e-014
1.2346e-002 1.2346e-002 3.1641e-015 2.5629e-013
4.1152e-003 4.1152e-003 1.2675e-014 3.0800e-012
1.3717e-003 1.3717e-003 5.0707e-014 3.6966e-011
4.5725e-004 4.5725e-004 2.0283e-013 4.4359e-010
1.5242e-004 1.5242e-004 8.1133e-013 5.3231e-009
5.0805e-005 5.0805e-005 3.2453e-012 6.3878e-008
1.6935e-005 1.6935e-005 1.2981e-011 7.6653e-007
5.6450e-006 5.6450e-006 5.1925e-011 9.1984e-006
1.8815e-006 1.8817e-006 2.0770e-010 1.1038e-004
6.2639e-007 6.2723e-007 8.3080e-010 1.3246e-003
2.0575e-007 2.0908e-007 3.3232e-009 1.5895e-002
5.6399e-008 6.9692e-008 1.3293e-008 1.9074e-001
-2.9941e-008 2.3231e-008 5.3171e-008 2.2889e+000
-2.0494e-007 7.7435e-009 2.1269e-007 2.7466e+001
-8.4816e-007 2.5812e-009 8.5074e-007 3.2959e+002
-2.9941e-008 2.3231e-008 5.3171e-008 2.2889e+000
-2.0494e-007 7.7435e-009 2.1269e-007 2.7466e+001
-8.4816e-007 2.5812e-009 8.5074e-007 3.2959e+002
-3.4021e-006 8.6039e-010 3.4030e-006 3.9551e+003
1.0000e+000 1.0000e+000 0 0
3.3333e-001 3.3333e-001 0 0
1.1111e-001 1.1111e-001 1.6653e-016 1.4988e-015
3.7037e-002 3.7037e-002 7.7716e-016 2.0983e-014
1.2346e-002 1.2346e-002 3.1641e-015 2.5629e-013
4.1152e-003 4.1152e-003 1.2675e-014 3.0800e-012
1.3717e-003 1.3717e-003 5.0707e-014 3.6966e-011
4.5725e-004 4.5725e-004 2.0283e-013 4.4359e-010
1.5242e-004 1.5242e-004 8.1133e-013 5.3231e-009
5.0805e-005 5.0805e-005 3.2453e-012 6.3878e-008
1.6935e-005 1.6935e-005 1.2981e-011 7.6653e-007
5.6450e-006 5.6450e-006 5.1925e-011 9.1984e-006
1.8815e-006 1.8817e-006 2.0770e-010 1.1038e-004
6.2639e-007 6.2723e-007 8.3080e-010 1.3246e-003
2.0575e-007 2.0908e-007 3.3232e-009 1.5895e-002
5.6399e-008 6.9692e-008 1.3293e-008 1.9074e-001
-2.9941e-008 2.3231e-008 5.3171e-008 2.2889e+000
-2.0494e-007 7.7435e-009 2.1269e-007 2.7466e+001
-8.4816e-007 2.5812e-009 8.5074e-007 3.2959e+002
-2.9941e-008 2.3231e-008 5.3171e-008 2.2889e+000
-2.0494e-007 7.7435e-009 2.1269e-007 2.7466e+001
-8.4816e-007 2.5812e-009 8.5074e-007 3.2959e+002
-3.4021e-006 8.6039e-010 3.4030e-006 3.9551e+003
Clculos Estables e Inestables (III)
n
n n
x
x x '
n n
x x '
n
x'
n
x
Error absoluto : se multiplica
por 13/3 en cada iteracin
(13/3)
17
10
-16
10
-6
x
n
es una sucesin montona
decreciente
El error Relativo crece
considerablemente
Si, en cambio, la solucin
creciera, el error relativo
sera menor y la solucin
tolerable
Error
Absoluto
Error Relativo Valor
Inestable
Valor
Estable
43
U
C
M
Clculos Estables e Inestables (IV)
EJEMPLO 2: Integracin
( ) 0
1
0

n dx
e x
y
x n
n
( )
1

n n
y n e y
1
0
e y
y(1)=exp(1)-1
for i = 2:20
y(i) = exp(1)-((i-1)*y(i-1));
end
y(1)=exp(1)-1
for i = 2:20
y(i) = exp(1)-((i-1)*y(i-1));
end
0 2 4 6 8 10 12 14 16 18 20
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Integracin por Partes
n
y
La sucesin y decrece montonamente
hacia cero
Cuando se calcula y
3
, un error de
unidades en y
2
se multiplica por 3. Este
error se multiplica por 4 al calcular y
4
. El
error resultante, 12 se multiplica por 5
al calcular y
5
...
50
U
C
M
Condicionamiento y Nmero de Condicin
Condicin y Condicionamiento (Informal): Indican la Sensibilidad de la Solucin de un
problema respecto de los pequeos cambios (Perturbaciones) en los Datos de Entrada
Problema mal Condicionado (ill-conditioned):
Pequeos cambios en los datos de entrada pueden dar lugar a Grandes
cambios en los resultados
Problema bien Condicionado (well-conditioned):
Pequeos cambios en los datos de entrada dar lugar a Pequeos cambios en
los resultados
Cunto es Grande y Pequeo? : Depende de la aplicacin
En ciertos problemas se puede definir un Nmero de Condicin (K):
Nmero de condicin absoluto
( ) ( )
x
x f x x f
lim
x

sup
0
( ) ( ) ( )
x x
x f x f x x f
lim
x

sup
0
Relacin entre la variacin
relativa en el resultado y la
variacin relativa en los datos
de entrada.
Si el nmero es grande significa que
una pequea variacin en la entrada
origina una gran variacin en la salida:
el problema esta mal condicionado
Nmero de condicin relativo

Вам также может понравиться