Sie sind auf Seite 1von 69

Capítulo 2:

Aritmética de punto flotante

1/69
Índice
1. Representación de números reales en bases arbitrarias 4

2. Sistemas de punto flotante 9


2.1. Números subnormales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3. Redondeo 16

4. Operaciones básicas de punto flotante 24

5. Cancelación numérica 25
5.1. Ecuación de segundo grado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

6. Sumas 28
6.1. Análisis de estabilidad numérica . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2. Algunas aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.3. Análisis de estabilidad numérica en el cálculo de ex . . . . . . . . . . . . . . . 40
2/69
7. Análisis de primer orden de la sensibilidad numérica 42
7.1. Símbolos de Landau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.2. Análisis de primer orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

8. Ejercicios 47

Referencias 69

3/69
Representación de números reales en bases
arbitrarias
Un estudio sobre el desarrollo histórico del sistema de los números 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 1.1. Representar el número decimal periódico x = 123.456 en el sistema binario.

En efecto, se descompone x en dos partes

x0 = 123 y x1 = 0.456

donde x0 ∈ Z+ y x1 ∈ R+ con 0 < x1 < 1.


Para convertir x0 a binario se aplica el algoritmo de la división consecutivamente, y para
convertir x1 a binario se multiplica consecutivamente por 2, como se indica en la tabla 1:

4/69
Parte entera Parte fraccionaria
x0 = 2(61) + 1 2 · x1 = x2 + x−1 , x2 = 0.912, x−1 = 0
61 = 2(30) + 1 2 · x2 = x3 + x−2 , x3 = 0.825, x−2 = 1
30 = 2(15) + 0 2 · x3 = x4 + x−3 , x4 = 0.651, x−3 = 1
15 = 2(7) + 1 2 · x4 = x5 + x−4 , x5 = 0.303, x−4 = 1
7 = 2(3) + 1 2 · x5 = x6 + x−5 , x6 = 0.606, x−5 = 0
3 = 2(1) + 1 2 · x6 = x7 + x−6 , x7 = 0.213, x−6 = 1
.. .. ..
1 = 2(0) + 1 . . .

Tabla 1: Conversión de número 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 .

5/69
Teorema 1.1. Si β ≥ 2 es un entero y x ∈ R, x 6= 0, entonces x se representa en la
forma β−cimal estandarizada:

!
X
x=± x−ν β −ν × β e ≡ ± (0.x−1 x−2 · · · ) × β e , (1)
ν=1

con e ∈ Z y x−ν ∈ {0, 1, . . . , β − 1}. Más aún, existe una única representación de tipo (1)
con x−1 6= 0 y con la propiedad de que para cualquier n ∈ N, existe un ν ≥ n tal que

x−ν 6= β − 1 . (2)

Demostración. Una prueba se da en Hämmerlin and Hoffmann 1991 [1], y sigue el siguiente
razonamiento:
Para la existencia de la representación, sea x ∈ R, x 6= 0. Entonces el signo de x queda
únicamente determinado si x > 0 o x < 0, y el número entero e := min{k ∈ Z : |x| < β k }.
Sea
x1 := β −e |x| ,

y se aplica a x1 el método de la parte fraccionaria del ejemplo 1.1, con β en lugar de 2.


La definición de e implica que β e−1 ≤ |x| < β e y que 0 < x1 < 1.
6/69
Para probar la unicidad de la representación (1), se supone que x1 tiene dos expansiones

X ∞
X
x1 = x−ν β −ν y y1 = y−ν β −ν .
ν=1 ν=1

Sea z−ν := y−ν − x−ν para todo ν ∈ N.


Es claro que ∞ −ν = 0, y hay que probar que z
P
ν=1 z −ν β −ν = 0 para todo ν ∈ N.

Suponga por el contrario que existe un primer índice n − 1 tal que z−(n−1) 6= 0. Es claro
que se puede suponer que z−(n−1) ≥ 1.
Puesto que
∞ ∞ ∞

X X X
z−(n−1) β −(n−1) = (−z−ν )β −ν ≤ |z−ν |β −ν ≤ (β − 1)β −ν






ν=n ν=n ν=n

" # (3)
X 1 
β −ν = (β − 1)β −n −(n−1) 

= (β − 1) 1 =β , 
1−


ν=n β

entonces z−(n−1) ≤ 1, y por el supuesto anterior se debe tener que z−(n−1) = 1.


Esto significa que la desigualdad en (3) realmente debe ser una igualdad, por lo que

z−ν = −β + 1 , para todo ν ≥ n .


7/69
La única posibilidad para que se cumpla la igualdad anterior es que

y−ν = 0 y x−ν = β − 1,

para todo ν ≥ n.
Pero esto contradice con el supuesto de que x1 satisface la propiedad (2), por lo que

z−ν = 0

para todo ν ∈ N.
Así que las dos expansiones deben ser lo mismo.

Las bases más usados son β = 2 (binario), 8 (octal), 10 (decimal) y 16 (hexadecimal) donde
los dígitos en este último caso son 0, 1, · · · , 9, A, B, C, D, E y F.

Note que si e ≥ 1, entonces (1) se escribe simplemente en la forma β−cimal:

x = ± x−1 x−2 · · · x−e . x−e−1 x−e−2 · · · .


| {z } | {z }
parte entera parte β−cimal

8/69
Sistemas de punto flotante

El sistema de punto flotante (S.P.F.) se define por:

 
∈ {1, − ≤ ≤

 d1 2, . . . , β 1}, L e U 
fl(β, t, L, U ) = ±0.d1 d2 · · · dt × β e

∪{±0. 00 · · · 0}} ,
di ∈ {0, 1, . . . , β − 1}, i = 2 : t
  | {z
t ceros

donde β es un número entero ≥ 2 que se llama base del sistema, t también es un número
entero > 0 que se le llama precisión del sistema, y [L, U ] es el rango del exponente e con L
entero negativo y U entero positivo.

Algunos ejemplos típicos que se encuentran en la literatura se muestran en la tabla 2.

Los elementos del S.P.F. se llaman números punto flotante.


9/69
Sistema β t L U
IEEE SP 2 24 −126 127
IEEE DP 2 53 −1 022 1 023
Cray 2 48 −16 383 16 384
HP calculator 10 12 −499 499
IBM mainframe 16 6 −64 63

Tabla 2: Parámetros típicos de sistemas de punto flotante.

Observación 2.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 números punto flotante distintos de cero tienen formato normali-
zado. Al número m se le llama mantisa de x.
Existe una forma alternativa para normalizar los números punto flotante, pero aquí se sigue la
notación de Hämmerlin and Hoffmann 1991 [1], Buchanan and Turner 1992 [2], y Stoer and
Bulirsch 1993 [3].
10/69
En un sistema binario, d1 es siempre 1 y no hay necesidad de almacenarlo, por lo que se gana
un bit extra de precisión para un campo de ancho dado (así el número 1 se le considera un bit
escondido).

El sistema IEEEa 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
dígitos decimales significativos).
El bit del signo es 0 para números 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 dígitos
decimales significativos).

