ndice
1.! Introduccin
2.! Errores absolutos y relativos
3.! Almacenamiento de nmeros en un ordenador
!
!
4.!
5.!
6.!
7.!
Nmeros enteros
Nmeros reales
Concepto de algoritmo
Clasificacin de los errores
Propagacin de los errores
Condicionamiento numrico
Errores
Definiciones
! Error absoluto y relativo
x valor exacto y x valor aproximado
! Error absoluto
Error relativo
! Cifras significativas
!
Nmeros
Representacin de un nmero en base n
(dp dp-1 d1d0.d-1 d-(q-1) d-q)n =
=dpnp + dp-1np-1 + + d1n + d0n0 +
d-1n-1 + + d-(q-1) n-(q-1) + d-qn-q
(124.5)10 = 1!102 + 2!101 + 4!100 + 5!10-1
(101.11)2 = 1!22 + 0!21 + 1!20 + 1!2-1+ 1!2-2
En un ordenador los nmeros se guardan en binario
d2
d1
d0
0+
signo
d-2
d-3
exponente
d-(M-1)
d-M
dE-1 dE-2
d2
d1
d0
|Nmax| =
2-1
2-2
1-2(1-M)
++
2E-1 -1
1
0
|Nmin| =
2E-2 + + 21 + 20
2-(M-1)
2-1
- 2E-2 + + 21 + 20
- 2E-1
=2
1
1
0
Almacenamiento en Matlab
En Matlab se usa el formato double que usa 64 bits
totales:
11 para el exponente (E=11)
53 para la mantisa (M=53)
Por lo tanto, los nmeros mximos y mnimos que se
pueden almacenar con Matlab son:
Underflow y overflow
Overflow ! error que se produce cuando se intenta
almacenar un nmero ms grande que el mximo
permitido por el tipo de nmero usado
Underflow ! error que se produce cuando se intenta
almacenar un nmero menor que el mnimo
permitido
Ejecutad el programa potencias2.m para comprobar el
overflow y underflow de Matlab.
Obtenemos los resultados esperados?
|Nmin| = 2-1024
Mejoras de Matlab:
! Overflow: no se guarda el 1 de la coma flotante 0.101
! Underflow: permite poner ceros en la mantisa 2-52!2-1022
0
1
0
-1022
Error relativo de
almacenamiento
En Matlab los nmeros de almacenan en base 2 con 53
bits para la mantisa (sin contar el signo) y 11 bits
para el exponente.
Cul es el error relativo que se comete al almacenar
un nmero mediante truncamiento?
Nmero: (. d-1 d-2 d-3 ... d-52 d-53 d-54 d-55)2 ! 2exp
d-1
d-2
d-3
d-51
d-52
d-53
1
0
exp.
Nmero: (. d-1 d-2 d-3 ... d-52 d-53 d-54 d-55 ... )2 ! 2exp
d-1
d-2
d-3
d-51
d-52
d-53
1
0
exp.
Error relativo:
|rx| =
! 2-53
|rx| =
<
=
=
=
! 2-53
(. 1 1 1 1 1 1 1 1 ... )2
(.100000...001111111)2
! 2-53
! 2-53
! 2-53
2
1
! 2-53 =
! 2-52 =
1+ 2-53 ! 2
1+ 2-54 ! 2
= 2.22 ! 10-16
Error relativo de
almacenamiento
De la misma forma, se obtiene que el error relativo
mximo que se comete cuando se almacena un
nmero utilizando la tcnica de aproximacin es:
|rx| " 1.11 ! 10-16
Mirar el fichero suma_1_eps.m para comprobar que en
Matlab:
1 + 2-53 = 1 + 1.11 ! 10-16 = 1
Propagacin de errores
Hemos visto que al almacenar un nmero en Matlab se
comete un error de almacenamiento del orden de
10-16.
Naturalmente, al efectuar operaciones con este nmero,
el resultado se ve afectado por estos errores tambin.
Adems, los resultados se vuelven a almacenar en el
ordenador por lo que de nuevo se cometen errores de
almacenamiento. Por lo tanto, cuando se opera con un
ordenador, se comenten errores de almacenamiento
que a su vez se van propagando (propagacin de
errores).
Algoritmo
Es importante tener en cuenta que dos algoritmos
matemticamente equivalentes no tienen porque serlo
en aritmtica finita.
Comprobad que dan los siguientes comandos:
>> 1e16 * ( (1 1) + 1e-16 )
ans = 1
ans = 0
Algoritmo
Se quieren calcular las sucesivas potencias del inverso
del nmero ureo utilizando diferentes algoritmos.
2
Y aplicando la propiedad distributiva al producto anterior
se puede escribir un tercer algoritmo para calcular las
potencias de "#
Propagacin de errores
Material adicional