Está en la página 1de 17

Capı́tulo 2

Ecuaciones Diferenciales Ordinarias

2.1. Introducción
Una ecuación diferencial ordinaria lineal de la forma
d d
y(x) = f (x, y) con y(x) = y  (x) (2.1)
dx dx
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
h2 
y(xn+1 ) = y(xn ) + hf (xn , y(xn )) + f (xn , y(xn )) + · · · +
2
hp (p−1)
f (xn , y(xn )) + Tn+1 (2.2)
p!
donde
hp+1 y (p+1) (xn )
Tn+1 = , xn < xn < xn+1 (2.3)
(p + 1)!
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 ) (2.5)

siendo éste el algoritmo más sencillo para resolver numéricamente ecuaciones diferenciales ordinarias.

29
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

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(1.5) + 0.5f (1.5, 8.657569) = 13.133411
y(2.5) = y(2.0) + 0.5f (2.0, 13.133411) = 19.756123
y(3.0) = y(2.5) + 0.5f (2.5, 19.756123) = 29.595204
y(3.5) = 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));

1
y(x) = (40e4x/5 − 14e−x/2) (2.6)
13

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
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

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 co-
eficientes 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 ))] (2.7)
la cual es equivalente al algoritmo cuadrático de Taylor:
 
h 
yn+1 = yn + h f (xn , yn ) + f (xn , yn ) (2.8)
2
Igualando las ecuaciones 2.7 y 2.8 para resolver:
h 
k1 f (xn , yn ) + k2 f (xn + αh, yn + βhf (xn , yn )) = f (xn , yn ) + f (xn , yn ) (2.9)
2
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 )]


(2.11)
= f (xn , yn ) + h2 [f (xn , yn )fy (xn , yn )]
donde el nuevo lado derecho se obtiene de reemplazar f  por fx + f fy y ası́ obtenemos tres ecuaciones:
k1 + k2 = 1 (2.12)
1
k2 α = (2.13)
2
1
k2 β = (2.14)
2

31
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

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 (2.15)
1
α = (2.16)
2k2
1
β = (2.17)
2k2
y sustituyendo en la ecuación 2.7, obtenemos:
h
yn+1 = yn + [f (xn , yn ) + f (xn + h, yn + hf (xn , yn ))] (2.18)
2
Para simplificar un poco, podemos hacer xn + h = xn+1 y f (xn , yn ) = fn y ası́ simplificar la notación:
h
yn+1 = yn + [fn + f (xn+1 , yn + hfn )] (2.19)
2
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

0.5
y(0.5) = y(0) + [f (0, 2) + f (0 + 0.5, 2 + 0.5f (0, 2))]
2
0.5
= 2+ [(4e0.8(0) − 0.5(2)) + f (0.5, 2 + 0.5f (0, 2))]
2
0.5
= 2+ [3 + f (0.5, 3.5)] = 3.804325
2
0.5
y(1.0) = 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
y(1.5) = y(1.0) + [f (1.0, 6.316538) + f (1.0 + 0.5, 6.316538 + 0.5f (1.0, 6.316538))]
2
= 9.924068
y(2.0) = 15.196298
y(2.5) = 22.975938
y(3.0) = 34.514920
y(3.5) = 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
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

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 ) (2.20)
6
donde

