clase no. 23: diferenciación numérica: sistemas de ...joaquin/mn11/clase23.pdf · clase no. 23:...

28
Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de disparo Método predictor-corrector MAT–251 Dr. Alonso Ramírez Manzanares Depto. de Matemáticas Univ. de Guanajuato e-mail: alram@ cimat.mx web: http://www.cimat.mx/salram/met_num/ Dr. Joaquín Peña Acevedo CIMAT A.C. e-mail: joaquin@ cimat.mx Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 1 / 27

Upload: others

Post on 11-Oct-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Clase No. 23:

Diferenciación numérica:Sistemas de ecuaciones lineales ordinarias

Método de disparoMétodo predictor-corrector

MAT–251 Dr. Alonso Ramírez ManzanaresDepto. de MatemáticasUniv. de Guanajuatoe-mail: [email protected]: http://www.cimat.mx/salram/met_num/

Dr. Joaquín Peña AcevedoCIMAT A.C.e-mail: [email protected]

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 1 / 27

Page 2: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Sistema de EDOs (I)

Sean yi(x) : R→ R para i = 1,2, ...,n. Queremos resolver el PVI

y′1 = f1(x,y1,y2, ...,yn)

y′2 = f2(x,y1,y2, ...,yn)

...

y′n

= fn(x,y1,y2, ...,yn)

yi(a) = αi, i = 1,2, ...,n.

Si

Y =

y1y2...yn

, Y ′ =

y′1y′2...y′n

, α =

α1α2...αn

, F =

f1f2...fn

,

Entonces el sistema se puede reescribir el PVI como

Y ′ = F(x,Y), Y(a) = α.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 2 / 27

Page 3: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Sistema de EDOs (II)

Para resolverlo, podemos extender cualquiera de los métodos de soluciónvistos previamente.

Por ejemplo, podemos usar

• un método basado en series de Taylor de orden m,

Y(x+ h) = Y(x) + hY ′(x) +h2

2Y ′′(x) + ...+

hm

m!Y(m)(x).

• un método tipo Runge-Kutta. Por ejemplo, el de cuarto orden:

Yk+1 = Yk +h

6(K1 + 2K2 + 2K3 +K4)

donde

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 3 / 27

Page 4: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Sistema de EDOs (III)

K1 = F(x, Y)

K2 = F(x+ h/2, Y + hK1/2)

K3 = F(x+ h/2, Y + hK2/2)

K4 = F(x+ h, Y + hK3)

Ejemplo. Resolver

y′1 = y1 − y2 + 2x− x2 − x3

y′2 = y1 + y2 − 4x2 + x3

y1(0) = 1y2(0) = 0

La solución del problema es

y1(x) = x2 + ex cosx, y2(x) = −x3 + ex sinx.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 4 / 27

Page 5: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Sistema de EDOs (IV)

Resolviendo en [0,2] con n = 50 se obtiene lo siguiente:

0.0 0.5 1.0 1.5 2.0

−1

01

2

c(a, b)

c(dm

in, d

max

)

y1

y2

Solución y1(2) y2(2)Euler 1.0538040281 -0.9873304309RK4 0.9250671066 -1.2811503428

Analítica 0.9250676794 -1.2811503026

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 5 / 27

Page 6: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Sistema de EDOs (V)

Diferencias entre la solución analítica y la solución numérica

0.0 0.5 1.0 1.5 2.0

−0.

30−

0.20

−0.

100.

00

c(a, b)

c(dm

in, d

max

)

Diferencias en y1Diferencias en y2

0.0 0.5 1.0 1.5 2.0−

2e−

070e

+00

2e−

074e

−07

6e−

07c(a, b)

c(dm

in, d

max

)

Diferencias en y1Diferencias en y2

Euler explícito Runge-Kutta de cuarto orden

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 6 / 27

Page 7: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Ecuaciones de orden superior (I)

Para resolver la ecuación

y′′ = f (x,y,y′)

podemos introducir las variables

y1 = y

y2 = y′

Entonces

y′1 = y2

y′2 = f (x,y1,y2)

Para resolver la ecuación necesitamos una condición inicial

y1(a) = αy2(a) = β

=⇒ y(a) = α1y′(a) = α2

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 7 / 27