Los microprocesadores Intel realizan su aritmética 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 dígitos decimales significativos), en este caso d1 no está oculto (Overton, 2002
[4]).
a
The Institute of Electrical and Electronics Engineers, Inc., 345 East 47th Street, New York, New York
10017.
11/69
Se presentan a continuación dos programas que imprimen resultados en formato simple y doble
precisión.

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 (nótese el formato):


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

12/69
C IMPRESION DE RESULTADOS EN PRECISION DOBLE
C
C2345678...
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 ejecución ahora es:

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

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

13/69
Números subnormales
Dos números importantes en el sistema fl(β, t, L, U ) son
L−1 −t
βU ,

xmin = β y xmax = 1 − β

el número positivo más chico y más grande respectivamente.


En efecto:
 
β−1 β−1 β−1
xmax = 0.(β − 1)(β − 1) · · · (β − 1) × β U = + + · · · + × β U
β β2 βt
 
1 1 1 U t−1 t−2
β−1
= + 2 + · · · + t (β − 1) × β = β +β + ··· + β + 1 t
× βU
β β β β
1 − βt β − 1 U −t
 U
= ×β = 1−β β . 
1 − β βt

14/69
Dado que en el sistema binario:
L−1
xmin = 1. 00 · ·
| {z } · 0 ×2 ,
t−1 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 números más pequeños de la forma:

±0.d1 d2 · · · dt−1 × 2L−1 , di ∈ {0, 1}, i = 1 : t − 1 ,

que se les llama números subnormales. Estos números no están normalizados y por consi-
guiente son menos precisos.

15/69
Redondeo

Definición 3.1. Un número real x 6= 0 está en el intervalo normalizado del S.P.F. si:

xmin ≤ |x| ≤ xmax .

Los números ±0, ±∞ y los números subnormales no están en el intervalo normalizado de un


sistema binario de punto flotante, pero todos son números punto flotante válidos. En adelante,
se considerarán todos ellos como números punto flotante.

Definición 3.2. Sea x ∈ R, x 6= 0. Se define x− como el número punto flotante más


cercano a x que es menor o igual a x, y x+ como el número punto flotante más cercano a
x que es mayor o igual a x. Si el número más cercano es el 0, se establece el signo del 0
igual al de x (Overton, 2002 [4]).

16/69
Teorema 3.1. Sea β ≥ 2 un entero par, t ∈ Z+ y x ∈ R, x > 0 representado por

x = (0.d1 d2 · · · dt−1 dt dt+1 · · · ) × β e ,

d1 ∈ {1, 2, . . . , β − 1}, di ∈ {0, 1, . . . , β − 1}, i ≥ 2, y di 6= 0 para algún i ≥ t + 1.

Si x está en el intervalo normalizado del S.P.F., entonces


 

x− = 0.d1 d2 · · · dt−1 dt × β e y x+ = 0.d1 d2 · · · dt−1 dt + 0. 00 · · · 0} 1 × β e .


| {z
t−1 ceros

Más aún:
x+ − x− = β e−t .

Demostración. Dado que


 
d  
 1 d 2 d t d t+1
 d t+1
x =  + 2 + · · · + t + t+1 + · · ·  × β e = x− + + · · · × βe

β β β β  β t+1
| {z }
mantisa de x−
 
d1 d2 dt + 1
< + 2 + ··· + × β e = x+ ,
β β βt
17/69
entonces
1 e e−t
x+ = x− + × β = x − + β .
βt

En este caso se dice que x− se obtiene por truncamiento, pues simplemente se descartan los
dígitos 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 número subnormal en el caso binario, y x+ es


xmin o un número subnormal en el caso binario.

C). Si x < 0, entonces la situación se invierte para x− y x+ , por ejemplo, si x < 0 y


1
−xmax < x < −xmin , entonces x+ se obtiene por truncamiento y x− = x+ − t × β e .
β
Si x < 0 pero −xmin < x < 0, entonces x− = −xmin o un número negativo subnormal
en el caso binario, y x+ = 0 o un número negativo subnormal en el caso binario. Y si
x < −xmax , entonces x− = −∞ y x+ = −xmax .
18/69
Valores correctamente redondeados

El estándar IEEE define el valor correctamente redondeado de un número real x a través de


una función que se denota como red o fl, es decir:

red : R −→ fl(β, t, L, U ) ∪ {números subnormales} ∪ {±∞} ,

definido por

A). Si x es un número punto flotante, entonces: red(x) = x .

B). Si x no es un número punto flotante, el valor correctamente redondeado de x depende de


cuál 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:

 x− si x > 0

red(x) =
 x+ si x < 0

19/69
iv). Redondeo al más cercano:



 x− si |x| < xmax y |x − x− | < |x − x+ |



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

 x+

red(x) =
∞ si x > xmax








−∞ si x < −xmax

En el caso de un empate |x − x− | = |x − x+ | :
1) En un sistema binario (β = 2), se escoge el red(x) como el flotante que tenga su
bit menos significativo igual a 0 (Overton, 2002 [4]).
2) Si β > 2, el red(x) puede ser más complicado pero una forma simple es elegir el
flotante cuyo último dígito significativo sea par (redondeo al par más cercano).

El estándar IEEE usa por defecto el modo de redondeo al más cercano, y es la que se usa casi
siempre en la práctica. En adelante se referirá por redondeo a dicho modo.

20/69
Ejercicio 3.1. Sea x en un sistema binario dado por

x = (0.1b2 b3 · · · dt−1 dt dt+1 · · · ) × 2e . (4)

Demuestra que

A). Si dt+1 = 0 entonces red(x) = x− .

B). Si dt+1 = 1 y di = 1 para algún 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 aquél cuyo bit final sea 0”.

Ejemplo 3.1. Redondeos al par más cercano con dos dígitos significativos:

red(2.750) = 2.8, red(2.850) = 2.8 y red(−1.450) = −1.4 .

21/69
Teorema 3.2. Sea β ≥ 2 un entero par, t ∈ Z+ y x ∈ R, x 6= 0, con representación

x = ±(0.d1 d2 · · · dt · · · ) × β e ,

donde d1 ∈ {1, 2, . . . , β − 1} y di ∈ {0, 1, . . . , β − 1}, i ≥ 2. Entonces



1 e−t red(x) − x 1 −(t−1)
red(x) − x 1 −(t−1)
|red(x) − x| ≤ β ,
≤ 2β y red(x) ≤ 2 β
.
2 x

