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

Captulo 1:

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

4. Error absoluto y error relativo

17

5. Propagacin del error de los datos y error computacional

20

6. Sensibilidad numrica y nmero de condicin

23

7. Estabilidad y exactitud de un algoritmo

31

8. Representacin de nmeros reales en bases arbitrarias

33

9. Sistemas de punto flotante

37

10.Redondeo

46

2/75

11.Operaciones bsicas y cancelacin numrica

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

y qumica computacional. Es uno de los lenguajes ms populares en el rea de la computacin


de alto rendimiento, y es el lenguaje que se utiliza para programas que evalan el desempeo
(benchmark) y el ranking de las supercomputadoras ms rpidas del mundo [3].

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

Al ejecutar jEdit.exe se despliega la plataforma que se muestra en la figure 1, que es donde


se captura un programa que nos interese.

Figura 1: Plataforma de jEdit.


6/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

Entonces tiene sentido el operador:


F : X Y
x 7 F (x) = y .
Definicin 2.1. La solucin de un problema matemtico se dice que depende continuamente de un conjunto de datos x0 del problema si el operador F es continuo
en x0 , es decir dado > 0 arbitrario, existe un > 0 tal que kx x0 k < implica que
kF (x) F (x0 )k < .
Se dice que la solucin depende continuamente de los datos del problema, si depende
continuamente de cada conjunto de datos x0 admisibles del problema.
Definicin 2.2. Un problema matemtico se dice bien planteado (en el sentido de Hadamardb ), si satisface las siguientes condiciones:
A). Existe solucin para cada conjunto admisible de datos.
B). Para cada conjunto admisible de datos la solucin es nica.
C). La solucin depende continuamente de los datos del problema.
b

Jacques Salomon Hadamard, matemtico francs, 1865-1963.


9/75

En trminos del operador F , la existencia se traduce en decir que F 1 (Y ) = X, y la unicidad


se traduce en decir que F 1 es inyectivo.
Definicin 2.3. Un problema matemtico se dice mal planteado si no es bien planteado,
es decir si no cumple alguna de las tres condiciones de Hadamard.
Los problemas bien planteados son los que se pueden resolver razonablemente bien con la ayuda
de una computadora. Sobre todo cuando la solucin del problema no se puede hallar en forma
analtica, como el problema de valores iniciales determinado por el sistema de EDOs (1). Para
ello, se necesita:
A). Desarrollar mtodos (algoritmos) para resolver las ecuaciones numricamente.
B). Implementar los mtodos en un software numrico (programacin).
C). Ejecutar el software (o programa) en una computadora para simular numricamente el
proceso fsico o de inters.
D). Representar los resultados numricos obtenidos en alguna forma comprehensible tales como
visualizacin grfica.
E). Interpretar y validar los resultados numricos obtenidos (confrontarlos con la realidad),
repetir parte o todo el proceso numrico si es necesario.
10/75

Es importante tener en cuenta que:


Durante el curso se abordar el estudios de mtodos numricos conocidos, y se implementarn algunos haciendo programas domsticos en FORTRAN o en MATLAB, y la
implementacin de otros usando rutinas profesionales tambin de FORTRAN y MATLAB.
Para que un problema matemtico se pueda resolver con la ayuda de una computadora
a travs de mtodos numricos, es necesario transformarlo a su vez en un problema
computacional.
El proceso de transformacin se llama discretizacin del problema matemtico.
Una esquematizacin del proceso se muestra en la figura 2.

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

Figura 2: Esquematizacin del proceso de solucin numrica de un problema cientfico.


12/75

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

5. De redondeo. Ocurren al realizar una infinidad de operaciones aritmticas (manualmente,


con una calculadora o computadora), para resolver problemas computacionales.
Pues de nuevo todos los instrumentos de clculo hasta ahora inventados son de precisin finita, por lo que tienen que aproximar los resultados de las operaciones aritmticas
realizadas.
Ejemplo 3.1. (Aproximaciones). Calcular la cantidad de m2 que ocupa el piso del saln.
Solucin. Por observacin directa se puede suponer que el saln es rectangular (aproximacin
por modelacin), por lo que su rea ser
A = base altura .
Hay que medir la base y la altura en metros (mediciones empricas).
La exactitud de los datos depender del tipo de instrumento a usar (errores sistemticos),
y del lecturista de la medida (errores accidentales).
Dado que el saln es bastante largo, si slo se dispone de una regla o cinta mtrica de
3 metros, se necesitar medir la longitud del saln por tramos; por lo que tanto la base
como la altura pueden ser el resultado de clculos previos.
15/75