k1 = hf (xn , yn ) (2.21)
k2 = hf (xn + h/2, yn + k1 /2) (2.22)
k3 = hf (xn + h/2, yn + k2 /2) (2.23)
k4 = hf (xn + h, yn + k3 ) (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 = hf (xn ) (2.25)
k2 = hf (xn + h/2) (2.26)
k3 = hf (xn + h/2) (2.27)
k4 = hf (xn + h) (2.28)

y
h
yn+1 = yn + [f (xn ) + 4f (xn + h/2) + f (xn , yn )] (2.29)
6
1 Ver deducción en Fulks, W. (1978), Advanced calculus (Third Edition). John Wiley & Sons, N.Y., p. 331

33
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

y si utilizamos un intervalo de h∗ = h/2, podemos escribir:

h∗
yn+1 = yn + [f (xn ) + 4f (xn + h∗ ) + f (xn + 2h∗ )] (2.30)
3
1
que es la Regla de Simpson 3 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 = 0.5f (0 + 0.5/2, 2 + 1.5/2) = 1.755306
k3 = 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 x y
0 0 0 0 0 2
1.500000 1.755306 1.723392 2.052801 0.500000 3.751700
2.045725 2.450597 2.399988 2.913160 1.000000 6.195042
2.902321 3.525013 3.447177 4.229679 1.500000 9.707772
4.213291 5.156796 5.038858 6.219407 2.000000 14.845106
6.194788 7.613670 7.436310 9.207758 2.500000 22.428857
9.170898 11.296451 11.030756 13.681449 3.000000 33.679984
13.626357 16.804186 16.406957 20.367558 3.500000 50.416017
20.285289 25.031408 24.438143 30.351520 4.000000 75.345336

La figura 2.3 muestra la solución exacta y la solución mediante este método.

34
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

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 diferen-
ciales 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) = y(t)
(2.32)
x2 (t) = ẏ(t)

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) = ẏ(t) = x2 (t)


(2.33)
ẋ2 (t) = ÿ(t)

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) = x2 (t)


(2.35)
ẋ2 (t) = −β(t)x1 (t) − α(t)x2 (t) + u(t)

35
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

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) (2.37)
ẋ2 (t) −β −α x2 (t) 1
 
  x1 (t)
y(t) = 1 0 (2.38)
x2 (t)

y en forma matricial compacta

ẋ(t) = Ax(t) + Bu(t) (2.39)


y(t) = Cx(t) (2.40)

con      
x1 (t) 0 1 0  
x(t) = , A= , B= , C= 1 0 (2.41)
x2 (t) −β −α 1

Para el caso general, considere ahora la siguiente ecuación diferencial de orden p:

(p) (p−1) (p−2)


a0 y +a1 y +a2 y + · · · + ap−2 ÿ + ap−1 ẏ + ap y = b0 u (2.42)

y haciendo el siguiente cambio de variables:

x1 = y
x2 = ẏ
x3 = ÿ
..
. (2.43)
(p−2)
xp−1 = y
(p−1)
xp = y

El procedimiento a seguir es el mismo descrito para la ecuación diferencial de orden 2, tenemos (con a0 = 1):

⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤
ẋ1 0 1 0 ··· 0 x1 0
⎢ ẋ2 ⎥ ⎢ 0 0 1 ··· ⎥⎢
0 x2 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥
⎢ .. ⎥ ⎢ .. .. .. .. ⎥⎢
.. .. ⎥ ⎢ .. ⎥
⎢ . ⎥=⎢ . . . . ⎥⎢. . ⎥+⎢ . ⎥u
⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥
⎣ ẋp−1 ⎦ ⎣ 0 0 0 ··· 1 ⎦ ⎣ xp−1 ⎦ ⎣ 0 ⎦
ẋp −ap −ap−1 −ap−2 · · · −a1 xp b0 (2.44)
⎡ ⎤
x1
 ⎢ x
⎢ 2


y= 1 0 0 ··· 0 ⎢ . ⎥
⎣ .. ⎦
xp
La solución numérica a un sistema de ecuaciones diferenciales se realiza con el método de Euler o Runge–
Kutta.

36
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

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 ] (2.49)
6
y las k’s ahora tomarán la siguiente forma:

(i)
k1 = hf (tj , x(j) ) → k1 = hfi (tj , x(j) ) (2.50)

h (j) 1 (i) h (j) 1
k2 = hf tj + , x + k1 → k2 = hfi tj + , x + k1 (2.51)
2 2 2 2

h (j) 1 (i) h (j) 1
k3 = hf tj + , x + k2 → k3 = hfi tj + , x + k2 (2.52)
2 2 2 2
   
