Sunteți pe pagina 1din 9

Herramientas para la computación y visualización

Aritmética finita

1. Tipos de aritmética en MATLAB

MATLAB dispone de tres tipos de aritmética:

• Aritmética en punto flotante, la más rápida, de menor consumo de memoria,


pero la más imprecisa.

• Aritmética racional exacta.

• Aritmética de precisión variable.

Estas dos últimas aritméticas pertenecen al paquete de cálculo simbólico.

1.1 Punto flotante IEEE745

La representación normalizada de los números reales en doble precisión según el estándar


IEEE745 consta de códigos de 64 bits repartidos en:

1. 1 bit de signo s (en el código el bit 63)


2. 11 bits para el exponente E (en el código los bits del 52 al 62)
3. 52 bits para la mantisa m (en el código los bits del 0 al 51)

Dado un número real que cumpla realmin <= x <= realmax , se le asigna una

representación en punto flotante fl ( x ) según la fórmula:

( −1) * 1 + b51 + b50 + . . . + b0 52  * 2 E −1023


1 1 1
fl ( x ) =
s

 2 4 2 

Por tanto la mantisa verifica 1 <= m < 2 y el exponente −1022 <= e <= 1023 (en exceso a

1023).
En el entorno MATLAB realmin es el número más pequeño representable, mientras que
realmax es el mayor. Véase la siguiente figura:

Si se llega a dar que 0 < x < realmin se produce un error de underflow, mientras que si

realmax < x se produciría un overflow. El cero tiene asignado el código 0 . . . 0,


NaN=fff80…0, inf=7ff0…0 y –inf=fff0…0.

El siguiente número representable después del 1 es 1 + ε , donde a ε se le llama precisión de

=
la máquina. En MATLAB e eps (1) ≈ 10−16 , que se traduce en una precisión de 15 cifras
decimales para la aritmética IEEE745 en punto flotante de 64 bits.

1.2 Error absoluto y relativo

Para un exponente dado el número de diferentes mantisas es 252 , por lo que la cantidad de
números reales que se pueden representar entre dos potencias consecutivas de 2 es
constante. Por tanto, el error absoluto

Eabs ( x )= x − fl ( x)

crece con x . Sin embargo, y aquí radica la excelencia de la aritmética en punto flotante, el

error relativo se mantiene constante en el intervalo realmin <= x <= realmax

x − fl ( x)
Erel ( x )
= ≈e
x
1.3 Aritmética simbólica exacta

sym(‘1/2+1/3’)

ans

5/6

1.4 Aritmética de precisión variable

vpa(‘1/2+1/3’,20)

ans

0.83333333333333333333

1.5 Ejemplo de operaciones en los tres tipos de aritmética

Punto flotante:

format long

(1/2+1/3)-5/6

ans =

-1.110223024625157e-016

Racional exacta

sym(‘1/2+1/3’)-5/6

ans

Precisión variable

vpa(1/2,25)+vpa(1/3,25)-vpa(5/6,25)

ans

3.7896e-14
2. Problemas y algoritmos

Definiciones:

Problema: a partir de unos datos A se pretende calcular P ( A ) .

Algoritmos: diferentes métodos para resolver un problema (calcular P ( A ) )

Dado un problema P pueden existir varios algoritmos que lo resuelva. Es por tanto de suma
importancia distinguir entre problemas y algoritmos. La naturaleza de un problema, llamada
condicionamiento, no se puede cambiar. Sin embargo, se puede cambiar de algoritmo para
resolver un problema en busca de robustez, estabilidad, cantidad de cálculos requeridos,
memoria, tiempo de ejecución, etc.

Condicionamiento. Se dice que un problema está mal condicionado si

A → P ( A)
A + ∂A → P ( A ) + ∂P ( A )
∂P ( A )
"grande"
∂A

donde ... es una medida (norma) de un objeto numérico.

Ejemplo de problema mal condicionado:

4.1x1 + 2.8 x2 =
4.1
9.7 x1 + 6.6 x2 =
9.7
Solución=
x1 1,=
x2 0

Problema ligeramente perturbado:

4.1x1 + 2.8 x2 =
4.11
9.7 x1 + 6.6 x2 =
9.7
=
Solución =
x1 0.34, x2 0.97

Perturbaciones relativas:

Sistema ( 4.1,9.7 ) − ( 4.11,9.7


= )2 0.01; Solución (1, 0 ) − ( 0.34, 0.97
= ) 2 1.1732
∂P ( A ) 2
=117.3
∂A 2

Estabilidad

Dadas las transformaciones

A → P ( A ) , aritmética de precisión infinita