Page 8: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Ecuaciones de orden superior (II)

En general, para resolver el PVI

y(n) = f (x, y, y′, ..., y(n−1))y(a) = α1y′(a) = α2

...y(n−1)(a) = αn

Hacemos y1 = y, y2 = y′, ..., yn = y(n−1) y obtenemos el sistema de ODEs:

y′1 = y2

y′2 = y3

...y′n−1 = yn

y′n

= f (x,y1,y2, ...,yn)

yi(a) = αi i = 1,2, ...,n

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 8 / 27

Page 9: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Ejemplo (I)

Consideremos el PVI

y′′ = −y,y(0) = 1,y′(0) = 0,

para x ∈ [0,40].

La solución del problema es

y(x) = cosx.

Reescribimos el problema como un sistema de ecuaciones ordinarias:

y′1 = y2,

y′2 = −y1,

y1(0) = 1,y2(0) = 0,

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 9 / 27

Page 10: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Ejemplo (II)

n = 400, h = 0.1

Euler explícito

0 10 20 30 40

−6

−4

−2

02

46

c(a, b)c(

dmin

, dm

ax)

Solucion analiticaSolucion numerica

RK4

0 10 20 30 40

−1.

0−

0.5

0.0

0.5

1.0

c(a, b)

c(dm

in, 1

.4)

Solucion analiticaSolucion numerica

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 10 / 27

Page 11: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Ejemplo (III)

Para usar el método de Euler implícito, tenemos que

y1,k+1 = y1,k + hf1(xk+1,y1,k+1,y2,k+1) = y1,k + hy2,k+1

y2,k+1 = y2,k + hf2(xk+1,y1,k+1,y2,k+1) = y2,k − hy1,k+1

Entonces, para cada k = 1, ...,n tenemos que resolver un sistema lineal2× 2:

1 −h1 h

��

y1,k+1y2,k+1

=

y1,ky2,k

Usando la discretización con n = 400 (h = 0.1) obtenemos lo siguiente

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 11 / 27

Page 12: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Ejemplo (IV)

0 10 20 30 40

−1.

0−

0.5

0.0

0.5

1.0

c(a, b)

c(dm

in, 1

.4)

Solucion analiticaSolucion numerica

Resultado obtenido con Euler implícito

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 12 / 27

Page 13: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Problema de valores en la frontera (I)

En el intervalo [a,b] queremos resolver el problema de valores en la frontera:

y′′ = f (x,y,y′)

y(a) = α

y(b) = β

El problema lo podríamos resolver con los métodos vistos anteriormente situvieramos y′(a).

Este problema es más complicado que un PVI si queremos resolverlo usandoun método explícito. Una estrategia para resolverlo de esta forma es tratarde adivinar el valor de y′(a) y esperar a que cuando calculemos y(b)coincida con β.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 13 / 27

Page 14: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Problema de valores en la frontera (II)

0 1 2 3 4 5 6

010

2030

4050

c(a, b + 1.5)

c(m

in(Y

k[, 1

]), m

ax(Y

k[, 1

]))

y(b) = 44.0

y(b) = 19.0

y(b) = 1.1

y(b) = 6.0

Ejemplo: y′′ = −9.8, y(0) = 1.5, y(5) = 6.

Si y(b) 6= β, tratamos con otro valor para y′(a). Un procedimiento que haceesto de forma sistematica es el método de disparo.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 14 / 27

Page 15: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Método de disparo (I)

Tenemos que dar un valor a y′(a), digamos y′(a) = z. Al resolver la ecuacióntendremos que el valor de la solución en x = b dependerá de z, y por eso lodenotamos como ϕ(z).

Dado y′(a) = z, el método de disparo combina cualquier método queresuelve un PVI con algún método de cálculo de ceros de funciones.

La idea es la siguiente. Resolvemos dos PVIs:

y′′ = f (x,y(x),y′(x))y(a) = αy′(a) = zi

para dos valores z1 y z2 que elegimos de forma arbitraria. Con esto,obtenemos dos soluciones numéricas en las que en un caso tenemos quey(b) = ϕ(z1) y en el otro y(b) = ϕ(z2).