Demostración. Nótese que


1 1
|red(x) − x| ≤ (x+ − x− ) = β e−t .
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 e−t

red(x) − x |red(x) − x| 1 1 −t 1 1−t 1 −(t−1)
= ≤ = β ≤ β = β .
x |x| m × βe 2m 2 2

Similarmente se verifica la tercera desigualdad.


22/69
Definición 3.3. El número
1
u = β −(t−1) ,
2
se le llama unidad de redondeo (precisión de la máquina, epsilon de la máquina
o exactitud relativa) de la aritmética de punto flotante del sistema fl(β, t, L, U ).
Ejemplo 3.2. En el sistema de punto flotante binario IEEE SP (t = 24) se tiene:
1
u= × 2−23 = 2−24 = 0.596 × 10−7 ∼
= 10−7 ,
2
1
y en precisión doble (t = 53): u= × 2−52 = 2−53 = 1.11 × 10−16 ∼ = 10−16 .
2
Por lo que el sistema de punto flotante IEEE en precisión simple tiene alrededor de 7
dígitos significativos decimales de precisión, y en precisión doble tiene entre 15 y 16 dígitos
significativos decimales de precisión. ¿Ocurre esto exactamente en la práctica? En ambos
casos, está incluído el bit escondido.
Ejemplo 3.3. Para la precisión extendida Intel (t = 64), se tiene:
1
u= × 2−63 = 2−64 = 0.542 × 10−19 ∼
= 10−19 ,
2

que corresponde a aproximadamente 19 y 20 dígitos decimales significativos.


23/69
Operaciones básicas de punto flotante
a−a
Observación 4.1. Para a ∈ R, a 6= 0 :
b
= δ si y sólo si b
a = a(1 + δ) .
a
Así que en el sistema fl(β, t, L, U ) : fl(a) ≡ red(a) = a(1 + δ) para algún |δ| ≤ u ,
1
donde u =: β −(t−1) es la unidad de redondeo del sistema.
2
Observación 4.2. El supuesto básico sobre una operación 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 básicas: +, −, ×, o / . “Con


este criterio, las operaciones se realizan a precisión de la máquina”.

Dos talleres numéricos que simulan la aritmética flotante en FORTRAN y en MATLAB, son
TALLER.EXE y TALLER.m . En ellos se pueden simular las operaciones básicas, resolver un
sistema lineal de 2 ecuaciones algebraicas, resolver una ecuación de segundo grado, entre otros.
Se recomienda hacer simulaciones con ellos.
24/69
Cancelación numérica
Al realizar la “resta” en el sistema de punto flotante, se puede presentar un fenómeno numérico
conocido como cancelación numérica. Por ejemplo, si a = .34567835 y b = .34567823, se
tiene que
a − b = .00000012 = .12 × 10−6 .

Sin embargo, en una A.P.F. de 7 dígitos significativos y redondeo al más cercano par se tiene

fl(a) = 0.3456784, fl(b) = 0.3456782 y fl(a − b) = .0000002 = .2 × 10−6 .

Durante la resta se han perdido dígitos significativos que garantizaban la buena exactitud y
precisión de los números, y los resultados de a − b y fl(a − b) no coinciden ni por redondeo.

25/69
Ecuación de segundo grado
Se presenta el problema de cancelación catastrófica en el cálculo de las raíces de la ecuación
polinomial cuadrática:
ax2 + bx + c = 0, a, b, c ∈ R.

cuyo discriminante cuando a 6= 0, está dada por:

∆ = b2 − 4ac .

Si ∆ < 0, entonces ambas raíces son complejas y conjugadas, y están dadas por:
p
b |∆|
x1,2 = − ± i.
2a 2a

Si ∆ = 0, entonces ambas raíces son reales e iguales, y están dadas por:

x1,2 = −b/2a .

Si ∆ > 0, entonces ambas raíces son reales y distintas, y se pueden calcular con dos métodos
diferentes:
26/69
Método 1. Aplicando la fórmula clásica:

−b ± ∆
x1,2 = .
2a
Método 2. En el método 1, no se toma en cuenta el problema de la cancelación numérica
en el cálculo de las raíces. Para evitar dicho problema, se aplican las fórmulas de Vieta de la
siguiente forma:
a) Si b > 0, se calculan: √
−b − ∆
x1 = ,
2a
y
c 2c
x2 = ≡− √ .
ax1 b+ ∆
b) Si b < 0, se calculan: √
−b + ∆
x1 = ,
2a
y
c 2c
x2 = ≡ √ .
ax1 −b + ∆
El método 1 es numéricamente inestable, mientras que el método 2 es numéricamente estable.
27/69
Sumas
Análisis de estabilidad numérica
Problema 6.1. Para a1 , a2 , . . . , an en R, calcular
Xn
S= ak .
k=1
Algoritmo 6.1. El algoritmo estándar para calcular la suma del problema 6.1 está dado
por:
sum ← 0.0
Para k = 1 : n, hacer
sum ← sum + ak
Terminar.
Lema 6.1. Si ak ∈ fl (β, t, L, U ), k = 1 : n, entonces
n n n
!
X X Y
fl ak = ak ∗ (1 + εj )
k=1 k=1 j=k

donde |εj | ≤ u, j = 1 : n, ε1 = 0.
28/69
Demostración. Inducción sobre n.
Para n = 2 se tiene que

fl(a1 + a2 ) = (a1 + a2 )(1 + ε2 ) = a1 (1 + ε1 )(1 + ε2 ) + a2 (1 + ε2 )

con ε1 ≡ 0 y |ε2 | ≤ u.
Se supone cierta la hipótesis de inducción para n > 2, y se probará la igualdad para n + 1.
n+1 n n
! ! ! ! !
X X X
fl ak =: fl fl ak + an+1 = fl ak + an+1 (1 + εn+1 )
k=1 k=1 k=1
n
!
X
= fl ak (1 + εn+1 ) + an+1 (1 + εn+1 )
k=1
 
n
X n
Y
=  ak ∗ (1 + εj ) (1 + εn+1 ) + an+1 (1 + εn+1 )
k=1 j=k
n+1
X n+1
Y
= ak ∗ (1 + εj ), ε1 = 0, |εj | ≤ u, j = 2 : n + 1 .
k=1 j=k

29/69
Lema 6.2. Sea n entero positivo tal que nu < 0.01 y 0 < |εj | ≤ u para j = 1 : n.
n
Y
Si (1 + εj ) = 1 + δn , entonces |δn | ≤ 1.01nu.
j=1

Demostración. Nótese que al desarrollar el producto, resulta que


