capitulo 8 de metodos numericos

12
8. C´ odigos autom´aticos de orden y paso variable Eduardo S´ainz de la Maza 17 de marzo de 2011

Upload: jenniferperez

Post on 05-Jan-2016

213 views

Category:

Documents


0 download

DESCRIPTION

Tema 8 de metodos numericos

TRANSCRIPT

Page 1: Capitulo 8 de metodos numericos

8. Codigos automaticos de orden y pasovariable

Eduardo Sainz de la Maza

17 de marzo de 2011

Page 2: Capitulo 8 de metodos numericos

Indice general

8. Codigos automaticos de orden y paso variable 2

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

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

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

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

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

1

Page 3: Capitulo 8 de metodos numericos

Capıtulo 8

Codigos automaticos de ordeny paso variable

En este capıtulo analizamos el problema de cambiar el paso o el orden, esdecir el metodo, para el caso de metodos Adams Bashford Moulton pensandoen implementaciones de tipo predictor corrector expresados en diferenciasregresivas.

8.1. Cambio de la longitud de paso en meto-

dos Adams

Cuando se modifica la longitud de paso de h a un nuevo paso αh al pasar delpunto xn a un nuevo xn+1 = xn+αh los metodos de un paso no tienen ningunadificultad pues solamente relacionan el yn con el yn+1 por lo que el paso conel que trabajar siempre es la distancia entre el xn y el xn+1. Por el contrarioun metodo lineal multipaso de k pasos relaciona el nuevo yn+1 a calcularcon k valores anteriores yn−j ya calculados, pero que cuando se modifica lalongitud de paso son desconocidos pues necesitamos aproximaciones de lasolucion y(x) en los puntos xn − αh, xn − 2αh, . . . , xn − (k − 1)αh.

Podemos distinguir dos clases de tecnicas para realizar cambios de longitudde paso. Una serıa las llamadas tecnicas de tipo interpolatorio y otra lastecnicas de coeficientes variables.

En las tecnicas de tipo interpolatorio se aproximan los valores desconocidosinterpolando los valores conocidos y, en el caso particular de metodos AdamsBashford Moulton (ABM), podemos realizar dicha interpolacion directamen-

2

Page 4: Capitulo 8 de metodos numericos

te para los valores de f ya que solo aparecen dos valores de y, el nuevo acalcular y el anterior conocido. Estos valores anteriores fn−t, t = 0, 1, . . . , k−1los representaremos por sus diferencias regresivas ∇ifn, i = 0, 1, . . . , k − 1.

En las tecnicas de coeficientes variables se usan metodos ABM desarrolladospara nodos no uniformemente espaciados, en los que los coeficientes depen-deran 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 pasoes duplicarlo o dividirlo por dos. El el caso de que el nuevo h sea el do-ble que el h viejo necesitamos los valores anteriores fn−2, fn−4, . . . , fn−2k+2

que, aunque si han sido calculados, no tienen porque haber sido almacena-dos. Veamos un algoritmo debido a Krogh (1973) para el caso de metodosAdams en diferencias regresivas. En este caso necesitamos expresar las dife-rencias regresivas de paso doble interpolando las de paso normal. Sea puesI(x) el polinomio de grado k − 1 que interpola f(x, y(x)) en los k puntos(xn−t, fn−t), t = 0, 1, . . . , k − 1. Es decir se tiene que

∇iI(xn) = ∇ifn, i = 0, 1, . . . , k − 1 (8.1)

donde ∇I(x) = I(x)− I(x− h) y ∇iI(x) = ∇i−1I(x)−∇i−1I(x− h).

Para todo polinomio de grado k − 1 se verifica que