Suponiendo que la base = 4.35 m y la altura = 9.18 m, entonces


A = 4.35 m 9.18 m = 39.9330 m2
= 40 m2 .
Esto ltimo se llama aproximacin por redondeo y ocurren prcticamente en todas las operaciones aritmticas que se realizan.
2
El estudio del efecto que producen las aproximaciones sobre los resultados de un problema
cientfico o matemtico, se llama anlisis de error.

16/75

Error absoluto y error relativo


Para hacer el anlisis de error en la solucin de un problema matemtico, es necesario saber
qu tan cerca se est del resultado deseado. Para ello, se introducen los conceptos de error
absoluto y error relativo.
Definicin 4.1. Sea x el valor verdadero de una cierta cantidad y x
b un valor aproximado
de dicha cantidad. Se define el error absoluto de x
b con respecto de x como
x = x
b x,
y el error relativo de x
b con respecto de x por
Erel =

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

Dos interpretaciones importantes del error relativo son:


A). En trminos de porcentajes, se tiene que
E=

|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

Ejemplo 4.1. Calcula el error absoluto y relativo de la aproximacin x


b = 3.1415789 de
.
Solucin. El error absoluto de la aproximacin es
x = 3.1415789 3.14159265 = 0.00001375 = 0.1375 104 .
La magnitud del error relativo es
|x|
0.1375 104
=
= 0.437 105
= 105 ,
|x|
3.14159265
lo que confirma que x
b coincide con hasta 5 dgitos significativos.
Adems,
E=

|x|
100
= 0.437 103 % de error ,
|x|

lo que muestra la buena exactitud de x


b como aproximacin de .

19/75

Propagacin del error de los datos y error


computacional
Algunos errores que ocurren en la solucin de un problema cientfico pueden ser debido a
las aproximaciones de los datos de entrada del problema, mientras que otros pueden ser
atribuidos a procesos computacionales subsecuentes.
Aunque esta distincin no siempre es claro (por ejemplo, aproximaciones por redondeo
afectan tanto a los datos de entrada como resultados computacionales subsecuentes), es
sin embargo importante entender todos los efectos posibles de las aproximaciones en el
clculo numrico.
Por simplicidad se considerarn nicamente problemas en una dimensin.
Un problema tpico en una dimensin se puede modelar como el clculo del valor de una
funcin
f : R R ,
(2)
en un punto x R, donde x son los datos verdaderos del problema y f (x) la solucin
verdadera deseada.

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

Sensibilidad numrica y nmero de condicin


Sea f : R R un problema matemtico con datos verdaderos x y datos aproximados x
b, y
una aproximacin fb de f . Del diagrama de la figura 3, se tiene que
fb(b
x) f (x) =

[fb(b
x) f (b
x)]
{z
}
|

Error computacional

[f (b
x) f (x)]
{z
}
|

Propagaci
on del error de los datos

La propagacin del error de los datos depende nicamente de x


b, y es independiente del
mtodo fb que se usa para resolver el problema.
Estudiar este error se llama hacer anlisis de sensibilidad del problema.
b y de fb, es decir, depende del error de los datos de
El error computacional depende de x
entrada y del mtodo o algoritmo fb que se usa para resolver el problema.
Estudiar este error se llama hacer anlisis de estabilidad del mtodo.
23/75

Definicin 6.1. Se define el nmero de condicin del problema matemtico como:








yb y
y
f (b

x
)

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

Dos casos particulares:


A). Si f (x) =

x,

x > 0 , entonces

1
f 0 (x) =
2 x





1
x


x
1
2 x

=
=
=
,
2x
2
x



x > 0,

por lo que el problema de calcular races cuadradas es bien condicionado.


B). Si f (x) = ln x ,

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

