Sei sulla pagina 1di 20

M`

etodes Num`
erics
1

An
alisis del error

En esta asignatura se presentan algoritmos y estrategias para el calculo de soluciones


aproximadas z a soluciones exactas z de algunos problemas matematicos. La no coincidencia de los valores z y z se conoce como error.
El objetivo de este tema es m
ultiple. Por una parte, dotar de las herramientas de
analisis para un tratamiento riguroso del error producido por la manipulacion mecanica de
n
umeros. Por otra, introducir algunos conceptos basicos sobre algortmia. De entre estos
conceptos destacamos los referentes a su comportamiento frente al error (estabilidad y
el condicionamiento) y los referentes a su eficacia (complejidad y orden).
Consideraremos los siguientes apartados.
Error absoluto y error relativo
Analizamos las diferentes fuentes del error. Definimos error de redondeo y error de
truncamiento. Repasamos los conceptos de error absoluto y error relativo.
n de punto flotante de los nu
meros reales y aritm
Representacio
etica
en el ordenador
Para la comprension y el control del error producido por la manipulacion mecanica
de n
umeros es necesario conocer el modo en el que las maquinas representan, almacenan y operan con los n
umeros. En este apartado repasamos la representacion
de n
umeros en diferentes bases; introducimos el formato de representacion flotante
y los estandares IEEE simple y doble precision; calculamos los errores absoluto y
relativo (precision de la maquina) de estas representaciones; y calculamos el error
de truncamiento en la aritmetica del ordenador.
n del error de redondeo
Errores de redondeo. Propagacio
Estudiamos las formulas de propagacion del error a lo largo de una expresion
matematica con uno o varios datos. Calculamos la propagacion del error de redondeo a lo largo de las operaciones algebraicas.
M
etodos estables e inestables. Problemas mal condicionados
Basandonos en su comportamiento ante la propagacion del error, clasificamos los
metodos numericos en estables e inestables. Definimos y damos ejemplos de problemas mal condicionados.
todo y complejidad algortmica
Orden de convergencia de un me
Introducimos el concepto de complejidad algortmica a traves del n
umero de operaciones (multiplicaciones y divisiones) necesarias para su ejecucion. Para los
metodos que proporcionan una sucesion de valores que convergen a la solucion
correcta (metodos iterativos) introducimos el concepto de orden de convergencia
y constante asintotica del error.

1.1

Error absoluto y error relativo

Como hemos comentado, en esta asignatura se presentan algoritmos y estrategias para


el calculo de soluciones aproximadas z a soluciones exactas z de algunos problemas
matematicos. La no coincidencia de los valores z y z se conoce como error. La medida del error se caracteriza por dos valores:
Error absoluto:

E = |z z|

Error relativo: Si z 6= 0

|z z|
|z|

Ejemplo 1
z
z
E

1
1.1 0.1 0.1
10 10.1 0.1 0.01
100 100.1 0.1 0.001


Ejemplo 2 Los errores absoluto y relativo cometidos al aproximar por 3.141516 son:

(%i1) E:abs(float(%pi-3.141516));

(%o1)

7.6653589792918808 105

(%i2) epsilon:E/abs(float(%pi));

(%o2)

2.4399595442562964 105


Una parte esencial en el estudio de los diferentes metodos sera el calculo de una cota
del error que se comete al aplicar el metodo. Este error puede descomponerse en tres
partes cada una de ellas originada por una causa diferente.
Errores en los datos: Provienen del error en la medida de los datos necesarios para
un problema. Pese a que algunas veces su contribucion al error total es la mas
importante, su naturaleza es mas fsica que matematica por lo que no se tendran en
cuenta.
2

Errores de redondeo: Los metodos de resolucion que estudiaremos se basan en la


manipulacion mecanica de n
umeros, y esta a su vez en el almacenamiento de los
n
umeros en las maquinas de calculo. La diferencia entre la aritmetica infinita de
los calculos teoricos y la aritmetica finita de los calculos mecanicos da lugar a los
errores de redondeo. En el siguiente apartado analizamos la aritmetica finita.
Errores de truncamiento: Las estrategias desarrolladas para la resolucion numerica
de problemas suelen contar con un n
umero infinito de requisitos (nodos en la integracion de Simpson) i/o pasos (calculo de ceros por el metodo de Newton). La
imposibilidad de satisfacer todos los requisitos i/o realizar todos los pasos da origen
a estos errores. El analisis de este error es especfico del algoritmo y lo realizaremos
siempre tras la presentacion de un algoritmo

1.2

Aritm
etica en los ordenadores

La totalidad de los algoritmos que se estudian en esta asignatura estan dise


nados para
ser realizados por maquinas. Veamos, por tanto, el proceso de manipulacion mecanica de
n
umeros. El primero de estos procesos consiste en el almacenamiento del n
umero en la
maquina.
1.2.1

Representaci
on de n
umeros

El problema consiste en representar una cantidad infinita de valores mediante un conjunto


