Está en la página 1de 6

Extrapolacin de Richardson

Esta tcnica se emplea para generar resultados con alta precisin usando formulas de
bajo orden, es decir, obtiene una buena aproximacin con mnimos costos de calculo y
errores de redondeo.

La extrapolacin es valida cuando se sabe que la tcnica de aproximacin tiene un
error que es predecible, dependiente de un parmetro, comnmente el tamao del
paso h. por ejemplo, supongamos que N(h) es una formula que aproxima un valor
desconocido M, y adems, es sabido que N(h) tiene asociado un error O(h) de
truncamiento que es de la forma:

..... ) (
3
3
2
2 1
+ + + = h K h K h K h O (1)

Luego:

=
+ =
n
i
i
i
h K h N M
1
) ( (2)

Para algn conjunto de valores de K
i

Aqu consideramos que h puede seleccionarse arbitrariamente y que mientras h
disminuye, es posible encontrar mejores aproximaciones para M.

El objetivo de la extrapolacin es mejorar la formula de orden O(h), para disminuir, por
lo tanto, el error.

Puesto que se supone que esta formula es valida para cualquier h>0, podemos
considerar el resultado anterior para un paso igual a h/2, entonces:

.....
8 4 2 2
3
3
2
2 1
+ + + =
|

\
| h
K
h
K
h
K
h
O (3)
Luego:

=
|

\
|
+
|

\
|
=
n
i
i
i
h
K
h
N M
1
2 2
(4)

Ahora, se realiza la siguiente operacin (4)-2*(1) para obtener la siguiente expresin:

( )
2 3
2 3
2 3
...
2 2 2 3
h h h h
M N N N h K h K h
( | | | | | | | | | |
= + + + +
| | ( | | |
\ \ \ \ \
(5)

Para facilitar la presentacin, definamos
1
( ) ( ) N h N h = y adems:
(6)
Entonces se obtiene que la formula para la aproximacin
2
( ) O h para M queda definida
como:
2 3 3 2
2
( ) ...
2 3
K K
M N h h h = (7)
Si ahora reemplazamos h por h/2 tendremos que:
( )
2 1 1 1
( )
2 2
h h
N h N N N h
| | | | | |
= +
| | |
\ \ \

2 3 3 2
2
( ) ...
2 8 32
K K h
M N h h = (8)

Esto, puede combinarse con la ecuacin 7 para eliminar el trmino
2
h .
Especficamente, haciendo la siguiente operacin: 4*(8) (7), obtenemos que:

3
3 3
2 2
3
3 4 ( ) ...
2 4 2
K h h
M N N h h
| |
| |
= + + +
| |
\
\


La cual se puede simplificar a la formula de
3
( ) O h para aproximar M:
2 2
3 3
2
( )
2
...
2 3 8
h
N N h
K h
M N h
( | |

|
(
| |
\
( = + + +
|
\ (
(



Definiendo:
2 2
3 2
( )
2
( )
2 3
h
N N h
h
N h N
| |

|
| |
\
= +
|
\

Tenemos la formula para
3
( ) O h :

3 3
3
( ) ...
8
K
M N h h = + +
Luego, este proceso lo podemos continuar para una aproximacin
4
( ) O h , y ese
simplificarlo y llegar a
5
( ) O h , y as sucesivamente. En general si M puede escribirse
de la forma:

1
1
( ) ( )
m
j m
j
j
M N h K h O h

=
= + +



Entonces para cada j=2,3,,m tenemos que existe una aproximacin ( )
j
O h de la
forma:

1 1
1 1
( )
2
( )
2 2 1
j j
j j j
h
N N h
h
N h N


| |

|
| |
\
= +
|

\
APROXIMACION DE RICHARDSON

Estas aproximaciones son generadas por los renglones en el orden indicados por los
valores encerrados entre parntesis de la siguiente tabla. Esto se hace para tener la
mejor ventaja de las formulas de mayor orden:





( ) O h
2
( ) O h
3
( ) O h
4
( ) O h
1
( ) ( ) N h N h (1)


1
2 2
h h
N N
| | | |

| |
\ \
(2)
( )
2
N h (5)

1
4 4
h h
N N
| | | |

| |
\ \
(3)
2
2
h
N
| |
|
\
(6)
3
( ) N h (8)

1
8 8
h h
N N
| | | |

| |
\ \
(4)
2
4
h
N
| |
|
\
(7)
3
3
h
N
| |
|
\
(9)
4
( ) N h (10)


La extrapolacin puede aplicarse siempre que el error de truncamiento para una
formula sea de la forma:

1
1
( )
m
j m
j
j
K h O h

=
+

Para un conjunto de constantes


j
K y cuando
1 2
...
m
< < <

Ejemplo resuelto

Definamos la formula de las diferencias centrales para encontrar una aproximacin de
) ( '
0
x f mediante la siguiente formula:

| | ) (
6
) ( ) (
2
1
) ( '
1
) 3 (
2
0 0 0
f
h
h x f h x f
h
x f + = Con
1
entre ) ( ) (
0 0
h x y h x +

Luego, podemos expresar esta ltima como una formula de error:

| | ... ) (
120
) (
6
) ( ) (
2
1
) ( '
0
) 5 (
4
0
) 3 (
2
0 0 0
+ + = x f
h
x f
h
h x f h x f
h
x f

De donde podemos obtener la siguiente aproximacin de orden ) (
2
h O :

| | ) ( ) (
2
1
) ( ) (
0 0 1
h x f h x f
h
h N h N + =

Y para cada j= 2,3, la aproximacin ) (
2 j
h O es:

( )
1 4
2
2
) (
1
1 1
1

\
|
+
|

\
|
=

j
j j
j j
h N
h
N
h
N h N

Notemos que el denominador del cociente es ahora 1 4
1

j
en lugar de 1 2
1

j
, por
lo que estamos eliminando potencias de
2
h en vez de potencias de h. como
4 2
2
2
h h
=
|

\
|
, los multiplicadores utilizados para eliminar las potencias de
2
h son
potencias de 4 en lugar de 2.

Supongamos que 0 . 2
0
= x , 2 . 0 = h y
x
xe x f = ) ( . Entonces:

| |
182564 . 22 ) 05 . 0 ( ) 05 . 0 (
228786 . 22 ) 1 . 0 ( ) 1 . 0 (
414160 . 22 ) 8 . 1 ( ) 2 . 2 (
4 . 0
1
) 2 . 0 ( ) 2 . 0 (
1
1
1
= =
= =
= = =
N N
N N
f f N N

Y luego, sigue que:


La extrapolacin de estos datos se muestra en la tabla inferior. El valor exacto de
x x
e xe x f + = ) ( ' en 0 . 2
0
= x es 22.167168

414160 . 22 ) 2 . 0 (
1
= N

228786 . 22 ) 1 . 0 (
1
= N
166995 . 22
3
) 2 . 0 ( ) 1 . 0 (
) 1 . 0 ( ) 2 . 0 (
1
1 2
=
+
+ =
N N
N N


182564 . 22 ) 05 . 0 (
1
= N
167157 . 22
}
3
) 1 . 0 ( ) 05 . 0 (
) 05 . 0 ( ) 1 . 0 (
1
1 2
=
+
+ =
N N
N N

167168 . 22
15
) 2 . 0 ( ) 1 . 0 (
) 1 . 0 ( ) 2 . 0 (
2
21 3
=
+
+ =
N N
N N


Puesto que cada columna despus de la primera en la tabla de extrapolacin se
obtiene por un simple proceso de promediado, la tcnica puede producir
aproximaciones de alto orden con mnimos costos de calculo y error de redondeo. Sin
embargo, a medida que k se incrementa, el error de redondeo en ( )
k
h
N
2
1

generalmente aumentara debido a la inestabilidad de le diferenciacin numrica.
























Implementacion en matlab

function [D,err,n]= Richardson(f,x,h,delta)

err=1;
j=1;
D(1,1)=(feval(f,x+h)-feval(f,x-h))/(2*h);
while err>delta && j<12
h=h/2;
D(j+1,1)=(feval(f,x+h)-feval(f,x-h))/(2*h);
for k=1:j
D(j+1,k+1)=D(j+1,k)+(D(j+1,k)-D(j,k))/(4^k-1);
end
err=abs(D(j+1,j+1)-D(j,j));
j=j+1;
end
[n,n]= size(D);
n
err
end


donde a a la funcin se le debe entregar como parmetros:
f : function que se quiere derivar
x : punto en donde queremos derivar
h: paso
delta: precision

y el metodo nos devuelve
D: Matriz con las derivadas
Err: error del metodo
n: coordenada de la mejor aproximacin

si hacemos iterar el metodo con
f= xexp.m ( explicado luego)
x=2,h=0.2 ,delta=1e-20
obtenemos

>> Richardson(@xexp,2,0.2,1e-20)

n =

12


err =

7.4252e-012











ans =

Columns 1 through 8

22.4142 0 0 0 0 0 0 0
22.2288 22.1670 0 0 0 0 0 0
22.1826 22.1672 22.1672 0 0 0 0 0
22.1710 22.1672 22.1672 22.1672 0 0 0 0
22.1681 22.1672 22.1672 22.1672 22.1672 0 0 0
22.1674 22.1672 22.1672 22.1672 22.1672 22.1672 0 0
22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 0
22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672
22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672
22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672
22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672
22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672 22.1672

Columns 9 through 12

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
22.1672 0 0 0
22.1672 22.1672 0 0
22.1672 22.1672 22.1672 0
22.1672 22.1672 22.1672 22.1672

En donde n =12 nos da la coordenada de la mejor aproximacin [12,12] que en nuestro caso
corresponde a 22.1672 y si lo comparamos con el ejemplo anterior en donde nuestro resultado era
22.167168 podemos concluir que el error es despreciable.



funcion xexp:

function y= xexp(x)

y=x*exp(x);
end

Esta funcion devuelve el valor de
x
xe x f = ) (