yb = ln(1.0002) = 1.9998 104

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

Dado que interesa el caso y = 0, entonces x = , por lo que


g(b
y ) g(0)
=

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

Ejemplo 6.3. Analizar la sensibilidad numrica de las races de


1
f (x) = x3 (x 2.4)4 cos(x) sin2 (x) .
2
En efecto, la funcin f tiene una infinidad de races reales y es directo verificar que 1 = 0 es
raz impar de multilplicidad 5, 2 = /2 es raz simple, 3 = 2.4 es raz par de multiplicidad
4, 4 = es raz doble, y son las que se muestran en la figura 4.
En general,

2k + 1
,
2

k N {0} ,

son races simples de f y


k ,

k N {0} ,

son races dobles.


En las races simples: f 0 (/2) = 481.77, f 0 (/2) = 0.92, f 0 (3/2) = 1496.02, y
f 0 ((2k + 1)/2) se hace arbitrariamente grande cuando k se hace grande; por lo que todas las races simples de f son bien condicionadas y todas las races mltiples de f son mal
condicionadas.
29/75

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

Estabilidad y exactitud de un algoritmo


Definicin 7.1. Un algoritmo (mtodo) numrico es numricamente estable si los
resultados que produce es relativamente insensible a perturbaciones debido a las aproximaciones hechas durante el proceso de clculo.
As un algoritmo es numricamente estable si las perturbaciones que ocurren durante el clculo
afectan menos que pequeos errores de los datos de entrada del problema dado.
Sea y la solucin verdadera de un problema matemtico f y yb una solucin aproximada obtenida por un mtodo fb.
Definicin 7.2. Se dice que yb es exacta como solucin del problema matemtico f si la
magnitud del error prospectivo |b
y y| es suficientemente pequea.

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

Representacin de nmeros reales en bases


arbitrarias
Un estudio sobre el desarrollo histrico del sistema de los nmeros reales muestra que el sistema
decimal no ha sido el nico que se ha utilizado, sino que se han usado otros sistemas como el
de base 20 y 60 entre otros. Actualmente las computadoras usan sistemas de base 2, 8 y 16,
entre otros.
Ejemplo 8.1. Representar el nmero decimal peridico x = 123.456 en el sistema binario.
En efecto, se descompone x en dos partes: x = x0 + x1 , donde
x0 = 123

x1 = 0.456

Ntese que x0 Z+ y x1 R+ con 0 < x1 < 1.


Para convertir x0 a binario se aplica el algoritmo de la divisin consecutivamente, y para
convertir x1 a binario se multiplica consecutivamente por 2, como se indica en la tabla 1:
33/75

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
..
.

Tabla 1: Conversin de nmero decimal a binario.


La parte entera binaria se lee de abajo hacia arriba, y la parte fraccionaria de arriba hacia
abajo, por lo que el resultado es x = 1111011.011101 , que se puede representar en forma
normalizado como:
x = (0.1111011011101 ) 27 .
34/75

Teorema 8.1. Si 2 es un entero y x R, x 6= 0, entonces x se representa en la


forma cimal estandarizada:
!

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)

Demostracin. Una prueba se da en H


ammerlin and Hoffmann 1991 [4], y sigue el siguiente
razonamiento:
Para la existencia de la representacin, sea x R, x 6= 0. Entonces el signo de x queda
nicamente determinado si x > 0 o x < 0, y el nmero entero e := min{k Z : |x| < k }.
Sea
x1 := e |x| ,
y se aplica a x1 el mtodo de la parte fraccionaria del ejemplo 8.1, con en lugar de 2.
La definicin de e implica que e1 |x| < e y que 0 < x1 < 1.
35/75

Las bases ms usados son = 2 (binario), 8 (octal), 10 (decimal) y 16 (hexadecimal) donde


los dgitos en este ltimo caso son 0, 1, , 9, A, B, C, D, E y F.
Note que si e 1, entonces (4) se escribe simplemente en la forma cimal:
x = x1 x2 xe . xe1 xe2 .
|
{z
} |
{z
}
parte entera

parte cimal

Ejemplo: Convertir en base 10 los nmeros binarios 1001 y 1.011 .