finito de simbolos dgitos . El sistema de representacion usual es la representaci
on
decimal de un n
umero.
El conjunto de dgitos: {0, 1, . . . , 9}.
El valor de un dgito depende de la posicion que ocupa en la expresion, el sistema
es posicional.
Otros sistemas de representacion utilizan un conjunto mas reducido de dgitos, por ejemplo
el binario. En general la representacion en una base b N, con b 1, de un n
umero
x R, consiste en una expresion de la forma (ae ae1 . . . a1 a0 .a1 . . . ad )(b) , tal que
d
e
X
X
k
ak bk ),
ak b ) + (
x=(
k=1

k=0

con 0 ai < b y d i e. Al primero de los sumando se le conoce como parte entera


y al segundo como parte fracionaria. La base usual en la representacion de n
umeros en
ordenadores es la base 2. Cuando la base es 10, no se suele indicar en la representacion
del n
umero.
Ejemplo 3 Representar en base 2 los n
umeros 7, 0.34, 19.03125.

Utilizando el algoritmo de la division


7 |2
1 3 |2
1 1
por tanto, 7 = 1 + 3 2 = 1 + (1 + 1 2) 2 = 1 + 1 2 + 1 22 = (111)(2)

Sea (ae ae1 . . . a1 a0 .a1 . . . ad )(2) la representacion binaria de x = 0.34.


Puesto que la parte entera decimal es 0, entonces la parte entera binaria es tambien 0. Por tanto la representacion binaria tiene u
nicamente
parte fracionaria, x = (0.a1 . . . ad )(2) . Multiplicando por 2 a ambos lados de la igualdad obtenemos 2 xe = (a1 .a2 . . . ad )(2) . Separando parte
entera y parte fraccionaria obtenemos a1 y (0.a2 . . . ad )(2) respectivamente. Iterando el proceso podemos conseguir todos los digitos binarios
decimales que deseemos. As:
0.34 2 =
0.68 2 =
0.36 2 =
0.72 2 =

0.68
1.36
0.72
1.44

0.44 2 =
0.44 2 =
0.88 2 =
0.76 2 =

0.88
0.88
1.76
1.52

En consecuencia 0.34 = (0.0101011 . . .)(2) .


En este caso tratamos la parte entera 19 y la parte fraccionaria 0.03125
del n
umero por separado. De este modo:
19 |2
1 9 |2
1 4 |2
0 2 |2
0 1
y por tanto 19 = (10011)2. Por otra parte
0.03125 2 =
0.0625 2 =
0.125 2 =
0.25 2 =
0.50 2 =

0.0625
0.125
0.25
0.50
1.0

Lo que implica que 0.03125 = (0.00001)(2) . Y en consecuencia 19.03125 =


(10011.00001)(2) .


1.2.2

Almacenamiento

La representacion binaria es suficiente para almacenar n


umeros, sin embargo su artimetica
es compleja para una maquina. As, se utiliza la representacion en coma flotante para
4


almacenar cantidades en una maquina. Esta
consiste en aquella representacion en base b
de un n
umero de forma que su parte entera quede nula, junto con el signo; esto es
x = s(0.d1 d2 . . . dm )bq ,
con b1 d1 < 1 y qmin q qmax . A la expresion (0.d1 d2 . . . dm ) se le denomina
mantisa y al n
umero q se le denomina exponente.
Existen dos estandares de almacenamiento denominados IEEE simple y IEEE doble.
El la siguiente tambla se recogen los valores de los parametros utilizados en cada uno de
ellos.
IEEE simple
IEEE doble

b
2
2

m
qmin
qmax n. bits
24 125 128
32.
53 1021 1024
64.

Los 32 bits del formato IEEE simple se utilizan seg


un:
1 bit para el signo 0 si x 0 y 1 si x < 0,

8 bits para el exponente. Esto permite almacenar 256 exponentes diferentes.


Utilizamos 125 de ellos para exponentes negativos, 128 para exponentes positivos y 1 para el exponente nulo. Quedan dos exponentes que se utilizan para
marcar el Underflow (todos los bits a 0) y el Overflow (todos los bits a 1).
Por tanto almacenamos q + 126.
23 bits para la mantisa. Notar que el primer exponente no es necesario almacenarlo pues siempre sera 1.

Los 64 bits del formato IEEE doble se utilizan seg


un:
1 bit para el signo 0 si x 0 y 1 si x < 0,

11 bits para el exponente. Esto permite almacenar 2048 exponentes diferentes.


Utilizamos 1021 de ellos para exponentes negativos, 1024 para exponentes positivos y 1 para el exponente nulo. Quedan dos exponentes que se utilizan para
marcar el Underflow (todos los bits a 0) y el Overflow (todos los bits a 1).
Por tanto almacenamos q + 1022.
52 bits para la mantisa. De nuevo el primer exponente no es necesario almacenarlo pues siempre sera 1.

Ejemplo 4 Representar los n


umeros 3.141592654 y 0.1 en formato IEEE, en simple y
en doble precision.
En primer lugar expresamos el n
umero en formato flotante x = m 2q con 1/2
m < 1, esto es x = 0.78539816 22. De donde la mantisa es m = 0.78539816 y
el exponente q = 2. Mantisa m y exponentes q+126 o q+1022 se almacenan en
binario, por lo que hemos de encontrar la expresion en esa base de ambos. Concluimos que 0.78539816 = (0.110010010000111111011010100100111000100111100000000100110010010110100001101001010010101111001001000001101)(2),
q + 126 = (10000000)(2) y q + 1022 = (10000000000)(2). Por tanto
0
10000000
10010010000111111011010
0 10000000000 1001001000011111101101010010011100010011110000000010
5

Por su parte, si x = 0.1, entonces x = 0.8 23 de donde m = 0.8 y


q = 3. Expresando la mantisa y los exponentes q + 126 = 123 y q + 1022 =
1019 en binario, obtenemos que m = (0.1100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011)(2) , q + 126 = (01111011)(2) y q + 1022 = (01111111011)(2). De donde
1
01111011
10011001100110011001100
1 01111111011 1001100110011001100110011001100110011001100110011001

Consecuencias del almacenamiento:
La cantidad de n
umeros que se pueden almacenar en un ordenador es finita. En el
estandar IEEE de simple precision, cuantos?
Contamos u
nicamente los n
umeros positivos. Bastara multiplicar por 2
para obtener todos. En primer lugar, tenemos 223 mantisas diferentes. Por
cada mantisa tenemos 125 + 128 = 253 exponentes posibles. Por tanto,
tenemos un total de 223 253 = 2.122.317.824 que a
un siendo muchos
no son tantos, puesto que con ellos no podramos numerar a todos los
habitantes de China e India juntos.

La distribucion de los n
umeros no es homogenea. Cuantos n
umeros reconoce el
ordenador en el intervalo [bn , bn+1 ]?
En el caso IEEE simple precision tenemos que estos n
umeros son los que
n
se expresan en la forma x = mb . En consecuencia el ordenador reconoce
223 = 8.388.608 n
umeros en cada uno de esos intervalos. Notemos que
eso significa que entre [1, 2] el ordenador es capaz de reconocer unos 8
millones de n
umeros. Del mismo modo en [1/4, 1/2] el ordenador reconoce
8 millones de n
umeros. Dado que cada vez la longitud del intervalo es mas
peque
na, la densidad es mayor. Sin embargo, en el intervalo [223 , 224 ] esos 8
millones de n
umeros nos permite u
nicamente numerar a los enteros. Deste
modo, un ordenador que almacen los n
umeros en formato IEEE de simple
precision no identificara correctamente ning
un n
umero racional mayor de
9 millones. Finalmente la densidad de n
umeros en el intervalo [2100 , 2101 ]
es tal que la distancia entre dos n
umeros consecutivos que es capaz de
identificar el ordenador en ese intervalo es mayor que 275 3.771022 . 
Al almacenar un n
umero z en un ordenador que utiliza el formato IEEE lo que
realmente almacenamos es una aproximacion z. Cual es el error absoluto y relativo
maximo que se comete en el ejemplo anterior?
Expresando z en formato flotante tenemos que z = m 2q con 21
m < 1. Sin embargo la representacion de z en el ordenador es z = m
2q ,
donde m
es la matisa m truncada a 24 o 52 dgitos dependiendo de si la
precision es simple o doble.
6

En simple precision el error absoluto es E = |z z| = |m m|2


q.
Como la mantisa guardada m
difiere de m a partir del dgito 25, entonces
24
|m m|
< 2 . Por tanto el error absoluto en simple o doble precision es
respectivamente
Es 2q24 y Ed 2q53 .
El error relativo en ambos casos se obtiene de dividir el valor abosoluto
por |z|, de donde
s

253
224
223 1.2e 7 y d
252 2.3e 16.
|m|
|m|


Veamos ahora como estudiar el error absoluto y relativo maximo en el caso general de
un ordenador de mantisa de m dgitos, exponente de e dgitos y base b. Al error relativo
maximo se le denomina precisi
on de la m
aquina y usualmente se denota por .
Sea z = p bq con p = 0.a1 a2 . . . am am+1 . . . . Su representacion flotante truncada a m
dgitos de mantisa es z = p bq con p = 0.a1 a2 . . . am . Los errores absoluto y relativo
por truncamiento son por tanto
E = |z z| = |p p|bq = |0.am+1 . . . |bqm < bqm
=

|z z|
bqm
<
< b1m
|z|
|0.a1 a2 . . . am am+1 . . . , |bq

En el caso de que la mantisa se reduzca por redondeo del dgito m, la representacion de


z es z = pbq con p = p si am+1 < b/2 o con p = p + bm /2 si am+1 b/2. Por tanto, los
errores absoluto y relativo por redondeo son
(
|0.am+1 . . . |bqm
si am+1 < b/2
1
q

1 qm
E = |z z| = |p p|b =
< bqm
|0.am+1 . . . |b
si b/2 am+1 < b
2
2
1 qm
b
1
|z z|
2
<
< b1m
=
q
|z|
|0.a1 a2 . . . am am+1 . . . , |b
2

Diremos que una aproximacion z a un valor z tiene t decimales correctos si el error


absoluto E es menor que 12 10t . Diremos que la aproximacion tiene t dgitos significativos si el error relativo es menor que 12 101t .
Problema 1 La representacio normalitzada bin`aria en punt flotant dun nombre es:
x = (1)s (1 + m)2e127 , per 0 m < 1, 0 < e < 255.
Segons lest`andard IEEE-754, en precisio simple, els 32 bits es distribueixen en 1 bit de
signe, 8 bits per lexponent i els 23 restants per la mantissa.
(a) Representeu els valors reals 1, 1.2 i 0.8 segons aquesta codificacio.
(b) Doneu els valors reals positius m`es gran i m`es petit que podem representar.
7

(c) Considerant larrodoniment en la mantissa, quina es la fita de lerror relatiu corresponent a aquesta representacio?
a) Como 1 = (1)0 (1 + 0) 20 , se sigue que m = 0 = (0)(2) y e = 127 =
(0111 1111)(2). En consecuencia, el n
umero 1 se almacena en la maquina seg
un
0 0111 1111 0000 0000 0000 0000 0000 000
Por su parte 1.2 = (1)0 (1 + 0.2)20 . Luego m = 0.2 = (0.0011 0011 00110011 0011 001)(2) y e = 127 = (0111 1111)(2). Asi
0

0111 1111 00110011001100110011001

Consideramos ahora 0.8 = (1.6)21 = (1)0 (1 + 0.6)21 . De aqu m =


0.6 = (0.1001 1001 1001 1001 1001 100)(2) y e = 127 = (0111 1111)(2) y por
tanto
0 0111 1111 1001 1001 1001 1001 1001 100
b) Sea X el mayor n
umero real positivo que puede almacenarse en esta
maquina. Entonces X = (1)0 (1 + m)2e127 donde m es la mayor mantisa
que puede almacenarse. Por tanto
m = (1111 1111 1111 1111 1111 111)(2) =

23
X
k=1

2k = 1 223 .

Ademas, el exponente e tamben es el mayor que podemos almacenar e = 254.


Por tanto X = (2 223 )2254127 3.4E38.
Sea Y = (1)0 (1 + m)2e127 el menor n
umero positivo que puede almacenarse. Entonces m = 0 y e = 1 son la menor mantisa y el menor exponente
que pueden almacenarse. De donde Y = 2126 1.2E 38.
c) Dado un n
umero x = (1)s (1 + m)2e127 sea x su representacion en la
maquina. Entonces x = (1)s (1 + m)2
e127 con 0 m
< 1 i 0 < e < 127.
El error relativo cometido al aproximar x por x es
=