(j) (i) (j)
k4 = hf tj + h, x + k3 → k4 = hfi tj + h, x + k3 (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


      
ẋ1 (t) 0 1 x1 (t) 0
= + e−2t
ẋ2 (t) 5t −2 x2 (t) 1

37
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

con condiciones iniciales


x1 (0) = y(0) = 1
x2 (0) = ẏ(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)) = x2 (t) (2.54)
−2t
f2 (t, x1 (t), x2 (t)) = 5tx1 (t) − 2x2 (t) + e (2.55)
El método de Euler aplicado a las funciones anteriores resultarı́a en la siguiente forma:
x1 (tk+1 ) = x1 (tk ) + hf1 (tk , x1 (tk ), x2 (tk )) (2.56)
x2 (tk+1 ) = x2 (tk ) + hf2 (tk , x1 (tk ), x2 (tk )) (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) (k) (k)
x1 = x1 + hf1 (2.58)
(k+1) (k) (k)
x2 = x2 + hf2 (2.59)
(k) (k) (k)
con fi = fi (tk , x1 , x2 ). Calculemos los primeros valores (k = 0):

(1) (0) (0) (0)


x1 = x1 + hf1 (t0 , x1 , x2 ) = 1 + 0.1f1 (0, 1, 1) = 1 + 0.1(1) = 1.1 (2.60)
(1) (0) (0) (0) −2(0)
x2 = x2 + hf2 (t0 , x1 , x2 ) = 1 + 0.1f2 (0, 1, 1) = 1 + 0.1[5(0)(1) − 2(1) + e ]
= 0.9 (2.61)
Para k = 1, tenemos:

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


x1 = x1 + hf1 (t1 , x1 , x2 ) = 1.1 + 0.1f1 (0.1, 1.1, 0.9) = 1.1 + 0.1(0.9)
= 1.19 (2.62)
(2) (1) (1) (1)
x2 = x2 + 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) (2) (2) (2)


