Ecuaciones Diferenciales Ordinarias

Anuncio
Capı́tulo 2
Ecuaciones Diferenciales Ordinarias
2.1.
Introducción
Una ecuación diferencial ordinaria lineal de la forma
d
y(x) = f (x, y)
dx
d
y(x) = y (x)
dx
con
(2.1)
se puede utilizar como modelo matemático de una gran variedad de fenómenos, ya sean fı́sicos o no fı́sicos, y
en disciplinas cientı́ficas y no cientı́ficas. Ejemplos de dichos fenómenos incluyen problemas de transferencia
de calor (termodinámica), circuitos eléctricos simples (ingenierı́a eléctrica), problemas de fuerza (ingenierı́a
mecánica), razón de crecimiento de bacterias (ciencias biológicas), razón de descomposición radioactiva (fı́sica
atómica), razón de cristalización de un componente quı́mico (quı́mica), taza de crecimiento de una población
(estadı́stica), etc. Existe una serie de métodos para resolver este tipo de ecuaciones, dentro de los que podemos
mencionar: separación de variables, solución exacta y solución por series finitas. Dentro de estos últimos,
veremos los métodos de Euler y Runge–Kutta segundo y cuarto orden.
2.2.
Método de Euler
La expansión en series de Taylor de primer orden se obtiene evaluando
y(xn+1 )
= y(xn ) + hf (xn , y(xn )) +
h2 f (xn , y(xn )) + · · · +
2
hp (p−1)
f
(xn , y(xn )) + Tn+1
p!
donde
Tn+1 =
hp+1 y (p+1) (xn )
,
(p + 1)!
xn < xn < xn+1
(2.2)
(2.3)
Para p = 1, tenemos:
y(xn+1 ) = y(xn ) + hf (xn , y(xn )) + Tn+1
(2.4)
Los términos de orden superior se desprecian. El algoritmo de Euler utiliza esta expansión en series de Taylor
lineal para calcular una nueva aproximación y(xn+1 ) (que denominaremos yn+1 ) mediante la fórmula:
yn+1 = yn + hf (xn , yn )
siendo éste el algoritmo más sencillo para resolver numéricamente ecuaciones diferenciales ordinarias.
29
(2.5)
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
Ejemplo 2.1
Utilizando el método de Euler, integre numéricamente la siguiente ecuación:
dy(x)
= y = f (x, y(x)) = 4e0.8x − 0.5y(x)
dx
de x = 0 a x = 4 con un tamaño de paso de 0.5 (h = 0.5). La condición inicial en x = 0 es y = 2 (es decir,
y(0) = 2).
Solución
Si utilizamos la ecuación 2.4, podemos sustituir los datos y comenzar la solución numérica del problema:
y(0.5) =
y(0.0) + 0.5f (0.0, 2.0) = 2 + 0.5(4e0.8(0) − 0.5(2)) = 3.5
y(1.0) =
y(0.5) + 0.5f (0.5, 3.5) = 3.5 + 0.5(4e0.8(0.5) − 0.5(3.5)) = 5.608649
y(1.5) =
=
y(1.0) + 0.5f (1.0, 5.608649) = 5.608649 + 0.5(4e0.8(1.0) − 0.5(5.608649))
8.657569
y(2.0) =
y(2.5) =
y(1.5) + 0.5f (1.5, 8.657569) = 13.133411
y(2.0) + 0.5f (2.0, 13.133411) = 19.756123
y(3.0) =
y(3.5) =
y(2.5) + 0.5f (2.5, 19.756123) = 29.595204
y(3.0) + 0.5f (3.0, 29.595204) = 44.242756
y(4.0) =
y(3.5) + 0.5f (3.5, 44.242756) = 66.071361
Utilizando Maple, lo anterior se pudo haber calculado de la siguiente forma:
>
>
>
>
>
>
f := (x,y)->4*exp(0.8*x) - 0.5*y;
ySol:=<<0 | 2>>: h := 0.5:
for i to 8 do
x:=ySol[i,1]:
y:=ySol[i,2]:
ySol := <ySol, <x+h | y+h*f(x,y)>>;
end do: Transpose(ySol);
0 0.500000 1.000000 1.500000 2.000000 2.500000 3.000000 3.500000 4.000000
2 3.500000 5.608649 8.657569 13.133411 19.756123 29.595204 44.242756 66.071361
La solución exacta a este problema se puede obtener con Maple de la siguiente forma:
> dsolve({diff(y(x),x)=f(x,y(x)), y(0)=2}, y(x));
y(x) =
1
(40e4x/5 − 14e−x/2)
13
(2.6)
o también, se puede obtener un procedimiento para obtener una solución numérica:
> snf1 := dsolve({diff(y(x),x)=f(x,y(x)),y(0)=2},y(x),numeric):
> plots[odeplot](snf1,[x,y(x)],0..4);
y la gráfica de los puntos generados con el método de Euler y la solución exacta (y/o númerica con un
método más exacto) se muestan en la figura 2.1.
30
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
70
60
50
40
30
20
10
0
1
2
3
4
Figura 2.1: Método de Euler y solución exacta de la ecuación diferencial.
2.3.
Métodos de Runge–Kutta
Los métodos de Runge–Kutta utilizan indirectamente el algoritmo de Taylor. En general, estos métodos
evalúan f (x, y) en más de un punto en la proximidad de (xn , yn ) en lugar de evaluar derivadas de f (x, y),
las cuales se necesitarı́an para el uso directo del algoritmo por series de Taylor.
La derivación de estos métodos se acompaña de la suposición de un algoritmo particular con ciertos coeficientes indeterminados. Los valores de estos términos constantes se encuentran igualando la fórmula de
Runge–Kutta de orden p al algoritmo de Taylor de orden p.
2.3.1.
Runge–Kutta Segundo Orden
Asumiendo:
yn+1 = yn + h [k1 f (xn , yn ) + k2 f (xn + αh, yn + βhf (xn , yn ))]
la cual es equivalente al algoritmo cuadrático de Taylor:
h yn+1 = yn + h f (xn , yn ) + f (xn , yn )
2
(2.7)
(2.8)
Igualando las ecuaciones 2.7 y 2.8 para resolver:
k1 f (xn , yn ) + k2 f (xn + αh, yn + βhf (xn , yn )) = f (xn , yn ) +
h f (xn , yn )
2
(2.9)
y expandiendo el segundo término del lado izquierdo en la ecuación anterior en una expansión lineal de
Taylor, obtenemos:
f (xn + αh, yn + βhf (xn , yn )) = f (xn , yn ) + αhfx (xn , yn ) + βhf (xn , yn )fy (xn , yn )
(2.10)
Y ahora, sustituimos la ecuación 2.10 en la 2.9 para obtener:
k1 f (xn , yn ) + k2 [f (xn , yn ) + αhfx (xn , yn ) + βhf (xn , yn )fy (xn , yn )]
= f (xn , yn ) + h2 [f (xn , yn )fy (xn , yn )]
(2.11)
donde el nuevo lado derecho se obtiene de reemplazar f por fx + f fy y ası́ obtenemos tres ecuaciones:
k1 + k2
=
k2 α =
k2 β
31
=
1
1
2
1
2
(2.12)
(2.13)
(2.14)
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
Dado que se tienen 4 parámetros por determinar y solo 3 ecuaciones, se tiene una familia de soluciones en
términos de uno de ellos (k1 , k2 , α y β). Si hacemos k2 = 0 como parámetro independiente, se obtiene la
siguiente solución:
k1
=
α =
β
=
1 − k2
1
2k2
1
2k2
(2.15)
(2.16)
(2.17)
y sustituyendo en la ecuación 2.7, obtenemos:
yn+1 = yn +
h
[f (xn , yn ) + f (xn + h, yn + hf (xn , yn ))]
2
(2.18)
Para simplificar un poco, podemos hacer xn + h = xn+1 y f (xn , yn ) = fn y ası́ simplificar la notación:
yn+1 = yn +
h
[fn + f (xn+1 , yn + hfn )]
2
(2.19)
que no es más que el método mejorado de Euler.
Ejemplo 2.2
Ahora resolveremos la ecuación del ejemplo 2.2 utilizando el método de Runge–Kutta de segundo orden.
Solución
y(0.5) =
=
=
y(1.0) =
=
y(1.5) =
=
y(0) +
0.5
[f (0, 2) + f (0 + 0.5, 2 + 0.5f (0, 2))]
2
0.5
[(4e0.8(0) − 0.5(2)) + f (0.5, 2 + 0.5f (0, 2))]
2
0.5
[3 + f (0.5, 3.5)] = 3.804325
2+
2
0.5
y(0.5) +
[f (0.5, 3.804325) + f (0.5 + 0.5, 3.804325 + 0.5f (0.5, 3.804325))]
2
6.316538
0.5
[f (1.0, 6.316538) + f (1.0 + 0.5, 6.316538 + 0.5f (1.0, 6.316538))]
y(1.0) +
2
9.924068
2+
y(2.0) =
y(2.5) =
15.196298
22.975938
y(3.0) =
y(3.5) =
34.514920
51.676811
y(4.0) =
77.238524
Con Maple, lo anterior se puede realizar de la siguiente forma:
> yS2:=<<0 | 2.0>>: h:=0.5:
> for i to 8 do
>
x:=yS2[i,1]; y:=yS2[i,2];
>
yS2 := <yS2, <x+h | y + h/2*(f(x,y) + f(x+h, y+h*f(x,y)))>>;
> end do: Transpose(yS2);
32
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
0 0.500000 1.000000 1.500000 2.000000 2.500000 3.000000 3.500000 4.000000
2.000000 3.804325 6.316538 9.924068 15.196298 22.975938 34.514920 51.676811 77.238524
La figura 2.2 muestra la solución exacta y la solución mediante este método.
70
60
50
40
30
20
10
0
1
2
3
4
Figura 2.2: Puntos de la solución de la ecuación diferencial mediante el método de Runge–Kutta de segundo
orden y curva de la la solución exacta.
2.3.2.
Runge–Kutta Cuarto Orden
Este método trata de resolver ecuaciones diferenciales ordinarias de la forma mostrada en 2.1. La fórmula
utilizada por este método1 se utiiliza para calcular la nueva aproximación yn+1 (no olvidar que aquı́ la
variable independiente es x y la variable dependiente es y):
1
yn+1 = yn + (k1 + 2k2 + 2k3 + k4 )
6
(2.20)
donde
k1
k2
= hf (xn , yn )
= hf (xn + h/2, yn + k1 /2)
(2.21)
(2.22)
k3
k4
= hf (xn + h/2, yn + k2 /2)
= hf (xn + h, yn + k3 )
(2.23)
(2.24)
Este método se basa en una expansión de Taylor truncada hasta términos de cuarto orden. En algunas
ocasiones es llamado el método de Kutta–Simpson porque se reduce a la Regla de Simpson si y (x) es
independiente de y. Esto es, si y (x) = f (x), tenemos:
k1
k2
=
=
hf (xn )
hf (xn + h/2)
(2.25)
(2.26)
k3
k4
=
=
hf (xn + h/2)
hf (xn + h)
(2.27)
(2.28)
y
yn+1 = yn +
1 Ver
h
[f (xn ) + 4f (xn + h/2) + f (xn , yn )]
6
deducción en Fulks, W. (1978), Advanced calculus (Third Edition). John Wiley & Sons, N.Y., p. 331
33
(2.29)
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
y si utilizamos un intervalo de h∗ = h/2, podemos escribir:
yn+1 = yn +
que es la Regla de Simpson
1
3
h∗
[f (xn ) + 4f (xn + h∗ ) + f (xn + 2h∗ )]
3
(2.30)
para integración.
Ejemplo 2.3
El problema es el mismo que el expuesto en el ejemplo 2.2.
Solución
Evaluamos las constantes del método para posteriormente obtener el valor del nuevo punto.
k1
= 0.5f (0, 2) = 1.5
k2
k3
= 0.5f (0 + 0.5/2, 2 + 1.5/2) = 1.755306
= 0.5f (0 + 0.25, 2 + 1.755306/2) = 1.723392
k4
= 0.5f (0 + 0.5, 2 + 1.723392) = 2.052801
1
y(0.5) = y(0) + [1.5 + 2(1.755306 + 1.723392) + 2.052801] = 3.751700
6
el procedimiento se repite: (a) calcular las ki , (b) calcular el nuevo valor yk+1 , (c) calcular el nuevo valor
xk+1 = xk + h, (d) parar cuando se haya llegado al lı́mite superior de integración. Lo anterior se puede
realizar en Maple de la siguiente forma:
>
>
>
>
>
>
>
>
>
>
>
>
yS3:=<<0 | 2>>:
Ks:=<<0 | 0 | 0 | 0>>: h:=0.5:
for k to 8 do
x:=yS3[k,1]: y:=yS3[k,2]:
k1 := h*f(x,y):
k2 := h*f(x+h/2, y+k1/2):
k3 := h*f(x+h/2, y+k2/2):
k4 := h*f(x+h,
y+k3):
y1 := y + (k1 + 2*(k2 + k3) + k4)/6:
yS3 := <yS3, <x+h | y1>>;
Ks := <Ks, <k1 | k2 | k3 | k4>>;
end do: <<’’k1’’|’’k2’’|’’k3’’|’’k4’’|’’x’’|’’y’’>, <Ks | yS3>>;
k1
k2
k3
k4
0
0
0
0
1.500000 1.755306 1.723392 2.052801
2.045725 2.450597 2.399988 2.913160
2.902321 3.525013 3.447177 4.229679
4.213291 5.156796 5.038858 6.219407
6.194788 7.613670 7.436310 9.207758
9.170898 11.296451 11.030756 13.681449
13.626357 16.804186 16.406957 20.367558
20.285289 25.031408 24.438143 30.351520
x
0
0.500000
1.000000
1.500000
2.000000
2.500000
3.000000
3.500000
4.000000
La figura 2.3 muestra la solución exacta y la solución mediante este método.
34
y
2
3.751700
6.195042
9.707772
14.845106
22.428857
33.679984
50.416017
75.345336
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
70
60
50
40
30
20
10
0
1
2
3
4
Figura 2.3: Solución de la ecuación diferencial mediante el método de Runge–Kutta de cuarto orden y la
solución exacta.
2.4.
Sistemas de Ecuaciones Diferenciales
Las técnicas que se discutirán serán dos:
1. Técnicas que transforman la ecuación diferencial de orden mayor a un sistema de ecuaciones diferenciales de primer orden. La técnica es conocida como Espacio de Estado, y
2. Splines Cúbicos para ecuaciones diferenciales de segundo orden.
2.5.
Espacio de Estado
El método consiste en transformar una ecuación diferencial de orden p en p ecuaciones diferenciales de
orden 1. Para comenzar, consideremos una ecuación diferencial de orden 2 (p = 2):
ÿ(t) + α(t)ẏ(t) + β(t)y(t) = u(t)
(2.31)
Para obtener las 2 ecuaciones diferenciales de orden 1, se hará el siguiente cambio de variables:
x1 (t) =
x2 (t) =
y(t)
ẏ(t)
(2.32)
Una vez que tenemos la definición de estas nuevas variables, que denominaremos variables de estado, podemos
derivarlas con respecto a t para obtener:
ẋ1 (t) =
ẋ2 (t) =
ẏ(t) = x2 (t)
ÿ(t)
(2.33)
y de la ecuación diferencial original (ecuación 2.31) podemos despejar ÿ(t) para obtener:
ÿ(t)
= −β(t)y(t) − α(t)ẏ + u(t)
= −β(t)x1 (t) − α(t)x2 (t) + u(t)
(2.34)
para de esta forma sustituir en nuestra nueva representación con las nuevas variables x1 (t) y x2 (t):
ẋ1 (t) =
ẋ2 (t) =
x2 (t)
−β(t)x1 (t) − α(t)x2 (t) + u(t)
35
(2.35)
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
y la respuesta que andamos buscando de este nuevo sistema de ecuaciones diferenciales es
y(t) = x1 (t)
(2.36)
Las ecuaciones 2.35 y 2.36 se pueden expresar matricialmente de la siguiente forma:
ẋ1 (t)
0
1
x1 (t)
0
=
+
u(t)
−β −α
1
ẋ2 (t)
x2 (t)
y(t) =
1 0
x1 (t)
x2 (t)
(2.37)
(2.38)
y en forma matricial compacta
ẋ(t) = Ax(t) + Bu(t)
y(t) = Cx(t)
con
x(t) =
x1 (t)
x2 (t)
0
−β
, A=
1
−α
, B=
(2.39)
(2.40)
0
1
, C=
1 0
(2.41)
Para el caso general, considere ahora la siguiente ecuación diferencial de orden p:
(p)
a0 y +a1
(p−1)
y
+a2
(p−2)
y
+ · · · + ap−2 ÿ + ap−1 ẏ + ap y = b0 u
(2.42)
y haciendo el siguiente cambio de variables:
x1
x2
x3
= y
= ẏ
= ÿ
..
.
xp−1
=
xp
=
(2.43)
(p−2)
y
(p−1)
y
El procedimiento a seguir es el mismo descrito para la ecuación diferencial de orden 2, tenemos (con a0 = 1):
⎡
ẋ1
ẋ2
..
.
⎢
⎢
⎢
⎢
⎢
⎣ ẋp−1
ẋp
⎤ ⎡
⎥ ⎢
⎥ ⎢
⎥ ⎢
⎥=⎢
⎥ ⎢
⎦ ⎣
0
0
..
.
1
0
..
.
0
−ap
0
−ap−1
y= 1
0 0
···
···
..
.
0
1
..
.
0
−ap−2
⎡
x1
x
⎢
⎢ 2
··· 0 ⎢ .
⎣ ..
0
0
..
.
⎤⎡
x1
x2
..
.
⎥⎢
⎥⎢
⎥⎢
⎥⎢
⎥⎢
···
1 ⎦ ⎣ xp−1
· · · −a1
xp
⎤
⎤
⎡
0
0
..
.
⎥ ⎢
⎥ ⎢
⎥ ⎢
⎥+⎢
⎥ ⎢
⎦ ⎣ 0
b0
⎤
⎥
⎥
⎥
⎥u
⎥
⎦
(2.44)
⎥
⎥
⎥
⎦
xp
La solución numérica a un sistema de ecuaciones diferenciales se realiza con el método de Euler o Runge–
Kutta.
36
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
2.5.1.
Algoritmo de Runge–Kutta para Sistemas de Ecuaciones Diferenciales
Dado que ahora tenemos p ecuaciones diferenciales de orden 1, existirán p variables que denotarán la solución
al sistema. Para lograr lo anterior, manejaremos dos subı́ndices: el primero indicará la variable y el segundo
indicará el número de la aproximación.
Considere el sistema de ecuaciones diferenciales de la sección anterior (ecuación 2.44). Expresándolo como
funciones, serı́a:
x1 (t)
= f1 (t, x1 , x2 , . . . , xp ) = f1 (t, x)
..
.
(2.45)
xp (t)
= fp (t, x)
(2.46)
Las condiciones iniciales las podemos expresar de la siguiente forma:
(0)
x1
=
..
.
α1
(2.47)
x(0)
p
=
αp
(2.48)
con la fórmula recursiva
1
x(j+1) = x(j) + [k1 + 2k2 + 2k3 + k4 ]
6
y las k’s ahora tomarán la siguiente forma:
k1
=
k2
=
k3
=
k4
=
(i)
hf (tj , x(j) ) → k1 = hfi (tj , x(j) )
h (j) 1
h (j) 1
(i)
hf tj + , x + k1 → k2 = hfi tj + , x + k1
2
2
2
2
h (j) 1
h
1
(i)
(j)
hf tj + , x + k2 → k3 = hfi tj + , x + k2
2
2
2
2
(i)
(j)
(j)
hf tj + h, x + k3 → k4 = hfi tj + h, x + k3
(2.49)
(2.50)
(2.51)
(2.52)
(2.53)
donde i = 1, . . . , p.
Ejemplo 2.4
Se tiene la siguiente ecuación diferencial con condiciones iniciales:
ÿ + 2ẏ − 5ty = e−2t ,
y(0) = 1,
ẏ(0) = 1
y se desea resolver para t ∈ (0, 1] con h = 0.1.
Solución
Dado que la ecuación diferencial es de orden 2, se tiene que x1 (t) = y(t) y x2 (t) = ẏ(t). Comparando con la
ecuación 2.31, podemos definir:
α(t) = 2,
β(t) = −5t,
u(t) = e−2t
La representación en espacio de estado quedarı́a como
0
1
x1 (t)
0
ẋ1 (t)
=
+
e−2t
ẋ2 (t)
x2 (t)
5t −2
1
37
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
con condiciones iniciales
x1 (0) =
x2 (0) =
y(0) = 1
ẏ(0) = 1
Una vez expresada la ecuación diferencial en espacio de estado, podemos utilizar uno de los métodos descritos
en las secciones anteriores (Euler, Runge–Kuta 2◦ y/o 4◦ orden).
Solución por Euler
Para este método, necesitamos definir nuestras funciones fi (t, x1 (t), x2 (t)) (que se obtienen de las ecuaciones
de espacio de estado):
f1 (t, x1 (t), x2 (t)) =
f2 (t, x1 (t), x2 (t)) =
x2 (t)
(2.54)
5tx1 (t) − 2x2 (t) + e
−2t
(2.55)
El método de Euler aplicado a las funciones anteriores resultarı́a en la siguiente forma:
x1 (tk+1 ) =
x2 (tk+1 ) =
x1 (tk ) + hf1 (tk , x1 (tk ), x2 (tk ))
x2 (tk ) + hf2 (tk , x1 (tk ), x2 (tk ))
(2.56)
(2.57)
si la evaluación en tk la sustituimos como superı́ndice, podrı́amos representar las ecuaciones anteriores de la
siguiente forma:
(k+1)
x1
(k+1)
x2
(k)
con fi
(k)
=
x1 + hf1
(k)
(k)
(2.58)
=
(k)
x2
(k)
hf2
(2.59)
+
(k)
= fi (tk , x1 , x2 ). Calculemos los primeros valores (k = 0):
(1)
x1
(0)
=
(1)
x2
(0)
(0)
x1 + hf1 (t0 , x1 , x2 ) = 1 + 0.1f1 (0, 1, 1) = 1 + 0.1(1) = 1.1
(0)
x2
=
=
+
(0)
(0)
hf2 (t0 , x1 , x2 )
= 1 + 0.1f2 (0, 1, 1) = 1 + 0.1[5(0)(1) − 2(1) + e
(2.60)
−2(0)
0.9
]
(2.61)
Para k = 1, tenemos:
(2)
x1
(1)
(1)
(1)
= x1 + hf1 (t1 , x1 , x2 ) = 1.1 + 0.1f1 (0.1, 1.1, 0.9) = 1.1 + 0.1(0.9)
= 1.19
(2)
x2
=
(1)
x2
(2.62)
+
(1)
(1)
hf2 (t1 , x1 , x2 )
= 0.9 + 0.1f2 (0.1, 1.1, 0.9)
= 0.9 + 0.1[5(0.1)(1.1) − 2(0.9) + e−2(0.1) ] = 0.8568730753
(2.63)
y para k = 2, tenemos:
(3)
x1
(3)
x2
(2)
(2)
(2)
=
=
x1 + hf1 (t2 , x1 , x2 ) = 1.19 + 0.1f1 (0.2, 1.19, 0.8568730753)
1.19 + 0.1(0.8568730753) = 1.275687308
=
(2)
x2
=
0.8715304648
+
(2)
(2)
hf2 (t2 , x1 , x2 )
(2.64)
= 0.8568730753 + 0.1f2 (0.2, 1.19, 0.8568730753)
(2.65)
Si la evaluación de las funciones continúa de la forma anterior, obtenemos la tabla mostrada en la figura 2.4(a).
La solución anterior se puede obtener con Maple de la siguiente forma:
38
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
>
>
>
>
>
>
f1:=(x1,x2,t)->x2; f2:=(x1,x2,t)->5*t*x1-2*x2+exp(-2*t);
ee1:=<<0 | 1 | 1>>: h:=0.1:
for k to 10 do
t:=ee1[k,1]; x1:=ee1[k,2]; x2:=ee1[k,3];
ee1:=<ee1, <t+h | x1+h*f1(x1,x2,t) | x2+h*f2(x1,x2,t)>>;
end do: ee1[2..11,1..3];
La figura 2.4(b) muestra la gráfica de la solución exacta y la obtenida por el método anterior. Las figuras 2.5(a)
y 2.5(b) muestran soluciones para x1 y x2 para diferentes valores de h junto con la solución más exacta que
se puede obtener mediante el método de Runge-Kutta cuarto-quinto orden de Fehlberg.
5
t
0
0.100000
0.200000
0.300000
0.400000
0.500000
0.600000
0.700000
0.800000
0.900000
1.000000
x1 (t)
1
1.100000
1.190000
1.275687
1.362840
1.457186
1.564413
1.690303
1.840959
2.023111
2.244489
x2 (t)
1
0.900000
0.856873
0.871530
0.943459
1.072268
1.258899
1.506562
1.821516
2.213786
2.697958
4
3
2
1
0
0.2
0.4
0.6
(b) x1 (t) = y(t) para h = 0.1
(a) Valores de las variables
0.8
1
Figura 2.4: Valores de la solución para las variables de estado y la solución de la ecuación diferencial
original.
3
3
2.5
2.5
2
2
1.5
1.5
1
1
0
0.2
0.4
0.6
(a) x1 y x2 para h = 0.1
0.8
1
0
0.2
0.4
0.6
(b) x1 y x2 para h = 0.01
0.8
1
Figura 2.5: Solución a las variables de estado para diferentes valores de ancho de intervalo.
Solución por Runge–Kutta
Para este método, utilizaremos las fórmulas descritas en la sección 2.5.1. Las funciones que utilizará el método
son las ecuaciones 2.54 y 2.55.
39
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
El orden del sistemas es 2; por lo tanto, las fórmula recursivas serán:
(i)
=
k1
(i)
k2
=
(i)
=
k3
(i)
=
k4
(j+1)
xi
(0)
=
(j)
(j)
hfi (tj , x1 , x2 ), i = 1, 2
h (j) 1 (1) (j) 1 (2)
hfi (tj + , x1 + k1 , x2 + k1 ), i = 1, 2
2
2
2
h (j) 1 (1) (j) 1 (2)
hfi (tj + , x1 + k2 , x2 + k2 ), i = 1, 2
2
2
2
(j)
(1)
(j)
(2)
hfi (tj + h, x1 + k3 , x2 + k3 ), i = 1, 2
1 (i)
(j)
(i)
(i)
(i)
k1 + 2k2 + 2k3 + k4 , i = 1, 2
xi +
6
(2.66)
(2.67)
(2.68)
(2.69)
(2.70)
(0)
Para j = 0, t0 = 0, x1 = 1 y x2 = 1:
(1)
k1
(2)
k1
(1)
k2
(2)
k2
(1)
k3
(2)
k3
(0)
(0)
=
hf1 (t0 , x1 , x2 )
=
=
0.1f1 (0, 1, 1)
0.1
=
=
hf2 (t0 , x1 , x2 )
0.1f2 (0, 1, 1)
=
−0.1
(0)
(2.71)
(0)
(2.72)
h (0) 1 (1) (0) 1 (2)
, x + k1 , x2 + k1 )
2 1
2
2
= 0.1f1 (0.05, 1.05, 0.95)
= hf1 (t0 +
= 0.095
(2.73)
h (0) 1 (1) (0) 1 (2)
, x + k1 , x2 + k1 )
2 1
2
2
= 0.1f2 (0.05, 1.05, 0.95)
= −0.073266
(2.74)
h (0) 1 (1) (0) 1 (2)
, x + k2 , x2 + k2 )
2 1
2
2
= 0.1f1 (0.05, 1.0475, 0.963367)
= 0.096337
(2.75)
= hf2 (t0 +
= hf1 (t0 +
h (0) 1 (1) (0) 1 (2)
, x + k2 , x2 + k2 )
2 1
2
2
= 0.1f2 (0.05, 1.0475, 0.963367)
= hf2 (t0 +
= −0.076002
(1)
k4
(2)
k4
(2.76)
(0)
(1)
(0)
(2)
=
hf1 (t0 + h, x1 + k3 , x2 + k3 )
=
0.1f1 (0.1, 1.096337, 0.923998)
=
0.0924
=
=
hf2 (t0 + h, x1 + k3 , x2 + k3 )
0.1f2 (0.1, 1.096337, 0.923998)
=
−0.04811
(2.77)
(0)
(1)
(0)
(2)
(2.78)
40
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
(1)
x1
=
=
=
(1)
x2
=
=
=
(0)
x1 +
1 (1)
(1)
(1)
(1)
k1 + 2k2 + 2k3 + k4
6
1
[0.1 + 2(0.095) + 2(0.096337) + 0.0924]
6
1.095846
1 (2)
(0)
(2)
(2)
(2)
k1 + 2k2 + 2k3 + k4
x2 +
6
1
1 + [−0.1 + 2(−0.073266) + 2(−0.076002) − 0.04811]
6
0.925559
1+
(2.79)
(2.80)
El procedimiento se repite para j = 1, 2, . . . , 10 y se obtienen los siguientes valores de las k s para xj1
(tabla 2.1) y xj2 (tabla 2.2). La figura 2.6 muestra la gráfica de la solución numérica más exacta posible para
x1 y x2 y los puntos obtenidos mediante este método.
3
2.5
2
1.5
1
0
0.2
0.4
0.6
0.8
1
Figura 2.6: Solución para las variables de estado.
Tabla 2.1: Solución para la primera variable de estado.
t
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
x1
1
1.095845527
1.186861729
1.278384263
1.375866349
1.484920948
1.611466199
1.761961852
1.943733785
2.165394141
2.437376282
k1
0
0.1
0.09255589258
0.09037294423
0.09358681408
0.1023175496
0.1167817807
0.1373883797
0.1648263472
0.2001548400
0.2449063271
k2
0
0.09500000000
0.09013357090
0.09062155868
0.09656007283
0.1080911030
0.1255045117
0.1493275058
0.1804110297
0.2200235143
0.2699635570
41
k3
0
0.09633668709
0.09152958962
0.09204374292
0.09800903793
0.1095953202
0.1271162227
0.1511208944
0.1824829268
0.2224968943
0.2729941880
k4
0
0.09239978676
0.09021499921
0.09343165860
0.1021674848
0.1166371999
0.1372482601
0.1646887422
0.2000173397
0.2447664819
0.3010710319
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
Tabla 2.2: Solución para la segunda variable de estado.
t
0
.1
.2
.3
.4
.5
.6
.7
.8
.9
1.0
2.5.2.
x2
1
.9255589258
.9037294423
.9358681408
1.023175496
1.167817807
1.373883797
1.648263472
2.001548400
2.449063271
3.012153065
k1
0
-.1
-.04844643359
.00497228900
.05946517491
.1154710670
.1744546197
.2387825215
.3116936500
.3973734858
.5011445981
k2
0
-.07326625820
-.02052605923
.03341597377
.08844447698
.1455554129
.2066888405
.2746502942
.3531315916
.4468410858
.5617572179
k3
0
-.07600213240
-.02340893373
.03058714367
.08580670688
.1431965034
.2046647941
.2730036250
.3519099249
.4461164193
.5616470479
k4
0
-.04810966389
.00533951790
.05985366721
.1158765870
.1748789616
.2392340523
.3121876945
.3979328839
.5018007305
.6305856295
Splines Cúbicos
Se tiene el siguiente problema:
u(t) = y + α(t)y + β(t)y
y(a)
y (a)
(2.81)
= σ
= η
(2.82)
(2.83)
y se desea resolver para t ∈ [a, b] con un ancho de intervalo constante h = ti+1 − ti (distancia entre dos
puntos consecutivos). El objetivo del método es suponer que la forma de la función resultante por intervalos
es la de un Spline Cúbico:
y(t) ≡ Pi (t) = ai (t − ti )3 + bi (t − ti )2 + ci (t − ti ) + di ,
ti ≤ t ≤ ti+1
(2.84)
Dado que la ecuación diferencial involucra derivadas de la función que estamos buscando (y(t) = Pi (t)),
necesitamos encontrar sus derivadas:
Pi (t) =
Pi (t) =
Pi (t) =
ai (t − ti )3 + bi (t − ti )2 + ci (t − ti ) + di
3ai (t − ti )2 + 2bi (t − ti ) + ci
(2.85)
(2.86)
6ai (t − ti ) + 2bi
(2.87)
Al evaluar para cada punto intermedio, ti+1 , tenemos:
ai h3 + bi h2 + ci h + di
=
di+1
(2.88)
3ai h + 2bi h + ci
=
ci+1
(2.89)
6ai h + 2bi
=
2bi+1
(2.90)
2
y posteriormente sustituyendo los resultados anteriores en la ecuación diferencial (ecuación 2.81), obtenemos:
y + α(t)y + β(t)y
=
u(t)
(2.91)
u(ti+1 )
(2.92)
2
(6ai h + 2bi ) + α(ti+1 )(3ai h + 2bi h + ci ) +
β(ti+1 )(ai h3 + bi h2 + ci h + di ) =
Sabemos que tenemos n splines y tendremos 4n − 2 incógnitas y ecuaciones. Las últimas 2 ecuaciones se
obtendrán de los extremos en donde sólo se requiere que se cumpla la ecuación diferencial, es decir, en t1 y
en tn+1 .
42
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
Las cuatro ecuaciones que se tienen que cumplir en cada punto intermedio son:
ai h3 + bi h2 + ci h + di
3ai h2 + 2bi h + ci
=
=
6ai h + 2bi =
ai [6h + 3h α(ti+1 ) + h β(ti+1 )] +
2
di+1
ci+1
(2.93)
(2.94)
2bi+1
(2.95)
f (ti+1 )
(2.96)
3
bi [2 + 2hα(ti+1 ) + h2 β(ti+1 )] +
ci [α(ti+1 ) + hβ(ti+1 )] + di β(ti+1 ) =
y en los extremos (t1 y tn+1 ) es evaluar la ecuación 2.92 en t1 y tn+1 , respectivamente; obteniendo en t = t1 :
2b1 + c1 α(t1 ) + d1 β(t1 ) = f (t1 )
(2.97)
La solución de ecuaciones diferenciales de este tipo mediante splines cúbicos se puede entender mejor con un
ejemplo.
Ejemplo 2.5
Se tiene la siguiente ecuación diferencial:
ÿ + 2ẏ − 5ty = e−2t ,
y(0) = 1,
ẏ(0) = 1
y se desea resolver para t ∈ (0, 1] con h = 0.5.
Solución
Dado que h = 0.5, n = 2 y el número de incógnitas que tendremos son 4n = 8. De acuerdo a la ecuación,
tenemos:
σ=1
η=1
(2.98)
α(t) = 2 β(t) = −5t f (t) = e−2t
Las ecuaciones que se generan con los datos son:
d1
c1
= σ
= η
(2.99)
(2.100)
Sabemos que se van a generar 3 puntos (t1 , t2 y t3 ) y sólo requerimos que en los puntos intermedios se cumplan
las condiciones de splines cúbicos para la ecuación diferencial, es decir, sólo en t2 . Ası́ pues, comenzamos con
la ecuación diferencial:
a1 [6h + 3h2 α(t2 ) + h3 β(t2 )] +
b1 [2 + 2hα(t2 ) + h2 β(t2 )] +
c1 [α(t2 ) + hβ(t2 )] + d1 β(t2 ) =
2
f (t2 )
(2.101)
e−2(0.5)
0.36788
(2.102)
(2.103)
3
a1 [6(0.5) + 3(0.5) (2) + (0.5) (−5)(0.5)] +
b1 [2 + 2(0.5)2 + (0.5)3 (−5)0.5] +
c1 [2 + 0.5(−5)0.5] + d1 (−5)0.5 =
4.1875a1 + 3.375b1 + 0.75c1 − 2.5d1 =
En seguida, las 3 restricciones de splines cúbicos:
a1 h3 + b1 h2 + c1 h + d1
0.125a1 + 0.25b1 + 0.5c1 + d1 − d2
43
= d2
= 0
(2.104)
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
3a1 h2 + 2b1 h + c1
=
c2
0.75a1 + b1 + c1 − c2
=
0
6a1 h + 2b1
3a1 + 2b1 − 2b2
(2.105)
= 2b2
= 0
(2.106)
Por último, generar las ecuaciones de los nodos externos en donde sólo se requiere que la ecuación diferencial
se cumpla:
Para t = t1 :
2b1 + c1 α(t1 ) + d1 β(t1 )
2b1 + 2c1
= f (t1 )
= 1
(2.107)
Para t = t3 es la ecuación 2.96:
3.875a2 + 2.75b2 − 0.5c2 − 5d2 = 0.1353353
(2.108)
Una vez teniendo todas las ecuaciones, podemos representarlo en forma matricial:
⎡
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎣
⎤ ⎡
⎤⎡
⎤
0
0
0
1
0
0
0
0
1
a1
⎥ ⎢
⎥
⎢
0
0
1
0
0
0
0
0 ⎥
1
⎥ ⎢ b1 ⎥ ⎢
⎥
⎥
⎢
⎥
⎢
4.1875 3.375 0.75 −2.5
0
0
0
0 ⎥ ⎢ c1 ⎥ ⎢ 0.36788 ⎥
⎥
⎥ ⎢
⎥
⎢
0.125 0.25 0.5
1
0
0
0
−1 ⎥
0
⎥ ⎢ d1 ⎥ = ⎢
⎥
⎥
⎢
⎥
⎥
⎢
0.75
1
1
0
0
0
−1
0 ⎥ ⎢ a2 ⎥ ⎢
0
⎥
⎥
⎢
⎥
⎥
⎢
3
2
0
0
0
−2
0
0 ⎥ ⎢ b2 ⎥ ⎢
0
⎥
⎦
⎣
⎦
⎦
⎣
c2
0
2
2
0
0
0
0
0
1
d2
0
0
0
0
3.875 2.75 −0.5 −5
0.1353353
(2.109)
cuya solución es:
c1 = 1
d1 = 1
a1 = 0.90874733 b1 = −0.5
a2 = 1.49561287 b2 = 0.863120994 c2 = 1.1815605 d2 = 1.488593416
(2.110)
La solución anterior dá los coeficientes de los siguientes polinomios:
P1 (t) =
P2 (t) =
a1 (t − t1 )3 + b1 (t − t1 )2 + c1 (t − t1 ) + d1 ,
a2 (t − t2 )3 + b2 (t − t2 )2 + c2 (t − t2 ) + d2 ,
t1 ≤ t ≤ t 2
t2 ≤ t ≤ t 3
(2.111)
(2.112)
y ambos polinomios forman la solución para y(t).
La gráfica de la solución (indicando el valor de la función en los nodos) se muestra en la figura 2.7. La
solución obtenida mediante este método está prácticamente sobre la solución exacta que se onbtendrı́a
mediante Runge-Kutta 4◦ orden, con la ventaja de que el método de Splines Cúbicos no requiere un paso (h)
muy pequeño para dar una solución muy exacta.
44
c 1997–2006. Dr. Horacio Martı́nez Alfaro
Métodos Numéricos
2.4
2.2
2
1.8
1.6
1.4
1.2
1
0
0.2
0.4
t
0.6
0.8
1
Figura 2.7: Solución mediante splines cúbicos y solución mediante Maple.
45
Descargar