|x x|
|m m|

=
|x|
|m|

que coincide con el error relativo al aproximar m por m


que seg
un el enunciado
se obtiene por redondeo a 23 dguitos. Por tanto
=

|m m|

1
< 2123 = 223 1.2E 7.
|m|
2


1.2.3

Operaciones b
asicas

Como consecuencia del error en el almacenamiento, al finalizar una operacion en punto


flotante tambien cometemos un error. Por ejemplo, al multiplicar dos n
umeros z1 y z2 con
representaciones en coma flotante de m dgitos de mantisa, obtenemos un n
umero z1 z2
con representacion en coma flotante de 2m dgitos de mantisa que al ser almacenada se
trunca a m dgitos. Por lo que al error de almacenamiento de z1 y z2 hay que a
nadir un
error en la operacion. En consecuencia las operaciones elementales en el ordenador son
aproximadas y las denotaremos por , , , . El error cometido en cada una de ellas es
el siguiente:
Suma: x y = [x(1 + ) + y(1 + )](1 + ) = (x + y)(1 + )2 (x + y)(1 + 2).
Resta: x y = [x(1 + ) y(1 + )](1 + ) = (x y)(1 + )2 (x y)(1 + 2).
Multiplicacion: x y = [x(1 + )y(1 + )](1 + ) = xy(1 + )3 xy(1 + 3).
Division: x y = [x(1 + )/y(1 + )](1 + ) x/y(1 + 3).
donde es la precision de la maquina.
Ejemplo 5 Encontrar el error relativo a primer orden, al calcular la potencia n y la raiz
p-esima.
Desarrolando por taylor en un entorno de = 0 y despreciando terminos de
orden mayor o igual a 2 en delta, tenemos que
(x(1 + ))n (1 + ) xn (1 + (n + 1))
(x(1 + ))1/p (1 + ) x1/p (1 + (1/p + 1))