Si suponemos que ϕ(z) es una función lineal, entonces podemos determinarun cero de ϕ(z)− β de la siguiente manera.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 15 / 27

Page 16: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Método de disparo (II)

−2 0 2 4 6 8 10

−1

01

23

45

6

c(−2, 11)

c(−

1, 6

)

φ(z)

zz1 z2 z3

φ(z1)

φ(z2)β

z3 − z2

β− ϕ(z2)=

z2 − z1

ϕ(z2)− ϕ(z1)

z3 = z2 + [β− ϕ(z2)]z2 − z1

ϕ(z2)− ϕ(z1)

Si al resolver el PVI con y′(a) = z3 se tiene que y(b) 6= β, entonces repetimosla estimación de la derivada en x = a:

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 16 / 27

Page 17: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Método de disparo (III)

zi+1 = zi + [β− ϕ(zi)]zi − zi−1

ϕ(zi)− ϕ(zi−1)

hasta que |ϕ(zi+1)− β| < ε dado.

Ejemplo. y′′ = 32y

2, y(0) = 4, y(1) = 1.

i zi ϕ(zi)1 -8.000000000 0.1161940202 -8.001000000 -0.0483029783 -7.994627221 2.3485849044 -7.998212801 0.5395737925 -7.997300206 0.8455628626 -7.996839606 1.0309898377 -7.996916585 0.9983570768 -7.996912709 0.9999836089 -7.996912670 1.000000009

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 17 / 27

Page 18: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Un refinamiento

Se puede mejorar la forma de interpolar los valores. Una forma es usarcalcular el polinómio cúbico p(z) que pasa por los puntos

(zi−3, ϕ(zi−3)), (zi−2, ϕ(zi−2)), (zi−1, ϕ(zi−1)), (zi, ϕ(zi))

y definimos zi+1 como la raíz de p(z)− β = 0.

Para no tener que resolver la ecuación cúbica, otra forma es calcular elpolinomio cúbico q(·) que pasa por los puntos

(ϕ(zj), zj ) j = i− 3, i− 2, i− 2, i.

y entonces calculamos zi+1 = q(β).

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 18 / 27

Page 19: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Un refinamiento

Se puede mejorar la forma de interpolar los valores. Una forma es usarcalcular el polinómio cúbico p(z) que pasa por los puntos

(zi−3, ϕ(zi−3)), (zi−2, ϕ(zi−2)), (zi−1, ϕ(zi−1)), (zi, ϕ(zi))

y definimos zi+1 como la raíz de p(z)− β = 0.

Para no tener que resolver la ecuación cúbica, otra forma es calcular elpolinomio cúbico q(·) que pasa por los puntos

(ϕ(zj), zj ) j = i− 3, i− 2, i− 2, i.

y entonces calculamos zi+1 = q(β).

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 18 / 27

Page 20: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos multipaso (I)

Tenemos el problema y′ = f (x,y), x ∈ [a,b], con y(a) = α.

Hemos visto métodos de solución de un paso: para calcular yi+1 sólonecesitamos conocer yi.

Para calcular yi+1 un método multipaso, necesitamos conoceryi,yi−1, ...,yi−s con s ≥ 1.

Ejemplo de un método dos pasos.

Tenemos que

yk+1 = yk +

∫ xk+1

xk

f (s,y(s))ds

Para aproximar la integral, podemos reemplazar el integrando por unpolinomio de interpolación. Por ejemplo, podemos construir el polinomio degrado 1 que interpola los puntos

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 19 / 27

Page 21: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos multipaso (II)

fk = f (xk,yk) ≈ f (xk,y(xk))

fk−1 = f (xk−1,yk−1) ≈ f (xk−1,y(xk−1))

Así,

P1(s) = fk +fk − fk−1

h(s− xk)

Entonces

yk+1 − yk =

∫ xk+1

xk

f (s,y(s))ds ≈∫ xk+1

xk

P1(s)ds

= fks+fk − fk−1

2h(s− xk)2

xk+1

xk

= fkh+fk − fk−1

2h

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 20 / 27

Page 22: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos multipaso (III)

yk+1 − yk =h

2(3fk − fk−1)

Este método es explícito y pertenece a la familia de métodosAdams-Bashforth.

