Sie sind auf Seite 1von 12

8.

Codigos automaticos de orden y paso


variable
Eduardo Sainz de la Maza
17 de marzo de 2011

Indice general
8. C
odigos autom
aticos de orden y paso variable

8.1. Cambio de la longitud de paso en metodos Adams . . . . . . .

8.2. Doblar el paso o reducirlo a la mitad . . . . . . . . . . . . . .

8.3. Caso general vector de Nordsieck . . . . . . . . . . . . . . . .

8.4. Tecnicas de coeficientes variables . . . . . . . . . . . . . . . .

8.5. Estructura general de un algoritmo de orden y paso variable .

Captulo 8
C
odigos autom
aticos de orden
y paso variable
En este captulo analizamos el problema de cambiar el paso o el orden, es
decir el metodo, para el caso de metodos Adams Bashford Moulton pensando
en implementaciones de tipo predictor corrector expresados en diferencias
regresivas.

8.1.

Cambio de la longitud de paso en m


etodos Adams

Cuando se modifica la longitud de paso de h a un nuevo paso h al pasar del


punto xn a un nuevo xn+1 = xn +h los metodos de un paso no tienen ninguna
dificultad pues solamente relacionan el yn con el yn+1 por lo que el paso con
el que trabajar siempre es la distancia entre el xn y el xn+1 . Por el contrario
un metodo lineal multipaso de k pasos relaciona el nuevo yn+1 a calcular
con k valores anteriores ynj ya calculados, pero que cuando se modifica la
longitud de paso son desconocidos pues necesitamos aproximaciones de la
solucion y(x) en los puntos xn h, xn 2h, . . . , xn (k 1)h.
Podemos distinguir dos clases de tecnicas para realizar cambios de longitud
de paso. Una sera las llamadas tecnicas de tipo interpolatorio y otra las
tecnicas de coeficientes variables.
En las tecnicas de tipo interpolatorio se aproximan los valores desconocidos
interpolando los valores conocidos y, en el caso particular de metodos Adams
Bashford Moulton (ABM), podemos realizar dicha interpolacion directamen2

te para los valores de f ya que solo aparecen dos valores de y, el nuevo a


calcular y el anterior conocido. Estos valores anteriores fnt , t = 0, 1, . . . , k1
los representaremos por sus diferencias regresivas i fn , i = 0, 1, . . . , k 1.
En las tecnicas de coeficientes variables se usan metodos ABM desarrollados
para nodos no uniformemente espaciados, en los que los coeficientes dependeran de la distancia entre los nodos que intervienen.

8.2.

Doblar el paso o reducirlo a la mitad

Empezamos estudiando el caso en el que el cambio de la la longitud de paso


es duplicarlo o dividirlo por dos. El el caso de que el nuevo h sea el doble que el h viejo necesitamos los valores anteriores fn2 , fn4 , . . . , fn2k+2
que, aunque si han sido calculados, no tienen porque haber sido almacenados. Veamos un algoritmo debido a Krogh (1973) para el caso de metodos
Adams en diferencias regresivas. En este caso necesitamos expresar las diferencias regresivas de paso doble interpolando las de paso normal. Sea pues
I(x) el polinomio de grado k 1 que interpola f (x, y(x)) en los k puntos
(xnt , fnt ), t = 0, 1, . . . , k 1. Es decir se tiene que
i I(xn ) = i fn ,

i = 0, 1, . . . , k 1

(8.1)

donde I(x) = I(x) I(x h) y i I(x) = i1 I(x) i1 I(x h).


Para todo polinomio de grado k 1 se verifica que
i I(xn ) = 0,

i = k, k + 1, . . .

(8.2)

Necesitamos las diferencias regresivas de paso doble para los datos I(xn ),
I(xn 2h), . . . , I(xn 2(k 1)h). Denotemos por D I(x) = I(x) I(x 2h)
i1
y iD I(x) = i1
D I(x) D I(x 2h). Se tiene que
I(xn ) = I(xn ) I(xn h)
2 I(xn ) = I(xn ) 2I(xn h) + I(xn 2h)
luego
(2 2 )I(xn ) = I(xn ) I(xn 2h) = D I(xn ).
Es decir tenemos la siguiente identidad:
D 2 2 .