x1 = x1 + hf1 (t2 , x1 , x2 ) = 1.19 + 0.1f1 (0.2, 1.19, 0.8568730753)
= 1.19 + 0.1(0.8568730753) = 1.275687308 (2.64)
(3) (2) (2) (2)
x2 = x2 + hf2 (t2 , x1 , x2 ) = 0.8568730753 + 0.1f2 (0.2, 1.19, 0.8568730753)
= 0.8715304648 (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
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

> 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 x1 (t) x2 (t)
0 1 1
0.100000 1.100000 0.900000 4

0.200000 1.190000 0.856873


0.300000 1.275687 0.871530
0.400000 1.362840 0.943459 3

0.500000 1.457186 1.072268


0.600000 1.564413 1.258899
2
0.700000 1.690303 1.506562
0.800000 1.840959 1.821516
0.900000 2.023111 2.213786 1
1.000000 2.244489 2.697958 0 0.2 0.4 0.6 0.8 1
(b) x1 (t) = y(t) para h = 0.1
(a) Valores de las variables

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 0.8 1 0 0.2 0.4 0.6 0.8 1


(a) x1 y x2 para h = 0.1 (b) x1 y x2 para h = 0.01

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
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

El orden del sistemas es 2; por lo tanto, las fórmula recursivas serán:


(i) (j) (j)
k1 = hfi (tj , x1 , x2 ), i = 1, 2 (2.66)
(i) h (j) 1 (1) (j) 1 (2)
k2 = hfi (tj + , x1 + k1 , x2 + k1 ), i = 1, 2 (2.67)
2 2 2
(i) h (j) 1 (1) (j) 1 (2)
k3 = hfi (tj + , x1 + k2 , x2 + k2 ), i = 1, 2 (2.68)
2 2 2
(i) (j) (1) (j) (2)
k4 = hfi (tj + h, x1 + k3 , x2 + k3 ), i = 1, 2 (2.69)
(j+1) (j) 1  (i) (i) (i) (i)

xi = xi + k1 + 2k2 + 2k3 + k4 , i = 1, 2 (2.70)
6
(0) (0)
Para j = 0, t0 = 0, x1 = 1 y x2 = 1:

(1) (0) (0)


k1 = hf1 (t0 , x1 , x2 )
= 0.1f1 (0, 1, 1)
= 0.1 (2.71)
(2) (0) (0)
k1 = hf2 (t0 , x1 , x2 )
= 0.1f2 (0, 1, 1)
= −0.1 (2.72)

(1) h (0) 1 (1) (0) 1 (2)


k2 = hf1 (t0 + , x + k1 , x2 + k1 )
2 1 2 2
= 0.1f1 (0.05, 1.05, 0.95)
= 0.095 (2.73)
(2) h (0) 1 (1) (0) 1 (2)
k2 = hf2 (t0 + , x + k1 , x2 + k1 )
2 1 2 2
= 0.1f2 (0.05, 1.05, 0.95)
= −0.073266 (2.74)

(1) h (0) 1 (1) (0) 1 (2)


k3 = hf1 (t0 + , x + k2 , x2 + k2 )
2 1 2 2
= 0.1f1 (0.05, 1.0475, 0.963367)
= 0.096337 (2.75)
(2) h (0) 1 (1) (0) 1 (2)
k3 = hf2 (t0 + , x + k2 , x2 + k2 )
2 1 2 2
= 0.1f2 (0.05, 1.0475, 0.963367)
= −0.076002 (2.76)

(1) (0) (1) (0) (2)


k4 = hf1 (t0 + h, x1 + k3 , x2 + k3 )
= 0.1f1 (0.1, 1.096337, 0.923998)
= 0.0924 (2.77)
(2) (0) (1) (0) (2)
k4 = hf2 (t0 + h, x1 + k3 , x2 + k3 )
= 0.1f2 (0.1, 1.096337, 0.923998)
= −0.04811 (2.78)

40
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

(1) (0) 1  (1) (1) (1) (1)



x1 = x1 + k1 + 2k2 + 2k3 + k4
6
1
= 1+ [0.1 + 2(0.095) + 2(0.096337) + 0.0924]
6
= 1.095846 (2.79)
(1) (0) 1  (2) (2) (2) (2)

x2 = x2 + k1 + 2k2 + 2k3 + k4
6
1
= 1 + [−0.1 + 2(−0.073266) + 2(−0.076002) − 0.04811]
6
= 0.925559 (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.

2.5

1.5

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 x1 k1 k2 k3 k4
0 1 0 0 0 0
0.1 1.095845527 0.1 0.09500000000 0.09633668709 0.09239978676
0.2 1.186861729 0.09255589258 0.09013357090 0.09152958962 0.09021499921
0.3 1.278384263 0.09037294423 0.09062155868 0.09204374292 0.09343165860
0.4 1.375866349 0.09358681408 0.09656007283 0.09800903793 0.1021674848
0.5 1.484920948 0.1023175496 0.1080911030 0.1095953202 0.1166371999
0.6 1.611466199 0.1167817807 0.1255045117 0.1271162227 0.1372482601
0.7 1.761961852 0.1373883797 0.1493275058 0.1511208944 0.1646887422
0.8 1.943733785 0.1648263472 0.1804110297 0.1824829268 0.2000173397
0.9 2.165394141 0.2001548400 0.2200235143 0.2224968943 0.2447664819
1.0 2.437376282 0.2449063271 0.2699635570 0.2729941880 0.3010710319

41
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

Tabla 2.2: Solución para la segunda variable de estado.


t x2 k1 k2 k3 k4
0 1 0 0 0 0
.1 .9255589258 -.1 -.07326625820 -.07600213240 -.04810966389
.2 .9037294423 -.04844643359 -.02052605923 -.02340893373 .00533951790
.3 .9358681408 .00497228900 .03341597377 .03058714367 .05985366721
.4 1.023175496 .05946517491 .08844447698 .08580670688 .1158765870
.5 1.167817807 .1154710670 .1455554129 .1431965034 .1748789616
.6 1.373883797 .1744546197 .2066888405 .2046647941 .2392340523
.7 1.648263472 .2387825215 .2746502942 .2730036250 .3121876945
.8 2.001548400 .3116936500 .3531315916 .3519099249 .3979328839
.9 2.449063271 .3973734858 .4468410858 .4461164193 .5018007305
1.0 3.012153065 .5011445981 .5617572179 .5616470479 .6305856295

2.5.2. Splines Cúbicos


Se tiene el siguiente problema:

u(t) = y  + α(t)y  + β(t)y (2.81)


y(a) = σ (2.82)
y  (a) = η (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) = ai (t − ti )3 + bi (t − ti )2 + ci (t − ti ) + di (2.85)
Pi (t) = 3ai (t − ti )2 + 2bi (t − ti ) + ci (2.86)
Pi (t) = 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)
2
3ai h + 2bi h + ci = ci+1 (2.89)
6ai h + 2bi = 2bi+1 (2.90)

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)


