Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
etodes Num`
erics
1
An
alisis del error
1.1
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
1.2
Aritm
etica en los ordenadores
Representaci
on de n
umeros
k=0
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
0.0625
0.125
0.25
0.50
1.0
1.2.2
Almacenamiento
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.
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
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
(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
23
X
k=1
2k = 1 223 .
|x x|
|m m|
=
|x|
|m|
|m m|
1
< 2123 = 223 1.2E 7.
|m|
2
1.2.3
Operaciones b
asicas
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)
0.15 104 .
0.85 105 .
| |
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
n
X
Mk Ezk ,
k=1
|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.
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
V =
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
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 =
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 =
=
x(1.4, 2)
x(1.4, 2)
1
1
.
3 ; f5 (x) = 99 70x ; f6 (x) =
99 + 70x
(3 + 2x)
14
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
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
{In }
n=0
a partir de la recurrencia
I0 = 1 e1
In = 1 nIn1 , para n 1.
(2)
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:
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
1 In
.
n
(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
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.
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
2 + 2
2 2
1
2 2
-sqrt(2)*x/(x+sqrt(2))
-2
-4
-4
-2
0
x
21
1 + 2
1.4
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
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
(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
20