Método explícito de Adams-Bashforth de 2 pasosy0 = α, y1 = α1,

yk+1 = yk +h

2[3f (xk,yk)− f (xk−1,yk−1)]

Este método tiene un error O(h3).

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 21 / 27

Page 23: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos multipaso (IV)

Observaciones:

Supongamos que tenemos un método de s pasos.

• Hay que tomar en cuenta que no podemos usar el método multipasopara calcular

y1, y2, ..., ys.

Así el primer valor que podemos calcular con este método es ys+1.

• Tenemos que buscar una forma de obtener los primeros s valores.

• Una alternativa es usar un método explícito para calcular y1,y2, ...,ys.

• Es importante que el método que elijamos para realizar cálculos losprimeros valores sea del mismo orden que el método multipaso.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 22 / 27

Page 24: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos multipaso (V)

Tenemos métodos explícitos, como los siguientes:

Método explícito de Adams-Bashforth de 3 pasosy0 = α, y1 = α1, y2 = α2,

yi+1 = yi +h

12[23f (xi,yi)− 16f (xi−1,yi−1) + 5f (xi−2,yi−2)]

Este método tiene un error O(h4).

Método explícito de Adams-Bashforth de 4 pasosy0 = α, y1 = α1, y2 = α2, y3 = α3,

yi+1 = yi +h

24[55f (xi,yi)− 59f (xi−1,yi−1) + 37f (xi−2,yi−2)− 9f (xi−3,yi−3)]

Este método tiene un error O(h5).

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 23 / 27

Page 25: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos multipaso (VI)

También hay métodos implícitos.

Método implícito de Adams-Moulton de 2 pasosy0 = α, y1 = α1,

yi+1 = yi +h

12[5f (xi+1,yi+1) + 8f (xi,yi)− f (xi−1,yi−1)]

Este método tiene un error O(h4).

Método implícito de Adams-Moulton de 3 pasosy0 = α, y1 = α1, y2 = α2,

yi+1 = yi +h

24[9f (xi+1,yi+1) + 19f (xi,yi)− 5f (xi−1,yi−1) + f (xi−2,yi−2)]

Este método tiene un error O(h5).

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 24 / 27

Page 26: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos multipaso (VII)

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 25 / 27

Page 27: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos predictor-corrector (I)

Es usual combinar los métodos explícitos y los implícitos, y el resultado esun método predictor-corrector:

• Se usa un método explícito para predecir el valor de una aproximación,

• y se aplica un método implícito para corregir esa predicción.

Por ejemplo, para obtener un método de cuarto orden predictor-correctorpodemos proceder de la siguiente manera:

Calculamos los valores y1,y2,y3 usando el método de Runge-Kutta decuarto orden.

Predecimos el valor y4 usando el método explícito de Adams-Bashforthde cuatro pasos:

y4 = y3 +h

24[55f (x3,y3)− 59f (x2,y2) + 37f (x1,y1)− 9f (x0,y0)]

Calculamos y4 usando el método implícito de Adams-Moulton de trespasos.

y4 = y3 +h

24[9f (x4, y4) + 19f (x3,y3)− 5f (x2,y2) + f (x1,y1)]

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 26 / 27

Page 28: Clase No. 23: Diferenciación numérica: Sistemas de ...joaquin/mn11/clase23.pdf · Clase No. 23: Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de

Métodos predictor-corrector (II)

Continuamos de esta forma para calcular los valores restantes.

Ejemplo. y′ = y− t2 + 1, t ∈ [0,2], y(0) = 0.5.

xi y(xi) yi |y(xi)− yi|0.0 0.5000000 0.5000000 00.2 0.8292986 0.8292933 0.00000530.4 1.2140877 1.2140762 0.00001140.6 1.6489406 1.6489220 0.00001860.8 2.1272295 2.1272056 0.00002391.0 2.6408591 2.6408286 0.00003051.2 3.1799415 3.1799026 0.00003891.4 3.7324000 3.7323505 0.00004951.6 4.2834838 4.2834208 0.00006301.8 4.8151763 4.8150964 0.00007992.0 5.3054720 5.3053707 0.0001013

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 31.10.2012 27 / 27