Problema 2 Un ordinador comet errors relatius , , 2, 4, 5 per lemmagetzamatge de


dades, operacions (+, , , /), arrel quadrada, logaritme i exponencial (en base e) respectivament. Si susa aquest ordinador, per a quins valors dx i y, lerror relatiu en el c`alcul
de xy es menor que 12 (no considereu termes dordre 2 ).
En realidad, el ordenador no calcula xy directamente puesto que no tiene forma
de hacerlo. Para ello se basa en funciones que s sabe calcular a partir de sus
polinomios de Taylor. Asi por ejemplo para este calculo, utiliza ey ln(x) .
Para las especificaciones de la maquina anterior tenemos que f l(x) = x(1+
) y f l(y) = y(1 + ). Cuando queremos calcular ln(x) en realidad calculamos
f l(ln(f l(x))), equivalentemente
f l(ln(f l(x))) = ln(x(1 + ))(1 + 4)
= (ln(x) + ln(1 + ))(1 + 4).

Como el desarrollo de Taylor de la funcio ln(1 + ) entorno a = 0 es igual a


12 2 + . . . , obtenemos que
f l(ln(f l(x))) (ln(x) + )(1 + 4) ln(x)(1 + 4) + .
Por tanto, en lugar de y ln(x) tenemos f l(f l(y)f l(ln(f l(x)))), que satisface
f l(f l(y)f l(ln(f l(x)))) y(1 + )(ln(x)(1 + 4) + )(1 + )
(y ln(x)(1 + 5) + y)(1 + )
y ln(x)(1 + 6) + y.
Finalmente al calcular ey ln(x) calculamos
f l(ef l(f l(y)f l(ln(f l(x)))) ) ey ln(x)(1+6)+y (1 + 5)

= ey ln(x) e6y ln(x)+y (1 + 5)

ey ln(x) (1 + 6y ln(x) + y)(1 + 5)

ey ln(x) (1 + (y(1 + 6 ln(x)) + 5)).

Por tanto x e y deben satisfacer que y(1 + 6 ln(x)) + 5 12, equivalentemente


y 7/(1 + 6 ln(x)). En la Figura 1 se representa la region determinada.

Figure 1: Grafica de la funcion y = 7/(1 + 6 ln(x)).

1.3

Propagaci
on de errores

En este apartado estudiamos como se propagan los errores de redondeo debidos al almacenamiento a lo largo de las diferentes operaciones a que sometemos a los n
umeros. La
formula de propagacion del error se basa en el Teorema del Valor Medio que enunciamos
a continuacion.
10

Teorema 1 (Teorema del Valor Medio) Sea f : S Rn R una funcion diferenciable en el abierto S y sean x e y dos puntos de S tales que la envoltura convexa
que los contiene < x, y > esta contenida en S. Entonces existe < x, y > tal que
f (x) f (y) = f (z)(x y)
Si la funcion es de una variable, tenemos que el error absoluto Ef = |f (z) f (
z )| en
el calculo de f (z) cometido al aproximar el valor z por el valor z satisface que
Ef = |f ()| |z z| ,
donde es un valor desconocido contenido en el intervalo < z, z > . Por tanto, si f es
continua en el intervalo < z, z >, esto es f C 1 (< z, z >), se sigue que
Ef MEz ,

(1)

donde M = maxx<z,z> |f (x)| y Ez = |z z| es el error absoluto cometido al aproximar


z por z.
Ejemplo
6 Calcular cotas para el error absoluto y el error relativo cometidos al calcular

, si utilizamos 3.1416 como aproximacion al valor de .

Consideremos la funcion f (x) = x y los valores z = y z = 3.1416. Con


esta notacion, el enunciado pide que calculemos cotas para Ef = |f (z) f (
z )|
y f = Ef /|z|.
Como f (x) = 21 es una funcion positiva y decreciente, su maximo valor
en el intervalo (, 3.1416) es menor que f (). Luego M 21 0.28.. 0.3.
Aplicando ahora la formula de propagacion del error (1) se sigue que
Ef 0.3Ez .
Por otra parte Ez es el error absoluto cometido al aproximar por 3.1416.
Dado que esta aproximacion se corresponde con el redondeo de un n
umero en
coma flotante = 0.314159 . . . 101 a una mantisa de 5 dgitos, concluimos que
Ez 1/2 1015 = 1/2 104 . En consecuencia
Ef 0.15 104 .
Calculamos ahora una cota para el error relativo. Partiendo de la expresion
anterior tenemos que
f

0.15 104 .

0.85 105 .
| |


Destacamos que en el ejemplo anterior, el error en los datos satisface que Ez


1/2 104 mientras que el error cometido tras la operacion satisface Ef 0.15 104.
Concluimos que existen algoritmos que no aumentan el error inicial en los datos. Estos
algoritmos se denominan algoritmos estables en contraposicion con los algoritmos
inestables que amplifican el error en los datos.
11

Cuando el algoritmo viene expresado por una funcion de una variable, esta condicion
se puede expresar de la siguiente forma: si la cota de la derivada M es menor o igual a 1
el algoritmo es estable; si M > 1 el algoritmo es inestable.
Consideramos ahora el caso general con z = (z1 , z2 , . . . , zn ) Rn . A partir del Teorema
del Valor Medio se sigue que

n
X
f ()


|f (z) f (
z)|
xk |zk zk |
k=1

donde es un valor desconocido contenido en < z, z > . De nuevo, si f C 1 (< z, z >),


una cota del error absoluto Ef = |f (z) f (
z)| cometido en el calculo de f (z) a causa de
aproximar z por z viene dada por
Ef

n
X

Mk Ezk ,

k=1

donde Mk = maxx<z,z> | fx(x)


| y Ezk = |zk zk | es el error absoluto cometido en la
k
kesima coordenada.
Ejemplo 7 Propagacion de errores en las operaciones algebraicas elementales:
Suma: Ex+y Ex + Ey y ex+y

|y|
|x|
ex +
ey .
|x + y|
|x + y|

|y|
|x|
ex +
ey .
|x y|
|x y|
Notamos que el error relativo de la resta de dos n
umeros crece si los n
umeros son
muy parecidos.

Resta: Exy Ex + Ey y exy

Multiplicacion: Exy |y|Ex + |x|Ey y exy ex + ey .


|y|Ex + |x|Ey
y ex/y ex + ey .
|y 2|
Aunque no tiene influencia en el error relativo, dividir por n
umero peque
nos amplifica el error absoluto.

Division: Ex/y

Problema 3 Amb quina exactitud sha de mesurar el radi duna esfera i amb quants
decimals sha de donar el n
umero perqu`e el seu volum es conegui amb un error relatiu
menor que el 0.01?
a) Considereu ambdos efectes per separat.
b) Considereu els dos efectes tot junts.
a) Consideramos en primer lugar que el error en el calculo del volumen se debe
al u
nicamente error cometido en el radio r. El volumen de la esfera en funcion
del radio es V (r) = 43 r 3 . Como V (r) = 4r 2 , entonces el error absoluto en
el calculo del volumen satisface que
EV = 42 Er ,
12