n
X X X
δn = εj + εi εj + εi εj εk + · · · + ε1 ε2 · · · εn .
j=1 i6=j i6=j6=k

Así que
     
n n n
|δn | ≤ nu +   u2 +   u3 + · · · +   un
2 3 n
n(n − 1) 2 n(n − 1)(n − 2) 3 n(n − 1)(n − 2)(n − 3) 4
= nu + u + u + u + · · · + un
2! 3! 4!
.01 (.01)2 (.01)3 (.01)n−1
 
< nu + nu + + + ··· +
2! 3! 4! n!
 
1 1 1 1
= nu + nu + + + ··· +
200 60 000 24 000 000 n! × 102(n−1)
30/69

= nu + nu(0.005 + 0.00001666 · · · + 0.000000041666 · · · + · · · )

= nu + nu(0.00501670833 · · · ) ≤ 1.01nu .

Teorema 6.1 (Análisis de error prospectivo). Si ak ∈ fl (β, t, L, U ), k = 1 : n, y si


nu < 0.01, entonces

n n n
!
X X X
fl ak − ak ≤ |ak | ∗ |δn−k+1 | , (5)


k=1 k=1 k=1

con |δj | ≤ 1.01ju, j = 1 : n − 1 y δn = δn−1 .

Demostración. Por los lemas 6.1 y 6.2 :


n n n
!
X X Y
fl ak = ak ∗ (1 + εj ) , |εj | ≤ u , ε1 ≡ 0
k=1 k=1 j=k
n
X n
X n
X
= ak ∗ (1 + δn−k+1 ) = ak + ak ∗ δn−k+1 ,
k=1 k=1 k=1

de donde se sigue la desigualdad (5).


31/69
Por otro lado
n
Y n
Y
1 + δn = (1 + εj ) = (1 + εj ) = 1 + δn−1
j=1 j=2

de donde δn = δn−1 y |δn−1 | ≤ 1.01(n − 1)u .


Para k = 3 : n, se tiene que
n
Y
(1 + εj ) = 1 + δn−k+1 , con |δn−k+1 | ≤ 1.01(n − k + 1)u .
j=k

Observación 6.1. Del teorema 6.1 se sigue que



n n n
!
X X X
fl ak − ak ≤ |a1 | ∗ |δn−1 | + |ak | ∗ |δn−k+1 |


k=1 k=1 k=2
n
X
≤ |a1 | ∗ 1.01(n − 1)u + |ak | ∗ 1.01(n − k + 1)u
k=2
n
!
X
≤ |ak | ∗ 1.01(n − 1)u . (6)
k=1
32/69
A). Así que cuando
Xn n
X
ak << |ak | ,



k=1 k=1

el lado derecho de (6) no necesariamente es pequeña. Por lo que no se garantiza la


estabilidad del Algoritmo 6.1 si en la sumatoria hay términos positivos y negativos.
B). Si ak > 0, k = 1 : n, entonces de (6) se sigue que
,
n n n
!
X X
X
fl ak − ak ak ≤ 1.01(n − 1)u . (7)



k=1 k=1 k=1

Por lo tanto, la suma de números positivos hecha en orden natural por el algoritmo
6.1 es numéricamente 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 (7) sigue siendo válida, así que el algoritmo 6.1 también es
numéricamente estable, para este caso.
33/69
Teorema 6.2 (Análisis de error retrospectivo). Si ak ∈ fl (β, t, L, U ), k = 1 : n, y si
nu < 0.01, entonces
n n
!
X X
fl ak = ak ,
b
k=1 k=1

ak = ak (1 + δn−k+1 ), |δj | ≤ 1.01ju, j = 1 : n − 1, δn = δn−1 .


donde b

Demostración. Se sigue de los lemas 6.1 y 6.2.


Observación 6.2. Del teorema 6.2 o 6.1, se sigue que

n n
!
X X
fl ak − ak ≤ |a1 | |δn−1 | + |a2 | |δn−1 | + |a3 | |δn−2 | + · · · + |an | |δ1 |


k=1 k=1
≤ 1.01u [(n − 1)|a1 | + (n − 1)|a2 | + (n − 2)|a3 | + · · · +
2|an−1 | + |an | ].

Nótese que el error por redondeo se minimiza si

|a1 | ≤ |a2 | ≤ · · · ≤ |an | .

A). En el caso de suma de números positivos, el error por redondeo se minimiza si se


ordenan primero los números de menor a mayor.
34/69
B). En el caso de suma de números negativos, el error por redondeo se minimiza si se
ordenan primero los números de mayor a menor.

Lo anterior sugiere construir algoritmos más efectivos que el algoritmo estándar 6.1 para la
suma de n números arbitrarios. Investiga sobre el algoritmo “divide y vencerás”.
Ejemplo 6.1. Calcula la suma en orden creciente y decreciente en el sistema fl(10, 4, −9, 9)
con redondeo al par más cercano, de los siguientes números: a1 = 1.234 × 101 , a2 =
3.453 × 100 , a3 = 3.441 × 10−2 , a4 = 4.667 × 10−3 y a5 = 9.876 × 10−4 .

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


35/69
Algunas aplicaciones
Algunos ejemplos en donde se requiere el cálculo de una suma son:

1. Cálculo de ex . Usando la serie de Taylor

x x2 x3
e =1+x+ + + ···
2! 3!
Para x < 0, la serie de Taylor es alternante, por lo que puede haber resultados desastrosos
por cancelación numérica.

2. Cálculo 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
n
X
xT y = xk yk . (8)
k=1

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


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

3. Cálculo de la media y de la desviación estándar.


La media de n números reales x1 , x2 , . . . , xn , está definida por:
n
1X
x= xk ,
n
k=1

y la desviación estándar (varianza) está definida por


" n
#1/2
1 X
σ= (xk − x)2 , (9)
n−1
k=1

conocido como fórmula de dos pasos (uno para calcular la media y la otra para la desviación
estándar). Para una mejor eficiencia, se puede usar la fórmula equivalente de un solo paso
" n
!#1/2
1 X
σ= x2k − nx 2 . (10)
n−1
k=1
37/69
4. Método de sustitución prospectiva. Un sistema triangular inferior está dada por

`11 x1 = c1
`21 x1 + `22 x2 = c2
(11)
··· ··· ··· ···
`n1 x1 + `n2 x2 + · · · + `nn xn = cn

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

La solución del sistema triangular inferior (11) se obtiene mediante el método de sustitución
prospectiva:
Pk−1
c1 ck − i=1 `ki xi
x1 = , xk = , `kk 6= 0, k = 2 : n .
`11 `kk

38/69
5. Método de sustitución 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 solución del sistema triangular superior (12) se obtiene mediante el método de sustitu-
ción retrospectiva:
Pn
dn dk − i=k+1 rki xi
xn = , xk = , rkk 6= 0, k = n − 1 : −1 : 1 .
rnn rkk