(8.3)

De 8.1, 8.2 y 8.3 podemos expresar las iD I(xn ) en funcion de las i fn . En


el caso i = 0 es trivial I(xn ) = fn . veamos las siguientes hasta k = 5.
D I(xn ) = (2 )I(xn ) = 2fn 2 fn
2D I(xn ) = 2 (2 )2 I(xn ) = (42 43 + 4 )I(xn )
= 42 fn 43 fn + 4 fn
3D I(xn ) = 3 (2 )3 I(xn ) = (83 124 + 65 6 )I(xn )
= (83 124 )I(xn )
= 83 fn 124 fn
4D I(xn ) = 4 (2 )4 I(xn ) = (164 + )I(xn )
= 164 I(xn ) = 164 fn .
Un algoritmo que nos realiza esta expresion de las diferencias regresivas de
paso doble de fn a partir de las diferencias de paso normal es por tanto
el siguiente. Sea Ai A(i) = i fn , i = 1, 2, . . . , k 1 y consideremos las
siguientes lneas de codigo

for j = 1 to k 2 do

begin

for i = j to k 2 do A(i) = 2 A(i) A(i + 1)


(8.4)
A(k 1) = 2 A(k 1)

end

A(k 1) = 2 A(k 1)
En el caso k = 5 producira
A1

A2

A3

fn
2 fn
3 fn
j = 1 (2 2 )fn
(22 3 )fn
(23 4 )fn
j=2
(42 43 + 4 )fn (43 44 )fn
j=3
(83 124 )fn

A4
4 fn
24 fn
44 fn
84 fn
164 fn

Es decir nos transforma el vector [fn , 2 fn , 3 fn , 4 fn ] de diferencias regresivas normales en el vector [D fn , 2D fn , 3D fn , 4D fn ] de diferencias regresivas de paso doble.
De forma similar podemos deducir un procedimiento para el caso de reducir el
paso a la mitad. Ahora queremos deducir las diferencias relativas a los datos
I(xn ), I(xn h2 ), . . . , I(xn (k1)h
). Denotemos por H I(x) = I(x)I(x h2 )
2
4

i1
h
y por iH I(x) = i1
H I(x) H I(x 2 ). Obtener las D a partir de las
es el mismo proceso que obtener las a partir de las H . Es decir

2H 2H .

(8.5)

Al igual que antes conocemos el algoritmo que transforma las diferencias


regresivas [H fn , 2H fn , 3H fn , 4H fn ] en [fn , 2 fn , 3 fn , 4 fn ], pero buscamos el algoritmo contrario que exprese las iH en funcion de las i . Como
la relacion anterior es lineal y ademas es un sistema triangular podremos
resolverlo con facilidad. En concreto para el caso k = 5 tenemos
fn
2 fn
3 fn
4 fn

=
=
=
=

(2H 2H )I(xn )
(42H 43H + 4H )I(xn )
(83H 124H )I(xn )
164H I(xn ).

Resolviendo, obtenemos
1 4
fn
16
1 3
3
3H I(xn ) =
fn + 4 fn
(8.6)
8
32
1 2
1
5
2H I(xn ) =
fn + 3 fn + 4 fn
4
8
64
1
1 2
1 3
5 4
H I(xn ) =
fn + fn + fn +
fn .
2
8
16
128
Nuevamente un pseudo-algoritmo que implemente estos cambios viene dado
por, sea Ai A(i) = i fn , i = 1, 2, . . . , k 1

A(k 1) = 21 A(k 1)

for j = k 2 downto 1 do

begin
(8.7)
A(k 1) = 21 A(k 1)

for i = k 2 downto j do A(i) = A(i)+A(i+1)