con < r, r >, lo que implica que r Er < < r + Er .


El error relativo entonces es
42
Er
V (r)
42
= 4 3 Er
r
3
 2
=3
r .
r

V =

Aplicando que /r 1 + r obtenemos que

V 3(1 + r )2 r 3r .
Consideremos ahora el efecto de un error en en elcalculo del volumen.
En tal caso consideramos la funcion V () = 34 r 3 , con V () = 34 r 3 . Por tanto
el error absoluto satisface que
4
EV = r 3 E ,
3
y el error relativo
4 3
r
V = 3 E = .
4 3
r
3
b) Consideramos ahora los posibles efectos del error en ambos datos de
= 4r 2 y V
= 43 r 3 y por
forma conjunta. En este caso V (r, ) = 43 r 3 , V
r

tanto
4
EV 42Er + r 3 E .
3
Teniendo presente que r Er < < r + Er . llegamos a que
V 3(1 + r )2 r + .

Como hemos visto, existen algoritmos que son numericamente estables (que no amplifican el error en los datos) y otros que son numericamente inestables. Evidentemente,
cuando para resolver un problema podemos utilizar algoritmos de uno u otro tipo, utilizaremos siempre algoritmos estables.

6
Problema 4 Volem calcular el valor de
2 1 prenent el valor aproximat de 1.4 com