39/69
Análisis de estabilidad numérica en el cálculo de ex
Se considera el valor exacto de ex dado por el polinomio de Taylor
x2
x xn
y =e =1+x+ + ··· + , n = n(x) ,
2! n!

y se hará el análisis al realizar la suma con el algoritmo 6.1.


Bajo el supuesto de que cada xk /k! son bien calculados y que nu < 0.01, se sigue del lema
6.1 y lema 6.2 que
n
X xk
yb = fl(y) = (1 + δn−k+1 ) , con |δj | ≤ 1.01ju, j = 1 : n, y δn+1 = δn .
k!
k=0

Así que
n n
X |x|k X |x|k
|b
y − y| ≤ |δn−k+1 | ≤ 1.01(nu) = 1.01(nu)e|x| . (13)
k! k!
k=0 k=0

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


|b
y − y|
≤ 1.01nu .
|y|
40/69
Bajo el supuesto de que x es capturado a precisión de la máquina, el número de condición del
problema se puede definir en este caso como κ =: 1.0. Por lo que el método de la serie de
Taylor es numéricamente estable para x ≥ 0.
Si x < 0, entonces de (13):
|b
y − y|
≤ 1.01(nu) e−2x ,
|y|

y nuevamente bajo el supuesto de que x es capturado a precisión de la máquina:

κ =: e−2x > 1 .

Así que para x << −1, el método de la serie de Taylor es numéricamente inestable.

41/69
Análisis de primer orden de la sensibilidad
numérica
Símbolos de Landau
Sean f, g : D ⊆ R → R, donde g(x) 6= 0 para x ∈ D.

1. Se dirá que f (x) = O(g(x)) cuando x → x0 si existe una constante C > 0 y δ > 0 tal
que
f (x)
g(x) ≤ C

para x ∈ D con x 6= x0 y |x − x0 | < δ.

2. Se dirá que f (x) = o(g(x)) cuando x → x0 si para cualquier constante C > 0 existe
δ > 0 tal que
f (x)
g(x) ≤ C

para x ∈ D con x 6= x0 y |x − x0 | < δ.


42/69
Observación 7.1. Algunas propiedades de los símbolos de Landau.

A). f (x) = O(f (x)).

B). f (x) = o(g(x)) ⇒ f (x) = O(g(x)).

C). f (x) = K · O(g(x)) para alguna K ∈ R ⇒ f (x) = O(g(x)).

D). f (x) = O(g1 (x)) y g1 (x) = O(g2 (x)) ⇒ f (x) = O(g2 (x)).

E). f1 (x) = O(g1 (x)) y f2 (x) = O(g2 (x)) ⇒ f1 (x) · f2 (x) = O(g1 (x) · g2 (x)).

F ). f (x) = O(g1 (x) · g2 (x)) ⇒ f (x) = g1 (x) · O(g2 (x)).

Se tienen propiedades análogas (C) − (F ) para el símbolo “o”.

Demostración. Probarlos de ejercicio.

Algunos ejemplos:

x2 x4
1). f (x) = + ⇒ f (x) = O(x2 ) cuando x → 0.
2 24
x2 x4
2). f (x) = + ⇒ f (x) = o(x) cuando x → 0.
2 24
43/69
1 3 1 2 5
3). f (n) = n + n − n ⇒ f (n) = O(n3 ) cuando n → ∞.
3 2 6

Análisis de primer orden


Lema 7.1. Si x = (x1 , x2 , . . . , xn ) ∈ Rn , entonces

kxk∞ = max{|x1 |, |x2 |, . . . , |xn |} ,

es una norma sobre Rn .


Teorema 7.1. Si f : D ⊆ Rn → R es diferenciable en x ∈ D, D abierto en Rn , entonces
el error prospectivo en la evaluación de y = f (x) está dado por
n
X ∂f
∆y =: yb − y ≡ f (x + δx) − f (x) = (x) δxk + ψ(δx) , (14)
∂xk
k=1

donde
ψ(δx)
−→ 0 cuando δx → 0 ,
kδxk∞

δx = (δx1 , δx2 , . . . , δxn ), δxk ≡ ∆xk =: x


bk − xk , k = 1 : n.
44/69
Demostración. Se sigue de la fórmula de Taylor de primer orden (Marsden y Tromba, 1991
[5]).

El análisis del error prospectivo dada por la fórmula (14), se llama análisis de error de primer
orden para el problema y = f (x).
Ejemplo 7.1. Hacer el análisis de sensibilidad numérica del problema de calcular:
a
z= , a 6= 0 , b 6= 0 .
b

Solución.
∂z ∂z
∆z = δa + δb + ψ(δx) , δx = (δa, δb)
∂a ∂b
δa a
= − 2 δb + ψ(δx)
b b
 
a δa δb b
= − + ψ(δx) ,
b a b a

de donde
∆z δa δb b
= − + ψ(δx),
z a b a
45/69
y
∆z δa δb b
z ≤ a + b + a |ψ(δx)| .

Así que  
∆z
≤ 2 max δa ,
δb
+ ψ ∗ (δx) ,


z a b

donde


b b 2
 ∗ 2

ψ (δx) = |ψ(δx)| = O kδxk∞ , lo que implica que ψ (δx) = O kδxk∞ .

a a

Si además, |δa| ≤ ε|a| y |δb| ≤ ε|b| con 0 < ε  1, entonces



∆z
≤ κ ε + O ε2 ,


z

donde κ ≤ 2 es el número de condición del problema.


Por lo tanto, el problema es numéricamente bien condicionado.

46/69
Ejercicios
Representación de números reales en bases arbitrarias
1. ¿Qué problema práctico dio origen a los números racionales y reales?
2. Convertir los números siguientes en base dada a otra indicada.
A). (0.25)10 = ( ? )2 , B). (0.30)10 = ( ? )2 , C). (0.30)10 = ( ? )3 , D). (0.666 · · · )10 =
( ? )3 ¿Todo número decimal finito es binario finito?
3. Escribe los siguientes números binarios en números decimales en su forma estandarizada:
−101.1111 , 111.010010001 y −0.00001011 011 .
4. Demuestra que la representación β−cimal estandarizada de todo número racional es un
número mixto periódico, es decir, de la forma:

±(0.a1 a2 · · · ak b1 b2 ...bs ) × β p

Sugerencia: Use el algoritmo de la división de Euclides.