Ejercicios
1. Convertir los nmeros siguientes en base dada a otra indicada.
A). (67.25)10 = ( ? )2 , B). (0.30)10 = ( ? )2 , C). (0.30)10 = ( ? )3 , D). (0.666 )10 =
( ? )3 , E). (111.0011)2 = ( ? )10 Todo nmero decimal finito es binario finito?
2. Escribe los nmeros siguientes en bases 2 y 3, en forma estandarizada: 17.123 , 111.789
y 0.00001011 .
3. Es el nmero a = (0.010010001 )3 un nmero racional?
4. Sea N, > 1. Muestra que el nmero a =

k=1

1
es irracional.
k!
36/75

Sistemas de punto flotante


La representacin de nmeros punto flotante es una forma de notacin cientfica que se usa en
el:
CPU (Unidad Central de Procesamiento, Procesador o Microprocesador).
GPU (Unidad de Procesamiento Grfico), y
FPU (Unidad de Punto Flotante o Coprocesador Matemtico), entre otros,
donde se pueden representar nmeros reales extremadamente grandes y pequeos de una manera muy eficiente y compacta, y con la que se pueden realizar operaciones aritmticas.
El estndar para la representacin en punto flotante es el IEEEa 754 aprobado en 1985.
Cuando el hardware de punto flotante no pueda realizar determinadas operaciones, se
utilizan bibliotecas de software especializados para realizar los clculos.
En el caso de computadoras o calculadoras de bolsillo, es necesario que el sistema numrico
sea lo ms confiable posible.
a

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

Tabla 2: Parmetros tpicos de sistemas de punto flotante.


Observacin 9.1. Si x = 0.d1 d2 dt e fl(, t, L, U ), d1 6= 0, y m = 0.d1 d2 dt ,
entonces
1 m < 1 ,
por lo que se dice que los nmeros punto flotante distintos de cero tienen formato normalizado. Al nmero m se le llama mantisa de x.
Existe una forma alternativa para normalizar los nmeros punto flotante, pero aqu se sigue la
notacin de Hammerlin and Hoffmann 1991 [4], Buchanan and Turner 1992 [1], y Stoer and
Bulirsch 1993 [8].
39/75

En un sistema binario, d1 es siempre 1 y no hay necesidad de almacenarlo, por lo que


se gana un bit extra de precisin para un campo de ancho dado (as el nmero 1 se le
considera un bit escondido).
El sistema IEEE SP (formato simple) es un sistema binario de 32 bits (ancho de campo):
1 bit para el signo, 8 bits para el exponente e y 23 bits para la mantisa m (equivalente a
7 dgitos decimales significativos).
El bit del signo es 0 para nmeros positivos y 1 para los negativos.
El sistema IEEE DP (formato doble) es un sistema binario de 64 bits: 1 bit para el signo,
11 bits para el exponente e y 52 bits para la mantisa m (equivalente entre 15 y 16 dgitos
decimales significativos).
Los microprocesadores Intel realizan su aritmtica con un formato extendido en hardware
de 80 bits: 1 bit para el signo, 15 bits para el exponente y 64 bits para la mantisa m
(equivalente entre 19 y 20 dgitos decimales significativos), en este caso d1 no est oculto
(Overton, 2002 [6]).
Los nmero enteros en un sistema de punto flotante se representan exactamente. As en
un sistema binario de 32 bits, se usa un bit para el signo y 31 bits para almacenar el valor
del nmero.

40/75

El nuevo estndar IEEE 754-2008 permite desarrollar computadoras decimales de 64 y 128


bits.
Las caractersticas de los sistemas que se contemplan en el nuevo formato se muestran en la
tabla 3.

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

Tabla 3: Parmetros aprobados en el IEEE 754-2008 para sistemas de punto flotante.


41/75

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

FORMAT(/,8X, EL RESULTADO DE LA RAIZ ES:,1X,E13.7)


END

Al ejecutar el programa imprime el resultado (ntese el formato):


EL RESULTADO DE LA RAIZ ES: -.1204159E+02

C IMPRESION DE RESULTADOS EN PRECISION DOBLE


C
C2345678...

42/75

DOUBLE PRECISION NUMERO, RAIZC