A → P ( A ) + ∂ P ( A ) , aritmética de precisión finita
A + ∂A → P ( A ) + ∂ P ( A ) , aritmética de precisión infinita

Se dice que un algoritmo tiene estabilidad directa si

∂P ( A ) , "pequeño"

En cambio se dice que tiene estabilidad inversa si

∂A , "pequeño"

Se prefiere el estudio de la estabilidad inversa porque en general es más simple. En términos


cualitativos se dice que un algoritmo tiene estabilidad inversa cuando resuelve un problema de
forma exacta pero a partir de unos datos ligeramente modificados.
Ejercicios de aritmética finita

1. Con la ayuda del comando

format hex

verifique el valor de las cantidades 1.5 y -3.75

2. Con la ayuda del comando

format hex

calcule el valor decimal de las constantes MATLAB

realmin

eps

realmax

3 Propagación de errores

Una de las principales causas de inestabilidad de los algoritmos es la propagación de los


errores contenidos en los datos iniciales de un problema. Uno de los ejemplos más clásicos es
el siguiente.

Considere el problema del cálculo de las siguientes integrales:


1
=En ∫=
x n e x −1dx , n 1, 2,3,...
0

Mediante integración por partes se calcula:

En =
1 − nEn −1 , n = e −1
2,3, 4,...; E1 =
A partir de estas fórmulas se pueden derivar dos algoritmos:

a. Algoritmo 1
En =
1 − nEn −1 , n =
2,3, 4,..., 20; E1 =
0.3679

b. Algoritmo 2
1 − En
=
En −1 = =
, n 19,18,...,1; E20 0
n

Programe ambos algoritmos y analice los errores.

Nota: se puede probar que

e=
n En + n !δ e1 (algoritmo1)

n →∞
Dado que En  →0,

en ≅ n !δ e1 (algoritmo1)

para valores de n grandes, siendo δ e1 el error que se comete al aproximar el valor inicial de

e1 (propagación de errores).

3 Cancelación catastrófica.

Otra causa frecuente de inestabilidad de algoritmos aparece cuando el resultado final de los
cálculos es más pequeño que las cantidades intermedias, de tal forma que los posibles errores
de redondeo/truncación contribuyen de forma significativa al resultado final. Un ejemplo
clásico de la llamada cancelación catastrófica es el siguiente.

El desarrollo de Taylor de la función exponencial es


1 n
ex = ∑ x
0 n!

A partir de esta expresión podemos obtener los dos siguientes algoritmos para calcular e −5.5 :

a. Algoritmo 1
25
1
e −5.5
= ∑ n ! ( −5.5)
n

0
b. Algoritmo 2
25
1
s=∑ 5.5n
0 n!

1
e −5.5 =
s

Programe ambos algoritmos utilizando una aritmética decimal con 5 dígitos significativos y
analice los errores.

Nota: para convertir los sumandos de las expresiones anteriores a la aritmética pedida emplee
la función y=Ndigitos(x,5), donde x es un número en doble precisión MATLAB (15 cifras
decimales) e y es un número con 5 cifras decimales. Antes de operar las cantidades que
aparecen en los algoritmos debe convertirlas a una precisión de 5 dígitos.
Ejercicio adicionales

1. Perturbación de los coeficientes de un polinomio

El polinomio de Wilkinson

p ( x) =( x − 1)( x − 2 ) . . . ( x − 19 )( x − 20 )

tiene las raíces n=1:20.

Con el comando p=poly(1:20) se obtienen los coeficientes de p ( x ) y con el comando

r=roots(p) se calculan sus raíces.

Suponga que perturbamos el coeficiente p ( 2 ) = −210 con la cantidad 2−23 , equivalente al

bit menos significativo de la mantisa en simple precisión, con el comando p(2)=p(2)+2^(-


23).

Calcule la perturbación relativa que resulta según la definición de condicionamiento de un


problema. ¿Está mal condicionado el cálculo de las raíces de este polinomio?

Nota: emplee el comando norm(. . .) para calcular el tamaño de las perturbaciones.

2. Perturbación de un sistema de ecuaciones Ax = b

Dadas las ecuaciones

4.1 x1 + 2.8 x2 =
4.1
9.7 x1 + 6.6 x2 =
9.7

Se perturba el dato b del problema con la cantidad

0.01
∂b = 
 0 

Calcule la perturbación relativa que resulta según la definición de condicionamiento de un


problema.

• ¿Está mal condicionado el cálculo de la solución de estas ecuaciones?


• ¿Cuánto vale el determinante de la matriz del sistema?

S-ar putea să vă placă și