5. ¿Es la representación β−cimal de 2 mixta periódica?
6. ¿Es el número a = (0.010010001 · · · )3 un número racional?
47/69
7. Si a = ±.b1 b2 · · · bt × β p , 0 < b1 < β, 0 ≤ bk < β para k = 2 : t, p ∈ Z, demuestra que
a ∈ Q.
1
8. Sea β ∈ N, β > 1. Demuestra que el número a = ∞
P
k=1 k! es irracional.
β
Sistemas de punto flotante
1. Pruebe que la representación normalizada de un número positivo de punto flotante es
única.
2. Indica cuáles de los números siguientes no pertenecen a fl(2, 4, −2, 2):

−0.1011×21 , −0.1101×2−2 , 1.101×22 , 0.2121×22 , 0.01101×2−2 y −0.7615×22 .

3. Considera al conjunto de números de punto flotante fl(β, t, L, U ).


A). ¿Cuántos elementos tiene este sistema?
B). ¿Cuántos de ellos son enteros?
D). ¿Cuántos de ellos son irracionales?
4. Verifique que los números subnormales positivos más pequeño y más grande que se pueden
representar en un sistema binario son:
 
smin = 2L−t y smax = 1 − 2−(t−1) 2L−1
48/69
5. ¿Cuántos números subnormales distintos de cero hay en un sistema binario?
6. Considera a los números de punto flotante fl(10, 7, −49, 48).
A). Halla el elemento α positivo más chico.
B). Halla el elemento ω positivo más grande.
C). ¿Cuál es el espaciamiento entre los dos números consecutivos más chicos?
D). ¿Cuál es el espaciamiento entre los dos números consecutivos más grandes?
Redondeo
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 números punto flotante fl(β, t, L, U ) con unidad de redondeo u.
A). Si α > 0 es el elemento más 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 estándares de IEEE 32 bits, u ∈ fl(2, 24, −126, 127)?
3. El algoritmo siguiente es debido a Moler y sirve para el cálculo de la unidad de redondeo
u de la máquina:
a ← 4.0/3.0
b ← a − 1.0 49/69
c←b+b+b
u ← |c − 1.0|
A). Escriba un programa en FORTRAN que implante este algoritmo en simple precisión, y
ejecútalo en tu máquina.
B). Escriba otro programa en FORTRAN que implante este algoritmo en doble precisión,
y ejecútalo en tu máquina.
C). Compara tus resultados con los del ejemplo 3.2. Explica.

4. LA SUBROUTINE MACHAR EN FORTRAN.


A). Obtenga la subroutina MACHAR.FOR.
B). Calcula la base β, precisión t, exponentes L y U , así como los números xmin y xmax ,
y la unidad de redondeo u de tu máquina en simple precisión usando el programa
MACHAR.FOR
C). Calcula de nuevo la base β, precisión t, L y U , así como los números xmin y xmax ,
y la unidad de redondeo u de tu máquina en doble precisión usando el programa
MACHAR.FOR
D). Compara tus resultados con los resultados del ejemplo 3.2 y del ejercicio 3. Explica.
50/69
Operaciones básicas de punto flotante

1. Recordando que fl(a) = a(1 + δ), para algún δ con |δ| ≤ u, verifique que si:
√ 
 
1.
A). fl10 = 0.25 B). fl10 2 = 1.414214
4.
 
1.
C). fl10 = 0.3333333 D). fl10 (π) = 3.14159265359
3.
1
¿Cuánto vale δ? ¿Cuánto vale u (la unidad de redondeo)? ¿Es |δ| ≤ u?
2
2. En una aritmética de punto flotante (A.P.F.) ¿Es cierto que:

(b − (a + b)) + a = 0 ?

Sugerencia. En una A.P.F. de 7 dígitos significativos con redondeo, considera a = 0.1234567


y b = 0.4711325 × 104 . ¿Qué concluye?

3. En una A.P.F. averigua la validez de la relación: a = (a + b) − b.


Sugerencia. Considera el caso a = 0.8614 × 10−2 y b = 0.3204 en una A.P.F. de 4 dígitos
significativos con redondeo. ¿Qué concluye?

4. En una A.P.F. de 5 dígitos significativos con redondeo, halla la solución positiva más chica
51/69
de la ecuación:
fl(123.45 + a) = a .
5. En una A.P.F. de 5 dígitos significativos con redondeo, halla la solución positiva más grande
de la ecuación:
fl(123.45 + b) = 123.45 .
Cancelación numérica
1. En general se evita la cancelación numérica con el fin de obtener métodos numéricamente
estables. Sin embargo, existen casos en donde evitarla nos conduce a resultados sorpren-
dentemente absurdos. En una aritmética 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 cancelación numérica, 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. Evalúa f (x) = (1 − cos x)/x2 , para x = 1, 0.1, 0.01, . . . , 10−19 , en precisión simple y
52/69
doble. Estudia tus resultados.

4. Elabora un buen programa, usando sólo aritmética real, para el cálculo de las raíces (reales
o complejas) de la ecuación de segundo grado ax2 + bx + c = 0: 1. Sin evitar cancelación
catastrófica, y 2. Evitando cancelación catastrófica. Prueba tu programa con las ecuaciones
siguientes e imprima los resultados de cada una.

A). x2 − 4.002x + 4 = 0 D). x2 − 2x + 0.999999 = 0


B). x2 − 105 x + 4 = 0 E). x2 + 111.11x + 1.2121 = 0
C). x2 − 3.999x + 4 = 0 F ). x2 + 4 ∗ 104 x + 1 = 0

5. En el año 250 A. de C., el matemático griego Arquímedes estimó el número π como sigue.
Consideró un círculo con diámetro 1 y circunferencia π. Inscribió un cuadrado. El perímetro
del cuadrado es menor que la circunferencia, y este es una cota inferior de π. Luego,
Arquímedes consideró un octágono inscrito, un dieciseiságono, etc., cada vez duplicaba el
número de lados del polígono inscrito y obtenía una mejor aproximación de π. Usando un
polígono inscrito y un circunscrito de 96 lados, pudo mostrar que 223/71 < π < 22/7.
Existe una forma recursiva para estas estimaciones.
A). Sea pn el perímetro del polígono inscrito con 2n lados. Entonces p2 es el perímetro del
53/69

cuadrado inscrito, p2 = 2 2. En general:
q p
n
pn+1 = 2 2(1 − 1 − (pn /2n )2 ) , n ≥ 2. (15)

Calcula pn para n = 3, 4, . . . , 90, en simple presición y n = 3, 4, . . . , 550 en doble


precisión. Explica tus resultados (este problema lo sugirió Alan Cline). Esto es, esta
fórmula falla para calcular una aproximación de π ¿Por qué?
B). La fórmula (15) se puede mejorar (evitando la cancelación numérica), al tomar

pn+1 = 2n rn+1