NUMERO = .145D+3
RAIZC = -DSQRT(NUMERO)
WRITE(6,10)RAIZC
10

FORMAT(/,8X, EL RESULTADO DE LA RAIZ ES:,1X,D21.15)


END

El resultado de la ejecucin ahora es:


EL RESULTADO DE LA RAIZ ES: -.120415945787923D+02

Observa la diferencia entre los dos programas y las impresiones correspondientes.

Nmeros subnormales
Dos nmeros importantes en el sistema fl(, t, L, U ) son
xmin =

L1

xmax = 1

U ,

el nmero positivo ms chico y ms grande respectivamente.


43/75

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

Dado que en el sistema binario:


L1
2
xmin = 1. 00

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 .

2. Considera al conjunto de nmeros de punto flotante fl(, t, L, U ). Cuntos elementos


tiene este sistema? Cuntos de ellos son enteros? Cuntos de ellos son irracionales?
3. Verifique que los nmeros subnormales positivos ms pequeo y ms grande que se pueden
 L1
Lt
(t1)
representar en un sistema binario son: smin = 2
y smax = 1 2
2
.
4. Cuntos nmeros subnormales distintos de cero hay en un sistema binario?
5. En un sistema binario de 32 bits, encuentra el nmero natural ms grande que se puede
representar as como el nmero entero ms grande que se puede representar.
6. Considera al sistema de punto flotante decimal fl(10, 7, 47, 48).
A). Halla el elemento positivo ms chico.
B). Halla el elemento positivo ms grande.
C). Cul es el espaciamiento entre los dos nmeros consecutivos ms chicos?
D). Cul es el espaciamiento entre los dos nmeros consecutivos ms grandes?
45/75

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

Teorema 10.1. Sea 2 un entero par, t Z+ y x R, x > 0 representado por


x = (0.d1 d2 dt1 dt dt+1 ) e ,
d1 {1, 2, . . . , 1}, di {0, 1, . . . , 1}, i 2, y di 6= 0 para algn i t + 1.
Si x est en el intervalo normalizado del S.P.F., entonces

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

Valores correctamente redondeados


El estndar IEEE define el valor correctamente redondeado de un nmero real x a travs de
una funcin que se denota como red o fl, es decir:
red : R fl(, t, L, U ) {n
umeros subnormales} {} ,
por
A). red(x) = x si x es un nmero punto flotante.
B). Si x no es un nmero punto flotante, el valor correctamente redondeado de x depende de
cul de los siguientes cuatro modos de redondeo est en efecto:
i). Redondeo hacia abajo (o hacia ): red(x) = x .
ii). Redondeo hacia arriba (o hacia ): red(x) = x+ .
iii). Redondeo hacia cero:
red(x) =

x si x > 0

x+ si x < 0
49/75

iv). Redondeo al ms cercano:

x+
red(x) =

si |x| < xmax y |x x | < |x x+ |


si |x| < xmax y |x x | > |x x+ |
si x > xmax
si x < xmax

En el caso de un empate, es decir |x x | = |x x+ | :


En un sistema binario ( = 2), se escoge el red(x) como el flotante que tenga su
bit menos significativo igual a 0 (Overton, 2002 [6]).
Si > 2, el red(x) puede ser ms complicado pero una forma simple es elegir el
flotante cuyo ltimo dgito significativo sea par (redondeo al par ms cercano).
El estndar IEEE usa por defecto el modo de redondeo al ms cercano, y es la que se usa casi
siempre en la prctica. En adelante se referir por redondeo a dicho modo.
50/75

Ejercicio 10.1. Sea x en un sistema binario dado por


x = (0.1b2 b3 dt1 dt dt+1 ) 2e .