∇iI(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 ∇DI(x) = I(x)− I(x−2h)y ∇i

DI(x) = ∇i−1D I(x)−∇i−1

D I(x− 2h). Se tiene que

∇I(xn) = I(xn)− I(xn − h)

∇2I(xn) = I(xn)− 2I(xn − h) + I(xn − 2h)

luego(2∇−∇2)I(xn) = I(xn)− I(xn − 2h) = ∇DI(xn).

Es decir tenemos la siguiente identidad:

∇D ≡ 2∇−∇2. (8.3)

3

Page 5: Capitulo 8 de metodos numericos

De 8.1, 8.2 y 8.3 podemos expresar las ∇iDI(xn) en funcion de las ∇ifn. En

el caso i = 0 es trivial I(xn) = fn. veamos las siguientes hasta k = 5.

∇DI(xn) = ∇(2−∇)I(xn) = 2∇fn −∇2fn

∇2DI(xn) = ∇2(2−∇)2I(xn) = (4∇2 − 4∇3 +∇4)I(xn)

= 4∇2fn − 4∇3fn +∇4fn

∇3DI(xn) = ∇3(2−∇)3I(xn) = (8∇3 − 12∇4 + 6∇5 −∇6)I(xn)

= (8∇3 − 12∇4)I(xn)

= 8∇3fn − 12∇4fn

∇4DI(xn) = ∇4(2−∇)4I(xn) = (16∇4 + · · · )I(xn)

= 16∇4I(xn) = 16∇4fn.

Un algoritmo que nos realiza esta expresion de las diferencias regresivas depaso doble de fn a partir de las diferencias de paso normal es por tantoel siguiente. Sea Ai ≡ A(i) = ∇ifn, i = 1, 2, . . . , k − 1 y consideremos lassiguientes lıneas de codigo

for j = 1 to k − 2 dobegin

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

endA(k − 1) = 2 ∗ A(k − 1)

(8.4)

En el caso k = 5 producirıa

A1 A2 A3 A4

∇fn ∇2fn ∇3fn ∇4fnj = 1 (2∇−∇2)fn (2∇2 −∇3)fn (2∇3 −∇4)fn 2∇4fnj = 2 (4∇2 − 4∇3 +∇4)fn (4∇3 − 4∇4)fn 4∇4fnj = 3 (8∇3 − 12∇4)fn 8∇4fn

16∇4fn

Es decir nos transforma el vector [∇fn,∇2fn,∇3fn,∇4fn] de diferencias re-gresivas normales en el vector [∇Dfn,∇2

Dfn,∇3Dfn,∇4

Dfn] de diferencias re-gresivas de paso doble.

De forma similar podemos deducir un procedimiento para el caso de reducir elpaso a la mitad. Ahora queremos deducir las diferencias relativas a los datosI(xn), I(xn− h

2), . . . , I(xn− (k−1)h

2). Denotemos por ∇HI(x) = I(x)−I(x− h

2)

4

Page 6: Capitulo 8 de metodos numericos

y por ∇iHI(x) = ∇i−1

H I(x)−∇i−1H I(x− h

2). Obtener las ∇D a partir de las ∇

es el mismo proceso que obtener las ∇ a partir de las ∇H . Es decir

∇ ≡ 2∇H −∇2H . (8.5)

Al igual que antes conocemos el algoritmo que transforma las diferenciasregresivas [∇Hfn,∇2

Hfn,∇3Hfn,∇4

Hfn] en [∇fn,∇2fn,∇3fn,∇4fn], pero bus-camos el algoritmo contrario que exprese las ∇i

H en funcion de las ∇i. Comola relacion anterior es lineal y ademas es un sistema triangular podremosresolverlo con facilidad. En concreto para el caso k = 5 tenemos

∇fn = (2∇H −∇2H)I(xn)

∇2fn = (4∇2H − 4∇3

H +∇4H)I(xn)

∇3fn = (8∇3H − 12∇4

H)I(xn)

∇4fn = 16∇4HI(xn).

Resolviendo, obtenemos

∇4HI(xn) =

1

16∇4fn

∇3HI(xn) =

1

8∇3fn +

3

32∇4fn (8.6)

∇2HI(xn) =

1

4∇2fn +

1

8∇3fn +

5

64∇4fn

∇HI(xn) =1

2∇fn +

1

8∇2fn +

1

16∇3fn +

5

128∇4fn.

Nuevamente un pseudo-algoritmo que implemente estos cambios viene dadopor, sea Ai ≡ A(i) = ∇ifn, i = 1, 2, . . . , k − 1

A(k − 1) = 12∗ A(k − 1)

for j = k − 2 downto 1 dobeginA(k − 1) = 1

2∗ A(k − 1)

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

end

(8.7)

Aplicandolo nuevamente al caso k = 5 obtenemos

A4 A3 A2 A1

∇4fn ∇3fn ∇2fn ∇fn12∇4fn

j=3 14∇4fn (1

2∇3+ 1

8∇4)fn

j=2 18∇4fn (1

4∇3+ 1

8∇4)fn (1

2∇2+ 1

8∇3+ 1

16∇4)fn

j=1 116∇4fn (1

8∇3+ 3

32∇4)fn (1

4∇2+ 1

8∇3+ 5

64∇4)fn (1

2∇+ 1

8∇2+ 1

16∇3+ 5

128∇4)fn

5

Page 7: Capitulo 8 de metodos numericos

8.3. Caso general vector de Nordsieck

Analizamos ahora una tecnica que permite el aumento o disminucion arbi-trario 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 fn−t, t = 0, 1, . . . , k−1 con elvector de datos asociado al mismo polinomio I(x) que fija las k− 1 primerasderivadas en el punto xn. Sea F (xn) definido por

F (xn) = [fn,∇fn, . . . ,∇k−1fn]T (8.8)

= [I(xn),∇I(xn), . . . ,∇k−1I(xn)]T ,

teniendo en cuenta que ∇iI(xn) = O(hi) parece razonable definir el vectorde derivadas escalado con potencias de h por

G(xn) = [I(xn), hI(1)(xn), . . . , hk−1I(k−1)(xn)]T . (8.9)

Este vector se llama vector de Nordsieck y existe una relacion lineal entreambos vectores

G(xn) = AF (xn) (8.10)

donde la matriz A es independiente de h. De esta manera si queremos reem-plazar h por αh todo lo que tenemos que hacer es multiplicar las componentesdel vector G(xn) por potencias αi. Deshaciendo el cambio ponemos despuesvolver 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

p(r) = fn + r∇fn +1

2r(r + 1)∇2fn +

1

6r(r + 1(r + 2)∇3fn

+1

24r(r + 1)(r + 2)(r + 3)∇4fn.

Como hiI(i)(xn) = P (i)(r)∣∣r=0

, i = 1, 2, 3, 4 se tiene

hI(1)(xn) = ∇fn +1

2∇2fn +

1

3∇3fn +

1

4∇4fn

h2I(2)(xn) = ∇2fn +∇3fn +11

12∇4fn

h3I(3)(xn) = ∇3fn +3

2∇4fn

h4I(4)(xn) = ∇4fn,

6

Page 8: Capitulo 8 de metodos numericos

luego la matriz A en 8.10 es

A =

1 0 0 0 00 1 1

213

14

0 0 1 1 1112

0 0 0 1 32

0 0 0 0 1

(8.11)

Supongamos que queremos duplicar el paso, bastarıa con multiplicar G(xn)por la matriz diagonal

D = diag[1, 2, 4, 8, 16].

Si definimos

FD(xn) = [I(xn),∇DI(xn),∇2DI(xn),∇3

DI(xn),∇4DI(xn)]T ,

entonces podemos expresar FD(xn) en terminos de F (xn) por

FD(xn) = A−1DAF (xn),

es decir

FD(xn) =

1 0 0 0 00 2 −1 0 00 0 4 −4 10 0 0 8 −120 0 0 0 16

F (xn) (8.12)

que coincide con la expresion obtenida en 8.6. En el caso de tratar con siste-mas de m ecuaciones diferenciales ordinarias en vez de solo una, todo lo vistosigue siendo valido pero los yn, fn, ∇ifn serıan vectores de m componentesy los vectores y matrices en 8.10 serıan de dimensiones m× k, con bloques Icon 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 deNordsieck expresando el metodo Adams en forma clasica en vez de diferenciasregresivas y que evita el tener que invertir y multiplicar matrices. Pero no loestudiamos en este curso.

7

Page 9: Capitulo 8 de metodos numericos

8.4. Tecnicas de coeficientes variables

A esta clase pertenece un conjunto de metodos en los que los coeficientesdependen directamente de la distancia entre los nodos. Al deducir los MLMpodıamos haber supuesto que los nodos no eran equidistantes y hubiesemosobtenido metodos de este tipo. No son metodos que se usen hoy en dıa y solomostraremos aquı un ejemplo debido a Ceschino por interes historico.

Denotemos por yn+jα la aproximacion numerica en el punto xn+jα = xn+jαhy por fn+jα = f(xn+jα, yn+jα). La formula de Ceschino se corresponde conun metodo Adams Bashford Moulton de tercer orden, pensado para aplicarcomo metodo predictor corrector. Cuando pasamos de xn a xn+α usaremosel par predictor-corrector

yn+α = yn +αh

12[(12 + 9α + 2α2)fn − 4α(3 + α)fn−1 + α(3 + 2α)fn−2]

yn+α = yn +αh

6(1 + α)[(3 + 2α)fn+α + (3 + α)(1 + α)fn − α2fn−1]

En el paso siguiente cuando buscamos la solucion en xn+2α usarıamos lapareja

yn+2α = yn+α +αh

6(1 + α)[(9 + 14α)fn+α − (3 + 5α)(1 + α)fn + 5α2fn−1]

yn+2α = yn+α +αh

12[5fn+2α + 8fn+α − fn]

Finalmente cuando pasamos a xn+3α todos los nodos se encuentran a la mismadistancia αh por lo que renombramos h esta distancia y trabajamos con elpar ABM clasico que es cualquiera de los anteriores para α = 1

yn+1 = yn +h

12[23fn − 16fn−1 + 5fn−2]

yn+1 = yn +h

12[5fn+1 + 8fn − fn−1]

8

Page 10: Capitulo 8 de metodos numericos

8.5. Estructura general de un algoritmo de

orden y paso variable

Cuando se realizan calculos computacionales para aproximar la solucion deun problema de valores iniciales mediante metodos predictor corrector nece-sitamos tener herramientas que nos permitan modificar el paso o el orden, esdecir el metodo, cuando sea necesario para obtener la precision deseada conel menor esfuerzo posible. Nos referiremos con las siglas MOPV (metodos deorden y paso variables) a algoritmos que implementen estos cambios de formamas o menos automatica. En este sentido las componentes de un algoritmoMOPV 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 bre-vemente.

Una familia de metodos. Aquı podemos quedarnos con una familia demetodos Adams Bashford Moulton de ordenes 1 a 13 para ser implementa-dos en forma de predictor corrector, junto con algun metodo con region deestabilidad grande, de tipo BDF, para abordar problemas especiales.

Un procedimiento de arranque. Solo tenemos una condicion inicial, porlo que podemos empezar con un metodo de un paso y despues ir cambiandoa un metodos de dos pasos, de tres, etc. hasta llegar rapidamente al numerode pasos con los que queremos trabajar. Puede que esto nos obligue a tomaren los primeros pasos un h pequeno para no tener un error local elevado.

Un estimador del error local. Ya hemos visto el dispositivo de Milne paraestimar el error local de truncatura de los MLM. Es una tecnica sencilla yeficaz para realizar esta estimacion.

Una estrategia que nos ayude a decidir si tenemos que modificar la longitudde paso h con la que estamos trabajando y si tenemos que modificar el ordendel metodo con el que estamos trabajando, es decir si tenemos que cambiarde metodo. Vamos a ver como podemos resolver ambos problemas a la vez.

9

Page 11: Capitulo 8 de metodos numericos

Supongamos que estamos trabajando con un metodo de orden k. Sea Ek lanorma de la estimacion del error local en xn+1 y sea τ una tolerancia prefijadapor el usuario. Ası un criterio obvio de aceptacion del paso que va de xn axn+1 es que

Ek ≤ τ (8.13)

serıa un criterio en el que fijamos el error permitido en cada paso. Tambienserıa razonable un criterio de error por unidad de paso del tipo Ek ≤ hτ quecontrolarıa mejor el error global acumulado en todo el proceso. Ya vimos quepara los metodos ABM, expresados en diferencias regresivas, una estimaciondel error local era

Ek =‖ Tn+1 ‖=‖ hγk∇kf[m−t]n+1 ‖ (8.14)

Esta estimacion estaba disponible tras la ultima aplicacion del corrector enlos modos P (EC)mE1−t. Supongamos que este paso y

[m]n+1 ha sido aceptado.

Antes de seguir adelante podemos preguntarnos cual hubiese sido el mayorpaso con el que podıamos haber trabajado para ir de xn a xn+1 pero usandometodos ABM de ordenes k−1, k y k+ 1 para tomarlo como referencia parael paso siguiente. En el caso de que el paso hubiese sido rechazado, tambienpodemos 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 axn+1. Como el paso ha sido aceptado la estimacion del error local sera de laforma

Ek = βτ ≈ Khk+1k , 0 ≤ β ≤ 1, (8.15)

donde K es una constante. Sea hk mayor paso con el que podıamos habertrabajado para que la estimacion del error fuese τ , es decir

Ek = τ ≈ Khk+1k (8.16)

luego de 8.15 y 8.16 se tiene que

β ≈(hkhk

)k+1

luego hk ≈ hk

Ek

) 1k+1

, (8.17)

estimacion que podemos calcular usando 8.14. Supongamos ahora que hu-biesemos trabajado para ir de xn a xn+1 con metodos de ordenes k − 1 yk + 1 y pasos hk−1 y hk+1 respectivamente. Entonces tendrıamos de formassimilar a 8.14 las relaciones

Ek−1 =‖ hk−1γk−1∇k−1f[m−t]n+1 ‖, Ek+1 =‖ hk+1γk+1∇k+1f

[m−t]n+1 ‖, (8.18)

10

Page 12: Capitulo 8 de metodos numericos

cantidades que tambien podemos calcular. Repitiendo el analisis anterior enestos dos nuevos escenarios llegamos a

hk+i ≈ hk+i

Ek+i

) 1k+1+i

