Академический Документы
Профессиональный Документы
Культура Документы
Introduccin a la computacin
cientfica y sistema de
nmeros de punto flotante
Universidad Jurez Autnoma de Tabasco
Justino Alavez Ramrez
Febrero de 2015
ndice
1. Software de apoyo
2. Modelos matemticos
3. Fuentes de aproximacin
13
17
20
23
31
33
37
10.Redondeo
46
2/75
55
12.Sumas
61
Referencias
75
3/75
Software de apoyo
Se recomienda trabajar principalmente con
FORTRAN
MATLAB
Fortran (o ms bien FORTRAN hasta principios de los aos 90 del siglo pasado) es un lenguaje
de programacin de alto nivel para propsito general, desarrollado en los aos 50 del siglo pasado
y que se utiliza activamente desde entonces. Acrnimo de Formula Translation System.
Lo desarroll originalmente John W. Backus de la compaa IBM entre los aos 1953 y 1957
para el equipo IBM 704, y ha pasado por varias versiones, entre las que destacan FORTRAN
II, FORTRAN IV, FORTRAN 77, Fortran 90/95 para programacin de arreglos, modular
y orientada a objetos, Fortran 2003 para programacin genrica, Fortran 2008 y Fortran
2010.
Fortran se utiliza principalmente en aplicaciones cientficas, de ingeniera y en el anlisis numrico. Domin la programacin en estas reas desde el principio y ha estado en uso continuo
por ms de medio siglo en reas de cmputo intensivo tales como la prediccin numrica del
tiempo, anlisis de elementos finitos, dinmica de fluidos computacional, fsica computacional
4/75
El compilador GFortran
GFortran es el nombre del proyecto GNU Fortran, que desarrolla un compilador libre para
Fortran 95/2003/2008.
Puede ejecutar y compilar programas correctamente en varias plataformas.
Se puede obtener en la pgina web del proyecto GNU:
http://gcc.gnu.org/wiki/GFortranBinaries
Descargar la versin que necesita para (Windows, MAC OS, Linux).
Como el compilador GFortran no ofrece un entorno grfico de programacin, es necesario
utilizar otro programa para la captura de sus programas y guardar el archivo resultante con
extensin *.f o *.for, donde en lugar de * va el nombre de su archivo.
En estas notas, se har referencia al sistema operativo Windows 7 o posterior y el editor
libre jEdit que se puede obtener en: http://www.jedit.org.
5/75
Modelos matemticos
La modelacin matemtica es el proceso de reformular problemas cientficos (de ingeniera,
fsica, biologa, ecologa, medicina, entre otros) en problemas matemticos (modelos matemticos). Los modelos matemticos generalmente se expresan por medio de ecuaciones de algn tipo, por ejemplo: polinomiales, sistemas lineales de ecuaciones algebraicas, EDOs, EDPs,
EDAs, entre muchos otros. Por ejemplo, en ecologa el sistema de EDOsa :
x = x xy
y = xy y
(1)
con > 0, > 0, > 0 y > 0, estudia la dinmica de dos poblaciones que interactan
entre s a travs de predador-presa. Donde x(t) denota la poblacin de presas en el tiempo t,
y y(t) denota la poblacin de predadores en el tiempo t.
Es importantes notar que es posible probar que el problema de Cauchy determinado por el
sistema (1) y las condiciones iniciales
x(t0 ) = x0
a
y(t0 ) = y0 ,
Formuladas por primera vez en 1925 y son conocidas como las ecuaciones de Lotka-Volterra.
7/75
tiene solucin, la solucin es nica y depende continuamente de los datos del problema formados
por t0 , x0 , y0 , , , y . Sin embargo, dado que el sistema de EDOs (1) es no lineal, no es
posible hallar expresiones analticas para la solucin x(t) y y(t).
Los problemas matemticos se pueden distinguir por:
A). No tener solucin.
B). Existe solucin pero no es nica.
C). Existe solucin y es nica.
Sin embargo, aunque un problema matemtico tiene solucin nica, la solucin puede no depender continuamente de los datos del problema. Para describir este hecho, sea P un problema
matemtico que tiene solucin para cada conjunto admisible de datos.
Si se denota por
X = {x Rn : x es un conjunto de datos admisibles del problema P } ,
y por
Y = {y Rm : y es soluci
on del problema P } .
8/75
11/75
Problemas
cientficos
Modelacin
matemtica
Problemas
matemticos
Problemas
bien planteados
Discretizacin
Problemas
computacionales
Mtodos
numricos
Interpretacin
y
validacin
Visualizacin
grfica
Software
numrico
Software
numrico
Soluciones
numricas
Fuentes de aproximacin
Se distinguen al menos cinco fuentes de aproximacin que pueden generar errores que afectan
los resultados de un problema cientfico.
1. De modelacin. Durante el proceso de modelacin es posible que se omitan o se simplifican algunas consideraciones importantes del problema bajo estudio (por ejemplo, friccin,
viscosidad, resistencia del aire, entre otros).
En el caso del modelo predador-presa (1), se obtuvo bajo el supuesto de que las presas
disponen de una cantidad ilimitada de alimentos, y que interactan con los predadores en
un hbitat cerrado.
2. De mediciones empricas. Ocurren cuando hay necesidad de obtener datos en un laboratorio o en el campo experimental, pues todos los instrumentos de medicin hasta ahora
inventados son de precisin finita (errores sistemticos).
La exactitud de los datos puede estar fuertemente limitado por el tamao de la muestra,
o las lecturas pueden estar sujetos a ruidos aleatorios (errores accidentales).
13/75
Por ejemplo, cuando hay necesidad de medir la temperatura durante una determinada hora
del da durante un mes, o cuando hay necesidad de obtener el censo de poblacin de un
pas.
3. De clculos previos. Ocurren cuando los datos de entrada del problema fueron resultados
de clculos aritmticos previos cuyos resultados fueron nicamente aproximados.
Estos tres tipos de fuentes de aproximacin ocurren entre el problema cientfico y su planteamiento al problema matemtico, por lo que en general, los errores que generan quedan fuera de
control del analista numrico. Las otras dos fuentes de aproximacin ocurren entre el problema
matemtico y la solucin del problema computacional. Los errores que se generan en estas dos
ltimas fuentes pueden ser controlados por el analista numrico.
4. De discretizacin (aproximacin o truncamiento). Ocurren cuando el problema matemtico es transformado en un problema computacional, pues algunas caractersticas del modelo
matemtico pueden ser omitidos o simplificados. Por ejemplo:
P
PN
Cuando una suma infinita n=1 an es reemplazado por la suma finita n=1 an .
Rb
PN
O cuando una a f (x)dx es reemplazado por una suma finita de la forma n=1 n f (xn ).
14/75
16/75
x
bx
,
x
si
x 6= 0 .
Cuando x y x
b son vectores o matrices, el error absoluto tiene sentido para ellos, pero no tiene
sentido su error relativo, por lo que se define la magnitud del error relativo como
kb
x xk
,
kxk
si x 6= 0 ,
donde k k es algn tipo de norma. Por el momento, se limitar con x en una dimensin.
17/75
|b
x x|
100,
|x|
si x 6= 0 ,
b se aproxima a x.
es el porcentaje de error con que x
Generalmente, se dice que x
b se ha calculado con un E % de error.
B). Cuando
|b
x x| p
= 10 ,
|x|
x 6= 0 ,
significa que x
b coincide con x hasta p dgitos significativos aproximadamente.
Dado que x 6= 0 se puede representar de manera nica (salvo excepciones) como
x = (0.d1 d2 dt ) 10e ,
donde di son dgitos enteros, 1 d1 9 , 0 di 9 , i 2 y e entero.
Los dgitos d1 , d2 , . . . , se llaman dgitos significativos de x.
18/75
|x|
100
= 0.437 103 % de error ,
|x|
20/75
Dado que hay errores en los datos verdaderos x, se trabajar con datos aproximados
x
b, y dado que tambin hay necesidad de discretizar el problema f como un problema
computacional fb, entonces en lugar del problema (2), se estara resolviendo un problema
aproximado (vecino):
fb : R R
x
b 7 fb(b
x) .
Dado que tambin tiene sentido en resolver el problema f con los datos aproximados x
b,
tiene lugar la figura 3.
f
- f (x)
x
1 f (b
x)
f
fb
- fb(b
x)
x
b
Figura 3: Diagrama del problema f y fb.
El error total en el proceso se puede descomponer como:
fb(b
x) f (x) = [fb(b
x) f (b
x)] + [f (b
x) f (x)] ,
donde fb(b
x) f (b
x) se llama el error computacional, y f (b
x) f (x) se le llama propagacin
del error de los datos, y es independiente de fb.
21/75
Ejemplo 5.1. Estimar el error total, el error computacional y la propagacin del error de
los datos al aproximar el problema matemtico f (x) = cos x, por el problema computacional
2
x
fb(x) = 1
b = 3/8 .
, para x = /8 y x
2
Solucin.
"
2 #
1 3
Error total = 1
cos
= 0.9297 0.9239 = 0.0058 .
2 8
8
Por otro lado, el error computacional es
"
2 #
3
3
1
b
f (b
x) f (b
x) = 1
cos
= 0.9297 0.9305 = 0.0008 ,
2 8
8
y la propagacin del error de los datos es
3
f (b
x) f (x) = cos
cos
= 0.9305 0.9239 = 0.0066 .
8
8
22/75
[fb(b
x) f (b
x)]
{z
}
|
Error computacional
[f (b
x) f (x)]
{z
}
|
Propagaci
on del error de los datos
f
(x)
f (x)
y
y
, x 6= 0, y =
=
6 0.
x
b
x
x
b
x
x
x
x
x
As que
y
x
y = x ,
x 6= 0, y 6= 0 ,
(3)
por lo que el nmero de condicin es un factor de amplificacin de la magnitud del error relativo
de la solucin respecto de la magnitud del error relativo de los datos de entrada.
Definicin 6.2. Un problema matemtico se dice bien condicionado (insensible o
bien comportado numricamente), si cambios relativos pequeos en los datos de entrada del problema causan cambios relativos pequeos en la solucin del problema.
As, un problema es bien condicionado si su nmero de condicin es razonablemente pequeo.
Definicin 6.3. Un problema matemtico se dice mal condicionado (sensible o mal
comportado numricamente), si cambios relativos pequeos en los datos de entrada del
problema causan cambios relativos muy grandes en la solucin del problema.
En este caso, el nmero de condicin del problema puede ser arbitrariamente grande.
24/75
En la prctica, no siempre es posible obtener la igualdad en (3), por lo que es suficiente con
tener una estimacin de la forma:
y
x
y / x , x 6= 0, y 6= 0 .
Ejemplo 6.1. Anlisis de sensibilidad del problema de evaluar una funcin diferenciable
f : R R.
Solucin. Sea x 6= 0 un dato verdadero y x
b una aproximacin de x.
x = x
bx
x
b = x + x
f (b
x) f (x) = f (x + x) f (x)
f 0 (x)x .
T.V.M.
Por lo tanto
f (b
x) f (x)
f (x)
=
=
x
b
x
x
0
f (x)x
f (x) xf 0 (x)
,
=
x
f
(x)
x
f (x) 6= 0 ,
que depende de x, f y f 0 .
25/75
x,
x > 0 , entonces
1
f 0 (x) =
2 x
1
x
x
1
2 x
=
=
=
,
2x
2
x
x > 0,
x > 0 , entonces
f 0 (x) =
1
x
1
,
| ln x|
x > 0,
por lo que el problema de calcular logaritmos es bien condicionado para x grande y para x
cercano a 0, pero mal condicionado cerca de 1. Por ejemplo, para x = 1.0001 y x
b = 1.0002 :
x = x
b x = 104
x 4
= 10 ,
x
y
y = ln(1.0001) = 9.9995 105
26/75
y = yb y = (19.998 9.9995)10
= 9.9985 10
y
= 1.
y
Por lo que
= 104
y 4 x
= 10
y
x
El nmero de condicin es muy grande, por lo que el error relativo de la solucin se amplifica
diez mil veces el error relativo del dato de entrada.
Ejemplo 6.2. Anlisis de sensibilidad del problema de calcular races reales de funciones
continuamente diferenciables f : R R.
El problema matemtico es: Encontrar R tal que f () = 0 .
Solucin. Si f 0 () 6= 0 (raz simple), entonces f es localmente invertible en , por lo que existe
la funcin inversa de f .
Si g f 1 , entonces f () = 0 = g(0).
Aplicando el anlisis de sensibilidad al problema de evaluar la funcin diferenciable g en y = 0,
se tiene que:
g(b
y ) g(y) = g(y + y) g(y)
T.V.M.
g 0 (y)y =
1
y ,
f 0 (x)
cuando y = f (x) .
27/75
1
y
f 0 ()
y = yb 0 = yb .
Como el error relativo no est definido para y = 0, se trabajar con el nmero de condicin
absoluto:
1
|g(b
y ) g(0)|
, cuando f 0 () 6= 0 .
abs =
= 0
|b
y 0|
|f ()|
Conclusin 6.1. El problema de hallar una raz de una funcin continuamente diferenciable f : R R es:
A). Mal condicionado (sensible numricamente) si f 0 () es arbitrariamente pequea.
Geomtricamente corresponde al caso en que la recta tangente a la grfica de y = f (x)
es casi horizontal en un entorno de (, 0). En particular, el problema de hallar races
de multiplicidad n > 1 (f 0 () = f 00 () = f (n1) () = 0 y f (n) () 6= 0) es muy mal
condicionado.
B). Bien condicionado (insensible numricamente) si f 0 () no es pequea.
28/75
2k + 1
,
2
k N {0} ,
k N {0} ,
0.7
0.6
0.5
0.4
0.3
0.2
0.1
(4 , 0)
0
(2 , 0)
(1 , 0)
(3 , 0)
0.1
0
0.5
1.5
2.5
Figura 4: Las races mltiples 1 = 0, 3 = 2.4 y 4 = , son muy mal condicionadas. Las rectas
tangentes a la grfica de f en dichos puntos son casi horizontales, aunque en 4 no se nota a
simple vista s lo es en intervalos ms pequeos. En 2 que es raz simple, la recta tangente
tiene una inclinacin de 137.5 que para nada es horizontal. En races de multiplicidad impar
como 1 y 2 , la grfica de f atraviesa al eje X en dichas races; y las races de multiplicidad
par como 3 y 4 , la grfica de f en dichas races nicamente toca al eje X, no la cruza.
30/75
31/75
Puesto que
|b
y y|
b
x) f (b
x)
f (b
{z
}
|
Estabilidad num
erica del m
etodo
|f (b
x) f (x)|
|
{z
}
atico
Sensibilidad del problema matem
Entonces
A). Mtodos numricamente estables no necesariamente producen resultados exactos del problema original.
B). Mtodos numricamente estables aplicados a problemas bien condicionados producen resultados exactos del problema.
C). Mtodos numricamente estables aplicados a problemas mal condicionados pueden producir
resultados inexactos del problema.
D). Mtodos numricamente inestables aplicados a problemas bien condicionados pueden producir resultados inexactos del problema.
32/75
x1 = 0.456
Parte entera
Parte fraccionaria
x0
2(61) + 1
2 x1 = x2 + x1 ,
x2 = 0.912,
x1 = 0
61
2(30) + 1
2 x2 = x3 + x2 ,
x3 = 0.825,
x2 = 1
30
2(15) + 0
2 x3 = x4 + x3 ,
x4 = 0.651,
x3 = 1
15
2(7) + 1
2 x4 = x5 + x4 ,
x5 = 0.303,
x4 = 1
2(3) + 1
2 x5 = x6 + x5 ,
x6 = 0.606,
x5 = 0
2(1) + 1
2(0) + 1
2 x6 = x7 + x6 ,
..
.
x7 = 0.213,
..
.
x6 = 1
..
.
X
x e (0.x1 x2 ) e ,
(4)
x=
=1
con e Z y x {0, 1, . . . , 1}. Ms an, existe una nica representacin de tipo (4)
con x1 6= 0 y con la propiedad de que para cualquier n N, existe un n tal que
x 6= 1 .
(5)
parte cimal
k=1
1
es irracional.
k!
36/75
The Institute of Electrical and Electronics Engineers, Inc., 345 East 47th Street, New York, New York
10017.
37/75
La norma IEEE 754-1985, actualizada en 1987 y luego en 2008, especifica los requisitos
mnimos que un sistema de nmeros de punto flotante debe tener, unificando los formatos
numricos entre diseadores de lenguajes, desarrolladores de compiladores y fabricantes de
procesadores.
Independientemente de los parmetros particulares que la norma 754 de IEEE especifica
para su implementacin, es posible estudiar las propiedades de los nmeros de punto
flotante de manera ms general, como veremos enseguida.
El sistema de punto flotante (S.P.F.) se define por:
e d1 {1, 2, . . . , 1}, L e U
{0. 00
0}} ,
fl(, t, L, U ) = 0.d1 d2 dt
| {z
di {0, 1, . . . , 1}, i = 2 : t
t ceros
donde es un nmero entero 2 que se llama base del sistema, t tambin es un nmero
entero > 0 que se le llama precisin del sistema, y [L, U ] es el rango del exponente e con U
entero positivo y L entero negativo que usualmente se toma como 1 U .
Los elementos del S.P.F. se llaman nmeros punto flotante.
Algunos ejemplos tpicos que se encuentran en la literatura se muestran en la tabla 2.
38/75
Sistema
IEEE SP
24
126
127
IEEE DP
53
1 022
1 023
Cray
48
16 383
16 384
HP calculator
10
12
499
499
IBM mainframe
16
64
63
40/75
Nombre
Nombre comn
Dgitos
Exponente
decimales
decimal
mximo
binario-16
Precisin media
10 + 1
14
15
3.31
4.51
binario-32
Precisin simple
23 + 1
126
127
7.22
38.23
binario-64
Precisin doble
52 + 1
1022
1023
15.95
307.95
binario-128
Precisin cudruple
112 + 1
16382
16383
34.02
4931.77
decimal-32
10
95
96
96
decimal-64
10
16
383
384
16
384
decimal-128
10
34
6143
6144
34
6144
Se presentan a continuacin dos programas que imprimen resultados en formato simple y doble
precisin.
C IMPRESION DE RESULTADOS EN PRECISION SIMPLE
C
C2345678...
REAL NUMERO, RAIZC
NUMERO = 145
RAIZC = -SQRT(NUMERO)
WRITE(6,10)RAIZC
10
42/75
Nmeros subnormales
Dos nmeros importantes en el sistema fl(, t, L, U ) son
xmin =
L1
xmax = 1
U ,
En efecto:
1
+
+ +
U
= 0.( 1)( 1) ( 1) U =
2
t
1
1
1
1
U
t1
t2
=
+ 2 + + t ( 1) =
+
+ + + 1
U
t
1 t 1
U = 1 t U .
=
t
1
xmax
0
,
| {z }
t1 ceros
y se guarda su mantisa solamente los t 1 ceros (el 1 est oculto), se aprovechan los espacios
que ocupan dichos ceros para almacenar otros nmeros ms pequeos de la forma:
0.d1 d2 dt1 2L1 ,
di {0, 1}, i = 1 : t 1 ,
que se les llama nmeros subnormales. Estos nmeros no estn normalizados y por consiguiente son menos precisos.
44/75
Ejercicios
1. Indica cules de los nmeros siguientes no pertenecen al sistema binario fl(2, 4, 2, 2):
0.101121 , 0.110122 , 1.10122 , 0.212122 , 0.0110122
y 0.761522 .
Redondeo
Definicin 10.1. Un nmero real x 6= 0 est en el intervalo normalizado del S.P.F. si:
xmin |x| xmax .
Los nmeros 0, y los nmeros subnormales no estn en el intervalo normalizado de
un sistema binario de punto flotante, pero todos son nmeros punto flotante vlidos.
En adelante, se considerarn todos ellos como nmeros punto flotante.
Definicin 10.2. Sea x R, x 6= 0. Se definen:
A). x como el nmero punto flotante ms cercano a x que es menor o igual a x.
B). x+ como el nmero punto flotante ms cercano a x que es mayor o igual a x.
C). Si el nmero ms cercano es el 0, se establece el signo del 0 igual al de x (Overton,
2002 [6]).
46/75
x = 0.d1 d2 dt1 dt e
x+ = 0.d1 d2 dt1 dt + 0. 00
0} 1 e .
| {z
t1 ceros
Ms an:
x+ x = et .
Demostracin. Dado que
d
d
d
d
d
1
t
t+1
t+1
2
x = + 2 + + t + t+1 + e = x +
+ e
t+1
{z
}
|
mantisa de x
<
d1
dt + 1
d2
+ 2 + +
e = x+ .
47/75
Entonces
x+ = x +
1
e
et
=
x
+
En este caso se dice que x se obtiene por truncamiento, pues simplemente se descartan los
dgitos di , i t + 1.
Casos especiales
A). Si x > xmax , entonces x = xmax y x+ = .
B). Si 0 < x < xmin , entonces x es 0 o un nmero subnormal en el caso binario, y x+ es
xmin o un nmero subnormal en el caso binario.
C). Si x < 0, entonces la situacin se invierte para x y x+ , por ejemplo:
Si x < 0 y xmax < x < xmin , entonces x+ se obtiene por truncamiento y
x = x+
1
e
.
t
Si x < 0 pero xmin < x < 0, entonces x = xmin o un nmero negativo subnormal
en el caso binario, y x+ = 0 o un nmero negativo subnormal en el caso binario.
Si x < xmax , entonces x = y x+ = xmax .
48/75
x si x > 0
x+ si x < 0
49/75
x+
red(x) =
(6)
Demuestra que
A). Si dt+1 = 0 entonces red(x) = x .
B). Si dt+1 = 1 y di = 1 para algn i > t + 1, entonces red(x) = x+ .
C). Si dt+1 = 1 y di = 0 para toda i t + 2, entonces |x x | = |x x+ |.
Los bits menos significativos, es decir, los bits finales de x y x+ deben ser distintos,
y para romper el empate se escoge aqul cuyo bit final sea 0.
Ejemplo 10.1. Redondeos al par ms cercano con dos dgitos significativos:
red(2.750) = 2.8,
red(2.850) = 2.8
red(1.450) = 1.4 .
51/75
=
=
.
x
|x|
m e
2m
2
2
Similarmente se verifica la tercera desigualdad.
52/75
1
u = (t1) ,
2
se le llama unidad de redondeo (precisin de la mquina, epsilon de la mquina
o exactitud relativa) de la aritmtica de punto flotante del sistema fl(, t, L, U ).
Ejemplo 10.2. En el sistema de punto flotante binario IEEE SP (t = 24) se tiene:
u=
1
223 = 224 = 0.596 107
= 107 ,
2
1
252 = 253 = 1.11 1016
= 1016 .
2
Por lo que el sistema de punto flotante IEEE en precisin simple tiene alrededor de 7
dgitos significativos decimales de precisin, y en precisin doble tiene entre 15 y 16 dgitos
significativos decimales de precisin. Ocurre esto exactamente en la prctica? En ambos
casos, est includo el bit escondido.
y en precisin doble (t = 53):
u=
1
263 = 264 = 0.542 1019
= 1019 ,
2
Ejercicios
1. Con respecto al sistema fl(10, 4, 2, 3), halla el fl(x) para x = (2./3.)T , x = (3./7.)R , x =
(9.99999)R y x = ()R . Aqu, ()T significa con truncamiento y ()R con redondeo.
2. Considera el sistema de nmeros punto flotante fl(, t, L, U ) con unidad de redondeo u.
A). Si > 0 es el elemento ms chico en fl(, t, L, U ) Es cierto que u < ?
B). Si 2| y 1 t > L, demuestra que u fl(, t, L, U ).
C). En los estndares de IEEE 32 bits, u fl(2, 24, 126, 127)?
3. El algoritmo siguiente es debido a Moler y sirve para el clculo de la unidad de redondeo u de la
mquina:
a 4.0/3.0
b a 1.0
cb+b+b
u |c 1.0|
A). Escriba un programa en FORTRAN o en el lenguaje de tu preferencia que implemente este
algoritmo en simple precisin, y ejectalo en tu mquina.
B). Escriba otro programa en FORTRAN o en el lenguaje de tu preferencia que implemente este
algoritmo en doble precisin, y ejectalo en tu mquina.
C). Compara tus resultados con los del ejemplo 10.2. Explica.
54/75
b
aa
=
a
olo si b
a = a(1 + ) .
si y s
As que en el sistema
fl(, t, L, U ) : fl(a) red(a) = a(1 + ) para alg
un || u ,
1
donde u =: (t1) es la unidad de redondeo del sistema.
2
El supuesto bsico sobre una operacin binaria en el sistema de punto flotante fl (, t, L, U )
es que para cualesquiera a, b fl (, t, L, U ):
fl(a b) = (a b)(1 + ),
|| u ,
Ejercicios
1. En una aritmtica de punto flotante (A.P.F.) Es cierto que: (b (a + b)) + a = 0?
Sugerencia. En una A.P.F. de 7 dgitos significativos con redondeo, considera a = 0.1234567 y
b = 0.4711325 104 . Qu concluye?
2. En una A.P.F. averigua la validez de la relacin: a = (a + b) b.
Sugerencia. Considera el caso a = 0.8614 102 y b = 0.3204 en una A.P.F. de 4 dgitos
significativos con redondeo. Qu concluye?
3. En una A.P.F. de 5 dgitos significativos con redondeo, halla la solucin positiva ms chica de la
ecuacin fl(123.45 + a) = a y la solucin positiva ms grande de fl(123.45 + b) = 123.45 .
Cancelacin numrica. Al realizar la resta en el sistema de punto flotante, se puede presentar
un fenmeno numrico conocido como cancelacin numrica. Por ejemplo, si a = 0.34567835 y
b = 0.34567823, se tiene que
a b = 0.00000012 = 0.12 106 .
Sin embargo, en una A.P.F. de 7 dgitos significativos y redondeo al ms cercano par se tiene
fl(a) = 0.3456784 , fl(b) = 0.3456782 y fl(a) fl(b) = 0.0000002 = 0.2 106 .
Durante la resta se han perdido dgitos significativos que garantizaban la buena exactitud y precisin
de los nmeros, y los resultados de a b y fl(a) fl(b) no coinciden ni por redondeo.
56/75
a, b, c R.
b
.
=
2a
57/75
Si b > 0, se calculan:
x1 =
b
2a
x2 =
c
2c
.
ax1
b+
x2 =
c
2c
.
ax1
b +
Si b < 0, se calculan:
x1 =
b +
2a
Ejercicios
1. En general se evita la cancelacin numrica con el fin de obtener mtodos numricamente estables.
Sin embargo, existen casos en donde evitarla nos conduce a resultados sorprendentemente absurdos.
En una aritmtica de punto flotante de 4 decimales con redondeo, para a = 0.8717 y b = 0.8719,
calcula el punto medio c = 12 (a + b) del intervalo [a, b]. De qu otra manera se puede calcular c?
2. Escribe la forma conveniente para evaluar, evitando cancelacin numrica, cada una de las siguientes funciones:
59/75
A). Sea pn el permetro del polgono inscrito con 2n lados. Entonces p2 es el permetro del cuadrado
inscrito, p2 = 2 2. En general:
q
p
n
pn+1 = 2
2(1 1 (pn /2n )2 ) , n 2 .
(7)
Calcula pn para n = 3, 4, . . . , 90, en simple precisin y n = 3, 4, . . . , 550 en doble precisin.
Explica tus resultados (este problema lo sugiri Alan Cline). Observa que esta frmula falla
para calcular una buena aproximacin de Por qu?
B). La frmula (7) se puede mejorar (evitando la cancelacin numrica), al tomar
pn+1 = 2n rn+1
donde
rn+1 = 2(1
1 (pn
Muestra que
rn+1 =
/2n )2 ),
r
n
,
2 + 4 rn
r3 = 2/(2 + 2) .
n 3.
(8)
C). Usa la iteracin (8) para calcular rn , n = 3, 4, . . . , 90, en simple presicin y n = 3, 4, . . . , 550
en doble precisin (esta modificacin lo propuso W. Kahan).
D). Observa que eventualmente, 4 rn se redondear a 4, y consecuentemente la frmula (8) se
ver afectada tambin por errores de redondeo para n0 s grandes. Nos debemos preocupar por
esto?
60/75
Sumas
Problema 12.1. Para a1 , a2 , . . . , an en R, calcular
S=
n
X
ak .
k=1
k=1
k=1
k=1
con |j | 1.01ju, j = 1 : n 1 y n = n1 .
61/75
k=1
el lado derecho de (9) no necesariamente es pequea. Por lo que no se garantiza la estabilidad del Algoritmo 12.1 si en la sumatoria hay trminos positivos y negativos.
B). Si ak > 0, k = 1 : n, entonces de (9) se sigue que
,
!
n
n
n
X
X
X
ak 1.01(n 1)u .
ak
ak
fl
k=1
k=1
(10)
k=1
Por lo tanto, la suma de nmeros positivos hecha en orden natural por el algoritmo
12.1 es numricamente estable. Sin embargo, esto no garantiza que el resultado que se
obtiene de la suma sea exacto.
C). Si ak < 0, k = 1 : n, entonces
n
n
X
X
ak =
|ak | .
k=1
k=1
Por lo que la desigualdad (10) sigue siendo vlida, as que el algoritmo 12.1 tambin es
numricamente estable, para este caso.
62/75
k=1
a5 = 9.876 104 .
En efecto:
12.34 + 3.453 = 15.793
Porcentaje de error
= 0.02 % .
Para x < 0, la serie de Taylor es alternante, por lo que puede haber resultados desastrosos
por cancelacin numrica.
2. Clculo del producto punto. El producto punto de dos vectores x = (x1 , x2 , . . . , xn )T
y y = (y1 , y2 , . . . , yn )T en Rn , est definido por
xT y =
n
X
xk yk .
k=1
k=1
65/75
+ `22 x2
c1
c2
`n1 x1 + `n2 x2 +
(11)
+ `nn xn =
cn
66/75
+ r1n xn
d1
r22 x2 +
+ r2n xn
d2
(12)
rnn xn = dn
donde rkk 6= 0 para k = 1 : n.
La solucin del sistema triangular superior (12) se obtiene mediante el mtodo de sustitucin retrospectiva:
Pn
dk i=k+1 rki xi
dn
, xk =
, rkk 6= 0, k = n 1 : 1 : 1 .
xn =
rnn
rkk
67/75
n = n(x) .
Bajo el supuesto de que cada xk /k! son bien calculados y que nu < 0.01, se sigue que
yb = fl(y) =
n
X
xk
k=0
k!
As que
|b
y y|
n
X
|x|k
k=0
k!
|nk+1 | 1.01(nu)
n
X
|x|k
k=0
k!
= 1.01(nu)e|x| .
(13)
A). El programa que se anexa est basado en el algoritmo anterior. Captura el programa y
prubalo en tu compilador de FORTRAN para un x dado, por ejemplo, para x = 5.5.
C CALCULO DE LA EXP(X) A TRAVES DE LA SERIE DE TAYLOR
C2345678
REAL S,TERM,SA,X,TOL,EXPO,EAPOS,KAPPA,EAPRIO
INTEGER K
WRITE(*,*)DAME X:
READ(*,*)X
C
CALL MOLER(TOL)
C
S=1.0
TERM=1.0
K=1
100
CONTINUE
TERM=X*(TERM/K)
K=K+1
WRITE(*,*)K,S,TERM
SA=S
S=S+TERM
IF (.NOT. (ABS(S-SA) .LE. TOL*ABS(S))) GO TO 100
70/75
C
EXPO=EXP(X)
EAPOS=ABS(EXPO-S)/EXPO
C
IF (X .LT. 0.0) THEN
KAPPA=EXP(-2.0*X)
ELSE
KAPPA=1.0
ENDIF
EAPRIO=(1.01*K)*KAPPA*TOL
WRITE(*,*)X,EXPO,SA,K,EAPOS,KAPPA,EAPRIO
STOP
END
C
C **************************************************
C
71/75
SUBROUTINE MOLER(TOL)
REAL A,B,C
C
A=4.0/3.0
B=A-1.0
C=B+B+B
TOL=ABS(C-1.0)
RETURN
END
C
C **************************************************
B). Estudia el programa, documntalo y agrgale un formato adecuado de impresin, para que
imprima para x = 1.5 el siguiente esquema de resultados:
72/75
SUMA
TERM
1.0000000
1.5000000
2.5000000
1.1250000
3.6250000
0.5625000
4.1875000
0.2109375
4.3984380
0.0632813
4.4617190
0.0158203
4.4775390
0.0033901
4.4809290
0.0006356
10
4.4815650
1.0593960E 004
11
4.4816700
1.5890940E 005
12
4.4816860
2.1669460E 006
13
4.4816880
2.7086830E 007
EXPO
SUMA
EAPOS
KAPPA
EAPRIORI
1.5
0.4481689E + 01
0.4481688E + 01
13
0.0000E + 00
0.1000E + 01
0.1565E 05
73/75
C). Ejecuta tu programa para x = 1.5, 5.5, 10.5, 15.5 y 20.5 Cules son los errores
relativos apriori y aposteriori, en cada caso? Comenta.
D). En qu paso de la recursin se da la cancelacin numrica para x = 20.5? De qu otra
forma calcularas e20.5 ? Comenta.
Ejercicios
1. En una A.P.F. de 5 decimales con redondeo, calcula el valor lmite de la sucesin sn+1 =
fl(sn + a), n 0, con s0 = 0.0, para a = 1.0, 51.0, 100.0 y 555.0 Cul es tu conjetura?
2. En una A.P.F. de 3 decimales con redondeo
A). Calcula la suma de los nmeros siguientes:
1050, 44, 3, 4, 9910, 38, 49, 48, 547 y 145
Cul es el error relativo de tu resultado? Cuntas cifras de tu resultado son correctas?
B). Repite el inciso anterior, pero sumando del nmero menor al mayor.
Comenta.
74/75
Referencias
[1] Buchanan, J.L., Turner, P.R.: Numerical Methodos and Analysis. McGraw-Hill, Inc.,
1992.
[2] Eldn, L., Wittmeyer-Koch, L.: Numerical Analysis An Introduction. Academic Press,
Inc., 1990.
[3] Fortran. (2013). http://es.wikipedia.org/wiki/Fortran.
[4] Hammerlin, G., Hoffmann, K-H.: Numerical Mathematics. Springer-Verlag, 1991.
[5] Heath, M.T.: Scientific Computing: An Introductory Survey. McGraw-Hill, N.Y., 2nd
Edition, 2002.
[6] Overton, M.L.: Numerical Computing with IEEE Floating Point Arithmetic. SIAM, 2001.
[7] Page, C.G.: Professional Programmers Guide to Fortran 77. University of Leicester, UK.
1988, 2001. Last update/bug fix: 2003 September 3. http://www.fortran.com/
[8] Stoer, J., Bulirsch, R.: Introduction to Numerical Analysis. Springer-verlag, 1993.
75/75