uents, la mes adequada des del punt


a valor de 2. Trieu de les formules (algoritmes) seg
de vista num`eric:


3
1
1
1
.

3 ; 99 70 2 ;
6 ; 3 2 2 ;
99 + 70 2
2+1
3+2 2
13


Sea z = 2 y z = 1.4, y queremos calcular a = f1 (z) donde f1 (x) = (x 1)6 ,
pero en su lugar calculamos a
= f1 (
z ). El error absoluto cometido es Ef1 =
|f1 (z) f1 (
z )|. Aplicando la formula de propagacion del error tenemos que
Ef1 M1 Ez donde
max |f1 (x)|

M1 =

x(1.4, 2)

max |6(x
x(1.4, 2)

1)5 |.

5
Como la funcion (x

1)
es
positiva
y
creciente
en
el
intervalo
(1.4,
2) se

6
6
sigue que M1 6( 2 1) 6(1.5 1) = 0.09375. Por lo tanto el error en
el calculo de a es aproximadamente 10 veces menor que el error en los datos.
Por otra parte

( 2 1)6 ( 2 + 1)6
6

a = ( 2 1) =
( 2 + 1)6

(( 2 1)( 2 + 1))6

=
( 2 + 1)6
1
=
.
( 2 + 1)6
De donde a = f2 (z) con f2 (x) = 1/(x + 1)6 . Aplicando la formula de propagacion del error al calculo de a mediante la funcion f2 tenemos que Ef2 M2 Ez
donde
max |f2 (x)|
x(1.4, 2)




6

= max
7
x(1.4, 2) (x + 1)

M2 =

En este caso la funcion derivada es positiva y decreciente en el intervalo, por


tanto M2 6(1.4 + 1)7 0.014. En consecuencia, al utilizar la funcion f2 . el
error absoluto en el resultado se divide aproximadamente por 100.

3
Consideremos
ahora
la
funci
o
n
f
(x)
=
(3

2x)
.
Notamos
que
a
=
(
2
3
3

2 3
6
1) = (( 2 1) ) = (3 2 2) . Al utilizar esta funcion para el calculo de a
obtenemos que Ef3 M3 Ez con
M3 =
=

max |f3 (x)|

x(1.4, 2)

max |6(3 2x)2 |.

x(1.4, 2)

La funcion 6(3 2x)2 es no negativa en R con un cero doble en x = 3/2 que


a su
vez es un mnimo de la funcion, por lo que la funcion es decreciente en
(1.4, 2). De aqu se sigue que M3 6(3 2(1.4))2 = 0.24. En este caso el
error en los datos se divide u
nicamente por 4.
Finalmente, es sencillo concluir que a = f4 (z) = f5 (z) = f6 (z) donde
f4 (x) =

1
1
.
3 ; f5 (x) = 99 70x ; f6 (x) =
99 + 70x
(3 + 2x)
14

Definiendo Mk = maxx(1.4,2) |fk (x)| para k = 4, 5, 6 tenemos que






6
6

M4 = max
0.0054.
(3 + 2x)4 (3 + 2.8)4
x(1.4, 2)
M5 =

M6 =

max |
x(1.4, 2)

70| 70.



max

x(1.4, 2)



70
70

0.0019.

2
(99 + 70x)
(99 + 70(1.4))2

Concluimos que las anteriores formulas equivalentes desde el punto de vista


matematico, no lo son desde el punto de vista numerico, siendo la u
ltima la
mas adecuada para realizar el calculo.

Problema 5 Doneu un m`etode recurrent i bo num`ericament per a calcular
Z 1
In =
xn e(x1) dx (n 0) .
0

R1
Para n = 0 la integral es inmediata, asi I0 = 0 ex1 dx = ex1 |10 = 1 e1 .
Consideremos ahora n 1. Aplicando integracion por partes tenemos que


Z 1
u = xn
du = nxn1 dx
n x1
In =
x e dx =
dv = ex1 dx
v = ex1
0
Z 1
Z 1
n x1 1
n1 x1
= x e |0 n
x e dx = 1 n
xn1 ex1 dx.
0

Por tanto podemos calcular las integrales

{In }
n=0

a partir de la recurrencia

I0 = 1 e1
In = 1 nIn1 , para n 1.

(2)

Mediante el siguiente algoritmo


I:[1-exp(-1)];
for n:2 thru 24 do
I:append(I,[1-(n-1)*I[n-1]]);
for n:1 thru 24 do
print(n,I[n]);
hemos calculado los primeros primeros 24 terminos de la sucesion.
n
In
n
In
0
0.63212055882856
1
0.36787944117144
3
0.20727664702865
4
0.17089341188538
6
0.12680235656152
7
0.11238350406936
9
0.09161229299417 10 0.083877070058293
12 0.071773247694637 13 0.066947779969723
15 0.059033793641902 16 0.05545930172957
18 -0.029453670751536 19 1.559619744279189
21 635.0402925972594 22 -13969.88643713971
15

n
In
2
0.26424111765712
5
0.14553294057308
8
0.10093196744509
11 0.07735222935878
14 0.062731080423873
17 0.057191870597308
20 -30.19239488558378
23 321308.3880542133

R1
A partir de la expresion In = 0 xn ex1 dx notemos que la sucesion {In }
n=0
satisface las siguientes propiedades:

a) En primer lugar In 0 para todo n 0. Esto se deduce de que In es la


integral de una funcion positiva en el intervalo (0, 1).

b) La sucesion {In }
n=0 es decreciente. En efecto In+1 < In puesto que en
(0, 1) tenemos que xn+1 < xn y la funcion exponencial es siempre positiva.
c) Finalmente In < 1/(n + 1). Esto es consecuencia de la desigualdad 0 <
xn ex1 < xn en (0, 1), de forma que al integrar se obtiene la desigualdad
deseada.
Sin embargo, cuando intentamos verificar estas propiedades en la tabla
observamos que apenas se mantienen para unos pocos valores iniciales. Concluimos que los valores de la tabla son erroneos. Para entender el porque de
este error es necesario que analicemos la propagacion del error a lo largo de la
formula recursiva anterior.
Asi, si En es el error en el calculo de In , provocado por un error En1 en el
calculo de In1 se sigue que En = (n)En1 . Por tanto En = n! E0 , donde E0 es
el error en el calculo de I0 debido al error de almacenamiento del n
umero e1 .
Consideremos que el error absoluto de almacenamiento es 1015 . Mediante el
siguiente algoritmo
E:[1e-15];
for n: 2 thru 23 do
E:append(E,[(n-1)*E[n-1]]);
for n: 1 thru 23 do
print(n-1,E[n]);
generamos la tabla con el error que cabe esperar en los valores de In .
n
En
n
En
0
1.0e-15
1
1.0e-15
3
6.0e-15
4
2.4e-14
6
7.2e-13
7
5.04e-12
9
3.6288e-10
10
3.6288e-9
12
4.790016e-7
13
6.2270208e-6
15
0.001307674368
16
0.020922789888
18 6.402373705728001 19 121.645100408832
21 51090.94217170945 22 1124000.727777608

n
En
2
2.0e-15
5
1.2e-13
8
4.032e-11
11
3.99168e-8
14
8.71782912e-5
17 0.355687428096
20 2432.90200817664

El error E17 = 0.355687428096 estimado en el calculo de I17 es mayor que


el valor obtenido I17 = 0.057191870597308. Por consiguiente ninguno de los
dgitos de I17 es correcto.
Despejando In1 en la recurrencia (2) obtenemos la recurrencia
In1 =

1 In
.
n

(3)

De esta forma, si para cierto n0 conocemos In0 , mediante la recurrencia anterior


0
podemos calcular {In }nn=0
.
16

Por otra parte, si En es el error cometido al calcular In causado por el error


en In+1 , tenemos que:
a) A partir de la formula de propagacion del error se sigue que En1 = En /n.
b) Como In < 1/(n + 1), si IN = 0 entonces EN < 1/(N + 1).
Tomando N = 35, equivalentemente I35 = 0 y E35 < 1/36, mediante el
siguiente algoritmo calculamos la sucesion de errores {En }35
n=0 que esperamos
cometer al utilizar la recurrencia (3)
E:[float(1/36)];
for n:1 thru 35 do
(
E:append(E,[E[n]/(36.0-n)])
);
for n:35 thru 0 step -1 do
(
print(n,E[36-n])
);
que resulta ser:
n
35
31
27
23
19
15
11
7
3

En
0.02777
2.2104E-8
2.9271E-14
6.9495E-20
3.2700E-25
3.5153E-30
1.0730E-34
1.3548E-38
1.6129E-41

n
34
30
26
22
18
14
10
6
2

En
7.9365E-4
7.1305E-10
1.0841E-15
3.0215E-21
1.7210E-26
2.3435E-31
9.7550E-36
1.9355E-39
5.3764E-42

n
33
29
25
21
17
13
9
5
1

En
2.3342E-5
2.376E-11
4.169E-17
1.373E-22
9.561E-28
1.673E-32
9.755E-37
3.225E-40
2.688E-42

n
32
28
24
20
16
12
8
4
0

En
7.0735E-7
8.1960E-13
1.6679E-18
6.5401E-24
5.6245E-29
1.2876E-33
1.0838E-37
6.4517E-41
2.6882E-42

De donde los valores generado por la recurrencia (3) permiten calcular la


sucesion {In }23
gitos correctos. El siguiente algoritmo nos
n=0 con todos sus d
genera esta sucesion para n 36
I:[0];
for n:1 thru 35 do
(
I:append(I,[(1.0-I[n])/(36.0-n)])
);
for n:35 thru 0 step -1 do
(
print(n,I[36-n])
);
que presentamos en la siguiente tabla.

17

n
35
32
29
26
23
20
17
14
11
8
5
2

En
0
0.029437229437229
0.032290677512452
0.035758424982781
0.040061810357373
0.045544884075818
0.052771119168995
0.06273216394138
0.077352228862664
0.10093196744559
0.14553294057308
0.26424111765712

n
34
31
28
25
22
19
16
13
10
7
4
1

En
0.028571428571429
0.030330086580087
0.033369286982329
0.037086214423739
0.04173644302794
0.047722755796209
0.055719345931236
0.066947702575616
0.083877070103394
0.1123835040693
0.17089341188538
0.36787944117144

n
33
30
27
24
21
18
15
12
9
6
3
0

En
0.028571428571429
0.031279674626449
0.034522525464917
0.03851655142305
0.043557434407821
0.050119854958094
0.059017540879298
0.07177325364803
0.091612292989661
0.12680235656153
0.20727664702865
0.63212055882856


Como hemos visto en los ejemplos anteriores existen problemas que se pueden resolver
por algoritmos numericamente inestables o bien por algoritmos numericamente estables,
prefiriendose estos u
ltimos. Existen sin embargo otros problemas que son intrnsecamente
inestables y para los que no existen algoritmos numericamente estables. Estos problemas
se conocen como problemas mal condicionados, y son muy frecuentes en el calculo de ceros
de funciones lineales.
Ejemplo 8 Consideramos la siguiente funcion lineal f(x) = Ax b con


 
2 + 1 2
1
A=
y b=
.
0
1
2 + 2
Calculad los ceros de f en funcion de 1 y 2 , equivalentemente resolved el sistema lineal
Ax = b.

En primer lugar, det(A) = 1 2 + 2(2 + 1 ). Por tanto det(A) = 0 si

21

2 =
1 + 2
cuya grafica se representa en la Figura 2. Por tanto, para valores de (1 , 2 )
que no esten sobre la grafica podemos calcular la inversa y por tanto el cero
de la funcion, y obtenemos que

2
 
2 + 2

2 + 2
+ 2) (2 + 2)2
(1 + 2) (2 + 2)2
(1 + 2) (2 + 2)2 1
= (1
x=
.

+
2
1
1
0
+2 1 +2 2

+2 +2 2
2

+
2
2
(
)
(
)

+
1
2
)( 2
)
)( 2
)
(1
(1

Si en la anterior expresion consideramos 1 = 0 y 0 < 2 1 entonces


!
x=

2 + 2
2 2
1

2 2

Por tanto, peque


nas variaciones en 2 provocan grandes cambios
en la solucion
final. En consecuencia, dado al trabajar de forma mecanica 2 tendra siempre
18

-sqrt(2)*x/(x+sqrt(2))

-2

-4

-4

-2

0
x

Figure 2: Grafica de la funcion 2 =

21

1 + 2

un error, concluimos que para este problema, peque


nos errores en los datos
provocan grandes errores en el resultado, es decir, el problema anterior esta
mal condicionado.


1.4

Orden de convergencia y complejidad

En la secciones anteriores hemos clasificado los algoritmos en funcion de su comportamiento ante la transmision del error en los datos. En esta seccion trataremos sobre su
velocidad de ejecucion y el n
umero de operaciones que realizan.

Dada una sucesion {xn }n=0 convergente a x diremos que la sucesion converge con
orden p y velocidad v si
|x xn+1 |
1
lim
=
.
n |x xn |p
v
Ejemplo 9 Consideremos la sucesion {1/nk }
n=1 con k 1.
Dado que x = 0 tenemos que
|x xn+1 |
lim
= lim
n |x xn |
n

1
(n+1)k
1
nk

nk
= 1.
n (n + 1)k

= lim

Luego el orden de convergencia es p = 1 y su velocidad de convergencia v = 1.



Como En = |x xn | es el error cometido en el paso n, se sigue que dado > 0 existe
n0 tal que para todo n n0




1
1
p
En < En+1 <
+ Enp .
v
v
19

Por tanto, cuanto mayor sea el orden de convergencia, mas rapidamente se acerca a su
lmite. Ademas, para un orden fijado, por ejemplo p = 1 el error en el paso n + 1 es
aproximadamente el error en el paso n dividido por v. De donde se deriva el nombre de
valor v.
Dado un metodo para encontrar una solucion x de un problema generando una

sucesion de valores {xn }


etodo tiene orden p y
n=0 convergente a x , diremos que el m
velocidad v si la sucesion converge con orden p y velocidad v.
A los metodos de orden p = 1 se les denomina lineales y a los metodos de orden p = 2
cuadraticos.
Ejemplo 10 Consideremos la sucesion {xn }1n=0 generada seg
un xn+1 = g(xn ) con g(x) =
2
(x + 2)/2x.
Si la sucesion converge a un valor x , entonces tomando el lmite a ambos
lados de la expresion xn+1 = g(xn ) tenemos que, por ser g(x) continua fuera
del origen x = g(x ). Por tanto
x =

(x )2 + 2
.
x

De donde x = 2.
Desarrollando por Taylor g(x) en un entorno de x hasta orden 2 tenemos
que
(x x )2
g(x) = g(x ) + g (x )(x x ) + g ()
2

con < x, x >. De donde, teniendo en cuenta que g(x ) = x y g (x ) = 0


se sigue que
(xn x )
g(xn ) = xn+1 = x + g (n )
,
2
con n < xn , x > . Reordenando la ecuacion anterior obtenemos que
g (n )
xn+1 x
=
(xn x )2
2
Tomando lmites para n tendiendo a infinito llegamos a que
xn+1 x
g (n )
=
lim
.
n (xn x )2
n
2
lim

Como g (x) es continua, limn g (n ) = g (limn n ) = g (x ) = 1/ 2.


Concluimos que el orden de
convergencia del metodo es 2 y la velocidad de

convergencia 2/g (x ) = 2 2.


20

Potrebbero piacerti anche