donde
p √
rn+1 = 2(1 − 1 − (pn /2n )2 ), r3 = 2/(2 + 2) .
Muestra que
rn
rn+1 = √ , n ≥ 3. (16)
2 + 4 − rn
C). Usa la iteración (16) para calcular rn , n = 3, 4, . . . , 90, en simple presición y n =
3, 4, . . . , 550 en doble precisión (esta modificación lo propuso W. Kahan).
D). Observa que eventualmente, 4 − rn se redondeará a 4, y consecuentemente la fórmula
(16) se verá afectada también por errores de redondeo para n0 s grandes. ¿Nos debemos
preocupar por esto? 54/69
6. Considera los tres puntos (x, y) del plano:

x : 5 201 477.0 5 201 478.0 5 201 479.0


y: 99 999.0 100 000.0 100 001.0

Es obvio que hay una línea recta que mejor se ajusta a estos puntos. Para hallar la recta
b de ajuste óptimo, según el criterio de mínimo de cuadrados, se suelen usar las
y = bb + mx
populares fórmulas:
x1 y1 + x2 y2 + x3 y3 − 1/3(x1 + x2 + x3 )(y1 + y2 + y3 )
m
b = , y
(x21 + x22 + x23 ) − 1/3(x1 + x2 + x3 )2
1 m
(y1 + y2 + y3 ) − (x1 + x2 + x3 )
bb = b
3 3
A). Calcula los valores para bb y m
b en aritmética real, y a continuación el valor de y para
x = 5 201 480.0
B). Repita el inciso anterior usando para m
b la fórmula alternativa:
x1 y1 + x2 y2 + x3 y3 − 1/3(x1 + x2 + x3 )(y1 + y2 + y3 )
m
b =
(x1 − x)2 + (x2 − x)2 + (x3 − x)2
55/69
C). Haz un cuadro comparativo de tus resultados con los valores exactos:

m
b = 1, bb = −5 101 478.0 y y = 100 002.0 .

Sumas

1. En una A.P.F. de 5 decimales con redondeo, calcula el valor límite de la sucesión sn+1 =
fl(sn + a), n ≥ 0, con s0 = 0.0, para a = 1.0, 51.0, 100.0, y 555.0 ¿Cuál es tu conjetura?

2. En una A.P.F. de 3 decimales con redondeo


A). Calcula la suma de los números siguientes:
1050, 44, 3, 4, 9910, 38, 49, 48, 547 y 145
¿Cuál es el error relativo de tu resultado? ¿Cuántas cifras de tu resultado son correctas?
B). Repite el inciso anterior, pero sumando del número menor al mayor.
Comenta.

3. (Análisis de estabilidad en el cálculo de un producto)


n
Y
Sean ak ∈ R, ak 6= 0, k = 1 : n, calcular el producto: P = ak .
k=1

56/69
Algoritmo 8.1. El algoritmo estándar para calcular el producto P está dado por:
prod ← 1.0
Para k = 1 : n, hacer
prod ← prod ∗ ak
Terminar.
Demuestra que:
A). [Análisis de error retrospectivo].
n n
!
Y Y
fl ak = a1 ak (1 + εk ) , donde |εk | ≤ u, k = 2 : n
k=1 k=2
n
Y
= ak ,
b donde b
a1 = a1 , b
ak = ak (1 + εk ), k = 2 : n.
k=1

B). [Análisis de error prospectivo]. Si (n − 1)u < 0.01, entonces



n n n
!
Y Y
Y
fl ak − ak ≤ δ ak ,


k=1 k=1 k=1

donde δ = (1 + u)n−1 − 1 < 1.01(n − 1)u.


¿Cuál será el número de condición? ¿Depende el error acumulado por el redondeo del orden
57/69
de los factores ak ?
4. (Análisis de estabilidad en el cálculo del producto punto)
Sean x, y ∈ Rn . Demuestra que:
A). [Análisis de error retrospectivo]. Si nu < 0.01, entonces
n
X
fl xT y

= xk yk (1 + δk ) , |δ1 | < 1.01(nu), |δk | ≤ 1.01(n + 1 − k)u, k = 2 : n
k=1

= xT yb , donde ybk = yk (1 + δk ), k = 1 : n ,

donde xT y está definido en (8).


B). [Análisis de error prospectivo]. Si nu < 0.01, entonces
n
!
X
fl xT y − xT y ≤ 1.01(nu)

|xk | |yk | ≤ 1.01(nu)kxk2 kyk2 .
k=1

C). Concluya que


fl xT y − xT y

≤ 1.01nκu ,
|xT y|
1
donde κ := ≥ 1 , con θ el ángulo que forman los vectores x y y.
|cos θ|
58/69
Comentario. Observando que κ = +∞, para θ = π/2 radianes, y que κ = 1 para θ = 0
radianes, es natural la pregunta ¿Cuánto vale θ∗ tal que κ ≤ 10, para 0 ≤ θ ≤ θ∗ ?
5. (Análisis de estabilidad en el cálculo de la varianza)
A). Bajo el supuesto de que nu < 0.01 y fl(xk − x) = xk − x, demuestra que

| fl(S2P ) − S2P | ≤ 1.01(nu)S2P ,

donde S2P ≡ nk=1 (xk − x)2 (compare con la fórmula de dos pasos dado por (9)).
P

Escriba sus conclusiones.


B). Para la expresión popular dada por S1P ≡ nk=1 x2k − nx2 (compare con la fórmula de
P
Pn 2

un solo paso dado por (10)), y bajo el supuesto de que fl(S1P ) = fl k=1 xk − nx,
demuestra que
|fl(S1P ) − S1P |
≤ 1.01(nu)κ(S1P ) ,
|S1P |
donde
nx 2
κ(S1P ) = 1 + .
S1P
Escriba sus conclusiones.
C). Demuestra ahora que una expresión alternativa para κ(S1P ), de fácil interpretación, y
59/69
por ello de mayor importancia práctica, es
 2  2
x kxk2
< κ(S1P ) < ,
σ σ

donde σ es la desviación estándar dado por (9)-(10), y x = (x1 , x2 , ..., xn )T .


6. Una forma de evaluar ex , para x pequeña, es vía su desarrollo en serie de Taylor, en base
al segmento del algoritmo siguiente:
s ← 1.0
term ← 1.0
k←1
Hasta que |sa − s| ≤ s ? tol, hacer:
term ← x ? (term/k)
k ←k+1
write(?, ?)k, s, term
sa ← s
s ← s + term
A). El programa que se anexa está basado en el algoritmo anterior. Captura el programa y
pruébalo en tu compilador de FORTRAN para un x dado, por ejemplo, para x = −5.5.
60/69
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
61/69
IF (.NOT. (ABS(S-SA) .LE. TOL*ABS(S))) GO TO 100
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
SUBROUTINE MOLER(TOL)
REAL A,B,C
62/69
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, documéntalo y agrégale un formato adecuado de impresión, para