end
4H I(xn ) =

Aplicandolo nuevamente al caso k = 5 obtenemos


A4

A3

A2

A1

4 fn
3 fn
2 fn
fn
1 4
fn
2
1 4
j = 3 4 fn ( 21 3 + 18 4 )fn
1
j = 2 18 4 fn ( 41 3 + 18 4 )fn ( 21 2 + 18 3 + 16
4 )fn
1
3
5
1
5
j = 1 16
4 fn ( 18 3 + 32
4 )fn ( 14 2 + 18 3 + 64
4 )fn ( 12 + 81 2 + 16
3 + 128
4 )fn
5

8.3.

Caso general vector de Nordsieck

Analizamos ahora una tecnica que permite el aumento o disminucion arbitrario de la longitud de paso. Tambien es una tecnica de tipo interpolatorio.
En ella identificamos el vector de datos del polinomio de interpolacion I(x)
de grado k 1 que interpola los datos conocidos fnt , t = 0, 1, . . . , k 1 con el
vector de datos asociado al mismo polinomio I(x) que fija las k 1 primeras
derivadas en el punto xn . Sea F (xn ) definido por
F (xn ) = [fn , fn , . . . , k1 fn ]T
= [I(xn ), I(xn ), . . . , k1 I(xn )]T ,

(8.8)

teniendo en cuenta que i I(xn ) = O(hi ) parece razonable definir el vector


de derivadas escalado con potencias de h por
G(xn ) = [I(xn ), hI (1) (xn ), . . . , hk1 I (k1) (xn )]T .

(8.9)