2
(6ai h + 2bi ) + α(ti+1 )(3ai h + 2bi h + ci ) +
β(ti+1 )(ai h3 + bi h2 + ci h + di ) = u(ti+1 ) (2.92)

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
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

Las cuatro ecuaciones que se tienen que cumplir en cada punto intermedio son:

ai h3 + bi h2 + ci h + di = di+1 (2.93)
3ai h2 + 2bi h + ci = ci+1 (2.94)
6ai h + 2bi = 2bi+1 (2.95)
2 3
ai [6h + 3h α(ti+1 ) + h β(ti+1 )] +
bi [2 + 2hα(ti+1 ) + h2 β(ti+1 )] +
ci [α(ti+1 ) + hβ(ti+1 )] + di β(ti+1 ) = f (ti+1 ) (2.96)

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 = σ (2.99)
c1 = η (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 ) = f (t2 ) (2.101)
2 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 = e−2(0.5) (2.102)
4.1875a1 + 3.375b1 + 0.75c1 − 2.5d1 = 0.36788 (2.103)

En seguida, las 3 restricciones de splines cúbicos:

a1 h3 + b1 h2 + c1 h + d1 = d2
0.125a1 + 0.25b1 + 0.5c1 + d1 − d2 = 0 (2.104)

43
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

3a1 h2 + 2b1 h + c1 = c2
0.75a1 + b1 + c1 − c2 = 0 (2.105)

6a1 h + 2b1 = 2b2


3a1 + 2b1 − 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 ) = f (t1 )


2b1 + 2c1 = 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 a1 1
⎢ 0 0 1 0 0 0 0 0 ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ b1 ⎥ ⎢ 1 ⎥
⎢ 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 ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ d1 ⎥ = ⎢ 0 ⎥ (2.109)
⎢ 0.75 1 1 0 0 0 −1 ⎥ ⎢ ⎥
0 ⎥ ⎢ a2 ⎥ ⎢ ⎢ 0 ⎥
⎢ ⎥
⎢ 3 2 0 0 0 −2 0 ⎥ ⎢ ⎥
0 ⎥ ⎢ b2 ⎥ ⎢ ⎢ 0 ⎥
⎢ ⎥
⎣ 0 2 2 0 0 0 0 0 ⎦ ⎣ c2 ⎦ ⎣ 1 ⎦
0 0 0 0 3.875 2.75 −0.5 −5 d2 0.1353353
cuya solución es:

a1 = 0.90874733 b1 = −0.5 c1 = 1 d1 = 1
(2.110)
a2 = 1.49561287 b2 = 0.863120994 c2 = 1.1815605 d2 = 1.488593416
La solución anterior dá los coeficientes de los siguientes polinomios:

P1 (t) = a1 (t − t1 )3 + b1 (t − t1 )2 + c1 (t − t1 ) + d1 , t1 ≤ t ≤ t 2 (2.111)
P2 (t) = a2 (t − t2 )3 + b2 (t − t2 )2 + c2 (t − t2 ) + d2 , t2 ≤ t ≤ t 3 (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
Métodos Numéricos 
c 1997–2006. Dr. Horacio Martı́nez Alfaro

2.4

2.2

1.8

1.6

1.4

1.2

1
0 0.2 0.4 0.6 0.8 1
t

Figura 2.7: Solución mediante splines cúbicos y solución mediante Maple.

45

También podría gustarte