que imprima para x = 1.5 el siguiente esquema de resultados:

K SUMA TERM

2 1.0000000 1.5000000
3 2.5000000 1.1250000
4 3.6250000 0.5625000
5 4.1875000 0.2109375
63/69
6 4.3984380 0.0632813
7 4.4617190 0.0158203
8 4.4775390 0.0033901
9 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

X EXPO SUMA K EAPOS KAPPA EAPRIORI

1.5 0.4481689E + 01 0.4481688E + 01 13 0.0000E + 00 0.1000E + 01 0.1565E − 05

C). Ejecuta tu programa para x = ±1.5, ±5.5, ±10.5, ±15.5 y ±20.5. ¿Cuáles son los
errores relativos apriori y aposteriori, en cada caso? Comenta.
D). ¿En qué paso de la recursión se da la cancelación numérica para x = −20.5? ¿De qué
otra forma calcularías e−20.5 ? Comenta.
64/69
Análisis de primer orden de la sensibilidad numérica
1. Demuestra para la función ψ de la fórmula (14) que
ψ(δx)
lim = 0 sı́ y sólo si ψ(δx) = o(kδxk∞ ) cuando δx → 0 .
δx→0 kδxk∞

2. Demuestra que si f ∈ C 2 (D) en el teorema 7.1, entonces ψ(δx) = O(kδxk2∞ ).


Sugerencia. Aplica la fórmula de Taylor de segundo orden.
3. Desarrolla el análisis de sensibilidad numérica (usando análisis de primer orden) para el
producto de dos números reales (i.e., el análisis de sensibilidad de la función z = a · b).
Comenta.
4. Sean a, b ∈ R, a > b > 0 de órdenes distintos. Si z = a − b y

∆z = [(a + ∆a) − (b + ∆b)] − (a − b) .

A). Demuestra que  


∆z |∆a| |∆b|
z ≤ κ · max |a| , |b| ,

donde  
|a| |b| |a|
κ ≡ 2 · max , =2 ,
|z| |z| |z| 65/69
es tal que 2 < κ < 2β 2 .
B). Ahora, sean a, b ∈ R, a > b > 0 de órdenes distintos. Usando el hecho de que

fl(a − b) = (a + ∆a) − (b + ∆b), con |∆a| ≤ au y |∆b| ≤ bu ,

demuestra, si fl(a − b) ∈ fl(β, t, L, U ), que


|fl(a − b) − (a − b)|
≤ κu ,
|a − b|

donde β −(t−1) < κu < β −(t−3) , (es decir, para fines prácticos, κu ∼
= β −(t−2) ).
5. Análisis de sensibilidad numérica del problema de cálculo de raíces de una ecuación cua-
drática con respecto a los coeficientes. Sea la ecuación ax2 + bx + c = 0 con coeficientes
reales con a 6= 0 tales que b2 − 4ac > 0, y con raíces r1 y r2 (r1 6= r2 ). Usando la
aproximación del primer orden
∂r1 ∂r1 ∂r1
∆r1 = δa + δb + δc + ψ ,
∂a ∂b ∂c
con
ψ
−→ 0 cuando (δa, δb, δc) → 0 ,
max{|δa|, |δb|, |δc| }
66/69
demuestra que  
|∆r1 | |r1 | + |r2 | |δa| |δb| |δc|
≤ + + + ψ∗ ,
|r1 | |r2 − r1 | |a| |b| |c|
donde
ψ∗
−→ 0 cuando (δa, δb, δc) → 0 ,
max{|δa|, |δb|, |δc| }
y por lo tanto  
|∆r1 | |δa| |δb| |δc|
≤ κ · max , , + ψ∗ ,
|r1 | |a| |b| |c|
en donde
|r1 | + |r2 |
κ =: 3 ,
|r2 − r1 |
es el número de condición del problema del cálculo de la raíz r1 .
Observa que es el mismo número de condición del problema del cálculo de la raíz r2 .
¿Qué puedes concluir cuando r1 es muy cercano a r2 ? En particular, ¿Qué se concluye
cuando r1 = r2 ?
6. Las raíces de la ecuación x2 − 4x + 4 = 0, son r1 = r2 = 2.
A). Verifica que las raíces rb1 y rb2 de la ecuación x2 − 4x + (4 − ε) = 0, con 0 < ε  1,
√ √ √
están dadas por rb1 = 2− ε y rb2 = 2+ ε. Luego, se tiene que |b r1, 2 − 2| / |2| = 21 ε;
67/69
y en consecuencia, si ε = 10−6 , las raíces se ven perturbadas, respecto a ε, por un
factor de 103 .
B). Muestra que las raíces rb1 y rb2 de la ecuación (1 − ε)x2 − 4x + 4 = 0, con 0 < ε  1,
están dadas por √ √
2−2 ε 2+2 ε
rb1 = y rb2 = ,
1−ε 1−ε

En consecuencia, se tiene que |b r1, 2 − 2| / |2| ∼
= ε. Y por lo tanto, para ε = 10−6 las
raíces se ven perturbadas por un factor de 2·103 .
C). Repite el análisis anterior para la ecuación x2 − (4 + 2ε)x + 4 = 0, donde 0 < ε  1.
7. Si el número de condición κ(σ) para la varianza muestral de n valores observados
x1 , x2 , . . . , xn de n variables aleatorias i.i.d., se define como
2 kxk2
κ(σ) =: √ , (17)
n − 1σ
en donde x = (x1 , x2 , . . . , xn )T y σ definido por (9), demuestra que

κ(σ) ≥ 2 .

Compara la definición de κ(σ) con los resultados obtenidos en el ejercicio 5(C) de la sección
anterior.
68/69
Referencias
[1] Hämmerlin, G., Hoffmann, K-H.: Numerical Mathematics. Springer-Verlag, 1991.

[2] Buchanan, J.L., Turner, P.R.: Numerical Methodos and Analysis. McGraw-Hill, Inc.,
1992.

[3] Stoer, J., Bulirsch, R.: Introduction to Numerical Analysis. Springer-verlag, 1993.

[4] Overton, M.L.: Numerical Computing with IEEE Floating Point Arithmetic. SIAM, 2001.

[5] Marsden, J. E. y Tromba, A. J. Cálculo Vectorial. Addison-Wesley Iberoamericana, 3a


Edición, 1991.

[6] Eldén, L., Wittmeyer-Koch, L.: Numerical Analysis An Introduction. Academic Press,
Inc., 1990.

[7] Heath, M.T.: Scientific Computing: An Introductory Survey. McGraw-Hill, N.Y., 2nd
Edition, 2002.

69/69

Das könnte Ihnen auch gefallen