, i = −1, 0, 1. (8.19)

Elegiremos el mayor de los tres para determinar el orden y el paso con el queseguir trabajando. Puede ocurrir que se mantenga el orden y solo se modifiqueel paso. En la practica se pueden utilizar muchos heurısticos para no realizarexcesivos cambios y mantenerlos si no se produce una mejora significativa.

Una tecnica para modificar el paso y/o el orden. Ya hemos visto varias es-trategias de cambio de paso. Con respecto al cambio de orden, si los metodosABM estan expresados en forma de diferencias regresivas y si solo modifica-mos el orden de uno en uno, es decir si pasamos de orden k a orden k − 1o k + 1, entonces lo mas sencillo es lo siguiente. Al reducir en uno el ordenhay que reducir en uno el numero de pasos y por tanto hay que desprendersede una diferencia regresiva. En el caso de aumentar en uno el orden suponeaumentar el numero de pasos en una unidad y por tanto usar una diferenciaregresiva adicional. Lo que hacemos de en vez de anadir la nueva y quitar laultima, como serıa manteniendo el orden, anadiremos la nueva manteniendotodas las anteriores, consiguiendo ası trabajar con el metodos de un ordenmas. En el caso de utilizar el vector de Nordsieck, quitarıamos una derivada,es decir la ultima componente del vector, o anadirıamos una nueva derivadaestimandola por diferencias de las derivadas anteriores.

11