Este vector se llama vector de Nordsieck y existe una relacion lineal entre
ambos vectores
G(xn ) = AF (xn )
(8.10)
donde la matriz A es independiente de h. De esta manera si queremos reemplazar h por h todo lo que tenemos que hacer es multiplicar las componentes
del vector G(xn ) por potencias i . Deshaciendo el cambio ponemos despues
volver a pasar al vector F con las diferencias regresivas para el nuevo paso
h. Consideremos un ejemplo con k = 5. Entonces I(x) = I(xn + rh) = P (r)
donde
1
1
p(r) = fn + rfn + r(r + 1)2 fn + r(r + 1(r + 2)3 fn
2
6
1
+ r(r + 1)(r + 2)(r + 3)4 fn .
24

Como hi I (i) (xn ) = P (i) (r) r=0 , i = 1, 2, 3, 4 se tiene
1
1
1
hI (1) (xn ) = fn + 2 fn + 3 fn + 4 fn
2
3
4
11
h2 I (2) (xn ) = 2 fn + 3 fn + 4 fn
12
3
h3 I (3) (xn ) = 3 fn + 4 fn
2
4 (4)
4
h I (xn ) = fn ,

luego la matriz A en 8.10 es

A=

1
0
0
0
0

0
1
0
0
0

0 0

1
2

1
4
11
12
3
2

1
3

1 1
0 1
0 0

(8.11)

Supongamos que queremos duplicar el paso, bastara con multiplicar G(xn )


por la matriz diagonal
D = diag[1, 2, 4, 8, 16].
Si definimos
FD (xn ) = [I(xn ), D I(xn ), 2D I(xn ), 3D I(xn ), 4D I(xn )]T ,
entonces podemos expresar FD (xn ) en terminos de F (xn ) por
FD (xn ) = A1 DAF (xn ),
es decir

FD (xn ) =

1
0
0
0
0

0 0
0
0
2 1 0
0
0 4 4 1
0 0
8 12
0 0
0
16

F (xn )

(8.12)

que coincide con la expresion obtenida en 8.6. En el caso de tratar con sistemas de m ecuaciones diferenciales ordinarias en vez de solo una, todo lo visto
sigue siendo valido pero los yn , fn , i fn seran vectores de m componentes
y los vectores y matrices en 8.10 seran de dimensiones m k, con bloques I
con la matriz identidad de dimension m m en vez de 1 en la matriz A.
Existe una implementacion particular debida a Gear que utiliza el vector de
Nordsieck expresando el metodo Adams en forma clasica en vez de diferencias
regresivas y que evita el tener que invertir y multiplicar matrices. Pero no lo
estudiamos en este curso.

8.4.

T
ecnicas de coeficientes variables

A esta clase pertenece un conjunto de metodos en los que los coeficientes


dependen directamente de la distancia entre los nodos. Al deducir los MLM
podamos haber supuesto que los nodos no eran equidistantes y hubiesemos
obtenido metodos de este tipo. No son metodos que se usen hoy en da y solo
mostraremos aqu un ejemplo debido a Ceschino por interes historico.
Denotemos por yn+j la aproximacion numerica en el punto xn+j = xn +jh
y por fn+j = f (xn+j , yn+j ). La formula de Ceschino se corresponde con
un metodo Adams Bashford Moulton de tercer orden, pensado para aplicar
como metodo predictor corrector. Cuando pasamos de xn a xn+ usaremos
el par predictor-corrector

[(12 + 9 + 22 )fn 4(3 + )fn1 + (3 + 2)fn2 ]


yn+ = yn +
12
h

yn+ = yn +
[(3 + 2)fn+ + (3 + )(1 + )fn 2 fn1 ]
6(1 + )
En el paso siguiente cuando buscamos la solucion en xn+2 usaramos la
pareja
yn+2
yn+2

h
= yn+ +
[(9 + 14)fn+ (3 + 5)(1 + )fn + 52 fn1 ]
6(1 + )
h
[5fn+2 + 8fn+ fn ]
= yn+ +
12

Finalmente cuando pasamos a xn+3 todos los nodos se encuentran a la misma


distancia h por lo que renombramos h esta distancia y trabajamos con el
par ABM clasico que es cualquiera de los anteriores para = 1

yn+1 = yn +
[23fn 16fn1 + 5fn2 ]
12
h

yn+1 = yn +
[5fn+1 + 8fn fn1 ]
12

8.5.

Estructura general de un algoritmo de


orden y paso variable

Cuando se realizan calculos computacionales para aproximar la solucion de


un problema de valores iniciales mediante metodos predictor corrector necesitamos tener herramientas que nos permitan modificar el paso o el orden, es
decir el metodo, cuando sea necesario para obtener la precision deseada con
el menor esfuerzo posible. Nos referiremos con las siglas MOPV (metodos de
orden y paso variables) a algoritmos que implementen estos cambios de forma
mas o menos automatica. En este sentido las componentes de un algoritmo
MOPV son
una familia de metodos
un procedimiento de arranque
un estimador del error local
una estrategia para decidir cuando cambiar el paso y/o el orden
una tecnica para cambiar el paso y/o el orden.
Ya hemos visto la mayor parte de estas componentes, que revisaremos brevemente.
Una familia de m
etodos. Aqu podemos quedarnos con una familia de
metodos Adams Bashford Moulton de ordenes 1 a 13 para ser implementados en forma de predictor corrector, junto con alg
un metodo con region de
estabilidad grande, de tipo BDF, para abordar problemas especiales.
Un procedimiento de arranque. Solo tenemos una condicion inicial, por
lo que podemos empezar con un metodo de un paso y despues ir cambiando
a un metodos de dos pasos, de tres, etc. hasta llegar rapidamente al n
umero
de pasos con los que queremos trabajar. Puede que esto nos obligue a tomar
en los primeros pasos un h peque
no para no tener un error local elevado.
Un estimador del error local. Ya hemos visto el dispositivo de Milne para
estimar el error local de truncatura de los MLM. Es una tecnica sencilla y
eficaz para realizar esta estimacion.
Una estrategia que nos ayude a decidir si tenemos que modificar la longitud
de paso h con la que estamos trabajando y si tenemos que modificar el orden
del metodo con el que estamos trabajando, es decir si tenemos que cambiar
de metodo. Vamos a ver como podemos resolver ambos problemas a la vez.
9

Supongamos que estamos trabajando con un metodo de orden k. Sea Ek la


norma de la estimacion del error local en xn+1 y sea una tolerancia prefijada
por el usuario. As un criterio obvio de aceptacion del paso que va de xn a
xn+1 es que
Ek
(8.13)
sera un criterio en el que fijamos el error permitido en cada paso. Tambien
sera razonable un criterio de error por unidad de paso del tipo Ek h que
controlara mejor el error global acumulado en todo el proceso. Ya vimos que
para los metodos ABM, expresados en diferencias regresivas, una estimacion
del error local era
[mt]
Ek =k Tn+1 k=k hk k fn+1 k
(8.14)
Esta estimacion estaba disponible tras la u
ltima aplicacion del corrector en
[m]
los modos P (EC)m E 1t . Supongamos que este paso yn+1 ha sido aceptado.
Antes de seguir adelante podemos preguntarnos cual hubiese sido el mayor
paso con el que podamos haber trabajado para ir de xn a xn+1 pero usando
metodos ABM de ordenes k 1, k y k + 1 para tomarlo como referencia para
el paso siguiente. En el caso de que el paso hubiese sido rechazado, tambien
podemos realizar este analisis y usarlo para repetir el paso.
Denotemos por hk el paso usado por el metodo de orden k para ir de xn a
xn+1 . Como el paso ha sido aceptado la estimacion del error local sera de la
forma
Ek = Khk+1
0 1,
(8.15)
k ,
k mayor paso con el que podamos haber
donde K es una constante. Sea h
trabajado para que la estimacion del error fuese , es decir
k+1
Ek = K h
k

(8.16)

luego de 8.15 y 8.16 se tiene que




hk
k
h

k+1

k hk
luego h

Ek

1
 k+1

(8.17)

estimacion que podemos calcular usando 8.14. Supongamos ahora que hubiesemos trabajado para ir de xn a xn+1 con metodos de ordenes k 1 y
k + 1 y pasos hk1 y hk+1 respectivamente. Entonces tendramos de formas
similar a 8.14 las relaciones
[mt]

Ek1 =k hk1 k1 k1 fn+1 k,

[mt]

Ek+1 =k hk+1 k+1 k+1 fn+1 k,

10

(8.18)

cantidades que tambien podemos calcular. Repitiendo el analisis anterior en


estos dos nuevos escenarios llegamos a
k+i hk+i
h

Ek+i

1
 k+1+i

i = 1, 0, 1.

(8.19)

Elegiremos el mayor de los tres para determinar el orden y el paso con el que
seguir trabajando. Puede ocurrir que se mantenga el orden y solo se modifique
el paso. En la practica se pueden utilizar muchos heursticos para no realizar
excesivos cambios y mantenerlos si no se produce una mejora significativa.
Una t
ecnica para modificar el paso y/o el orden. Ya hemos visto varias estrategias de cambio de paso. Con respecto al cambio de orden, si los metodos
ABM estan expresados en forma de diferencias regresivas y si solo modificamos el orden de uno en uno, es decir si pasamos de orden k a orden k 1
o k + 1, entonces lo mas sencillo es lo siguiente. Al reducir en uno el orden
hay que reducir en uno el n
umero de pasos y por tanto hay que desprenderse
de una diferencia regresiva. En el caso de aumentar en uno el orden supone
aumentar el n
umero de pasos en una unidad y por tanto usar una diferencia
regresiva adicional. Lo que hacemos de en vez de a
nadir la nueva y quitar la
u
ltima, como sera manteniendo el orden, a
nadiremos la nueva manteniendo
todas las anteriores, consiguiendo as trabajar con el metodos de un orden
mas. En el caso de utilizar el vector de Nordsieck, quitaramos una derivada,
es decir la u
ltima componente del vector, o a
nadiramos una nueva derivada
estimandola por diferencias de las derivadas anteriores.

11

Das könnte Ihnen auch gefallen