(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

Teorema 10.2. Sea 2 un entero par, t Z+ y x R, x 6= 0, con representacin


x = (0.d1 d2 dt ) e ,
donde d1 {1, 2, . . . , 1} y di {0, 1, . . . , 1}, i 2. Entonces







red(x) x 1 (t1)
red(x) x 1 (t1)
1 et


y
.
|red(x) x| ,

2
red(x) 2
2
x
Demostracin. Ntese que
1
1
|red(x) x| (x+ x ) = et .
2
2
Por otro lado, si se escribe x = m e donde m = 0.d1 d2 dt , d1 6= 0, entonces
1 m < 1. De donde
1
1<
.
m
As que


1 et
red(x) x |red(x) x|
1 1 t 1 1t 1 (t1)
2

=

=

=
.


x
|x|
m e
2m
2
2
Similarmente se verifica la tercera desigualdad.
52/75

Definicin 10.3. El nmero

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=

Ejemplo 10.3. Para la precisin extendida Intel (t = 64), se tiene:


u=

1
263 = 264 = 0.542 1019
= 1019 ,
2

que corresponde a aproximadamente 19 y 20 dgitos decimales significativos.


53/75

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

Operaciones bsicas y cancelacin numrica


Notamos que para a R, a 6= 0 :

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 ,

donde representa a cualquiera de las cuatro operaciones bsicas: +, , , o / .


Con este criterio, las operaciones se realizan a precisin de la mquina.
55/75

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

Ecuacin de segundo grado


Se presenta el problema de cancelacin catastrfica en el clculo de las races de la ecuacin
polinomial cuadrtica:
ax2 + bx + c = 0,

a, b, c R.

cuyo discriminante cuando a 6= 0, est dada por: = b2 4ac .


Si < 0, entonces ambas races son complejas y conjugadas, y estn dadas por:
p
||
b
i.
x1,2 =
2a
2a
Si = 0, entonces ambas races son reales e iguales, y estn dadas por: x1,2 = b/2a .
Si > 0, entonces ambas races son reales y distintas.
Dos mtodos diferentes para calcularlos son:
Mtodo 1. Aplicando la frmula clsica: x1,2

b
.
=
2a

Mtodo 2. Este mtodo toma en cuenta el problema de la cancelacin numrica en el


clculo de las races:

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

El mtodo 1 es numricamente inestable, mientras que el mtodo 2 es numricamente estable.


Ejemplo. Resuelva la ecuacin cuadrtica
x2 1020 x + 105 = 0
Son correctos tus resultados?
Escriba una breve discusin sobre la validez de tus resultados.
Solucin:
x1 = 1020 es solucin mala (error por redondeo en accin) y
c
x2 =
= 1015 es buena solucin.
ax1
58/75

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:

A). f (x) = ln(x x2 1), para x >> 1 .


B). f (x) = (a + x)n an , para x
= 0.
C). f (x) = ex x 1, para x
= 0.
3. Evala f (x) = (1 cos x)/x2 , para x = 1, 0.1, 0.01, . . . , 1019 , en precisin simple y doble.
Estudia tus resultados.
4. En el ao 250 A. de C., el matemtico griego Arqumedes estim el nmero como sigue:
Consider un crculo con dimetro 1 y circunferencia . Inscribi un cuadrado. El permetro del
cuadrado es menor que la circunferencia, y este es una cota inferior de . Luego, Arqumedes
consider un octgono inscrito, un dieciseisgono, etc., cada vez duplicaba el nmero de lados
del polgono inscrito y obtena una mejor aproximacin de . Usando un polgono inscrito y un
circunscrito de 96 lados, pudo mostrar que 223/71 < < 22/7. Existe una forma recursiva para
estas estimaciones.

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

Algoritmo 12.1. El algoritmo estndar para calcular la suma es:


sum 0.0
Para k = 1 : n, hacer
sum sum + ak
Terminar.

Teorema 12.1 (Anlisis de error prospectivo). Si ak fl (, t, L, U ), k = 1 : n, y si


nu < 0.01, entonces


!
!
n
n
n
n

X
X
X
X


ak
ak
|ak | |nk+1 |
|ak | 1.01(n 1)u .
(9)
fl


k=1

k=1

k=1

k=1

con |j | 1.01ju, j = 1 : n 1 y n = n1 .
61/75

A). As que cuando




n
n
X

X


ak <<
|ak | ,



k=1

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

Observacin 12.1. De la primera desigualdad del teorema 12.1, se sigue que




!
n
n

X
X

ak |a1 | |n1 | + |a2 | |n1 | + |a3 | |n2 | + + |an | |1 |
ak
fl


k=1

k=1

1.01u [(n 1)|a1 | + (n 1)|a2 | + (n 2)|a3 | + +


2|an1 | + |an | ].
Ntese que el error por redondeo se minimiza si
|a1 | |a2 | |an | .
A). En el caso de suma de nmeros positivos, el error por redondeo se minimiza si se
ordenan primero los nmeros de menor a mayor.
B). En el caso de suma de nmeros negativos, el error por redondeo se minimiza si se
ordenan primero los nmeros de mayor a menor.
Lo anterior sugiere construir algoritmos ms efectivos que el algoritmo estndar 12.1 para la
suma de n nmeros arbitrarios. Investiga sobre el algoritmo divide y vencers.
63/75

Ejemplo 12.1. Calcula la suma en orden creciente y decreciente en el sistema fl(10, 4, 9, 9)


con redondeo al par ms cercano, de los siguientes nmeros:
a1 = 1.234 101 , a2 = 3.453 100 , a3 = 3.441 102 , a4 = 4.667 103
y

a5 = 9.876 104 .

En efecto:
12.34 + 3.453 = 15.793

0.0009876 + 0.004667 = 0.0056546

15.79 + 0.03441 = 15.82441

0.005655 + 0.03441 = 0.040065

15.82 + 0.004667 = 15.824667

0.04006 + 3.453 = 3.49306

15.82 + 0.0009876 = 15.8209876

3.493 + 12.34 = 15.833

Suma en orden decreciente = 15.82 . Suma en orden creciente = 15.83 .


Porcentaje de error
= 0.08 % .

Porcentaje de error
= 0.02 % .

Verifica que la suma exacta es s = 15.8330646 .


64/75

Algunas aplicaciones del clculo de sumas


Algunos ejemplos en donde se requiere el clculo de una suma son:
1. Clculo de ex . Usando la serie de Taylor
x2 x3
+
+
e =1+x+
2!
3!
x

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

En particular, el clculo de la norma de un vector x = (x1 , x2 , . . . , xn )T en Rn :


v
uX
n
X
u n 2
xk Norma Euclidiana
A). kxk1 =:
|xk | Norma 1
B). kxk2 =: t
k=1

k=1
65/75

3. Mtodo de sustitucin prospectiva. Un sistema triangular inferior est dada por


`11 x1
`21 x1

+ `22 x2

c1

c2

`n1 x1 + `n2 x2 +

(11)

+ `nn xn =

cn

donde `kk 6= 0 para k = 1 : n.


La solucin del sistema triangular inferior (11) se obtiene mediante el mtodo de sustitucin
prospectiva:
Pk1
ck i=1 `ki xi
c1
, xk =
, `kk 6= 0, k = 2 : n .
x1 =
`11
`kk

66/75

4. Mtodo de sustitucin retrospectiva. Un sistema triangular superior est dada por


r11 x1 + r12 x2 +

+ 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

Anlisis de estabilidad numrica en el clculo de ex


Se considera el valor exacto de ex dado por el polinomio de Taylor
x2
xn
y =e =1+x+
+ +
,
2!
n!
x

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!

(1 + nk+1 ) , con |j | 1.01ju, j = 1 : n y n+1 = n .

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)

Si x 0, se sigue de (13) que el error apriori es acotado por


|b
y y|
1.01nu .
|y|
Bajo el supuesto de que x es capturado a precisin de la mquina, el nmero de condicin
del problema se puede definir en este caso como =: 1.0.
Por lo que el mtodo de la serie de Taylor es numricamente estable para x 0.
68/75

Si x < 0, entonces de (13):


|b
y y|
1.01(nu) e2x ,
|y|
y nuevamente bajo el supuesto de que x es capturado a precisin de la mquina:
=: e2x > 1 .
As que para x << 1, el mtodo de la serie de Taylor es numricamente inestable.
Ejemplo:
Una forma de evaluar ex , para x pequea, es va su desarrollo en serie de Taylor, en base al
segmento del algoritmo siguiente:
s 1.0
term 1.0
k1
Hasta que |sa s| s ? tol, hacer:
term x ? (term/k)
k k+1
write(?, ?)k, s, term
sa s
s s + term
69/75

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

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