Ecuaciones Diferenciales

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 56

ECUACIONES DIFERENCIALES ORDINARIAS (EDO)

Una EDO es aquella en la que intervienen una ms derivadas de la funcin incgnita


se denominan ecuacin diferencial ordinaria (EDO), presentamos algunos tipos de
ecuaciones diferenciales.

a) ECUACIONES SEPARABLES
Dada la ecuacin diferencial
dx
f (t , x )
dt
Donde f(t,x) se puede expresar como un producto de funciones, una que dependa de t y
otra solo de x.
dx t 5
Ejemplo 1: Resolver 2
dt x
Solucin
Separando variables e integrando
x dx (t 5)dt
2

x3 t 2
La solucin general es 5t c ; c es una constante arbitraria.
3 2

Problema de Valor Inicial (PVI):


Tiene la forma

y ' f ( x, y )
(1)
y( x0 ) y 0
La ecuacin (1) tiene solucin y = f(x), cuyo grafico pasa por (x0,y0)

y
Figura 1: El y = f(x)
objetivo es
calcular y(x*) y0

x
x0 x*

Ejemplo 2: resolver el problema de valor inicial


x ' t 3 (1 x ); x (0) 3
Solucin
Separando variables e integrando de 0 a t y de 3 a x
x ds t
3 1 s ds 0 r
3
dr

r4 t
ln s 1 ]3x ]0
4
De donde tenemos
x 1 t4
ln
2 4
O tambin
t4

x 2e 1 4

Que es la solucin particular que pasa por el punto (0,3)

b) ECUACION LINEAL DE PRIMER ORDEN


Una ecuacin diferencial lineal tiene la forma
dx
p(t ) x q (t ) (2)
dt
Donde p (t ) y q (t ) son continuas en algn intervalo I
Con solucin general:
x (t ) e
p ( t ) dt p ( t ) dt q (t ) dt c

e

Con c constante.
Ejemplo 3: Resolver la ecuacin lineal
dy
y e 3t
dt
Solucin
dy
Tenemos y e 3t ; p (t ) 1 y q (t ) e 3t
dt
Donde u (t ) e dt e t ;
y (t ) e t e t e 3t dt c
Y tenemos la solucin general
e 2t
y (t ) e t c
2
Ejemplo 4: resolver el problema de valor inicial
dy
4 y e x 0; y ( 0) 4 / 3
dx
Solucin
dy
Escribiendo: 4 y e x , p ( x) 4 y q( x ) e x
dx
Donde u ( x) e 4 dx e 4 x
Luego tenemos:
y ( x ) e 4 x e 4x
e x dx c
e3x
e 4 x c
3
Remplazando la condicin inicial
4/3 = y(0) = 1/3 + c ; entonces c = 1
ex
As tenemos la solucin del PVI: y ( x) e 4 x
3
EL COMANDO dsolve en Matlab:
El comando dsolve es de tipo simblico y permite obtener la solucin exacta de algunas
EDO y los correspondientes problemas de valor inicial.

Ejemplo 5: Resolver y = 1 + y2 y obtener una solucin para (0,1)


Solucin
En la ventana de comandos
>> dsolve('Dy=1+y^2') % se obtiene la solucin general

y = tan(t+C1) (solucin general)


>> dsolve('Dy=1+y^2','y(0)=1') % se obtiene la solucin particular
y =tan (t+1/4*pi) % solucin particular que pasa por el punto (0,1)
>> ezplot('tan(t+pi/4)',[-pi/4,pi/4]); % grafica de la solucin particular
>> hold on
>> plot(0,1,'or') % grafica el punto (0,1)
tan(t+/4)

-0.6 -0.4 -0.2 0 0.2 0.4 0.6


t

NOTA: si el comando dsolve no puede obtener explcitamente la solucin, entonces el


propio dsolve ofrece, en algunos casos, la solucin en forma implcita

Ejemplo 6: resolver y = y2 (1 - y) aplicando dsolve


Solucin
>> dsolve('Dy=y^2*(1-y)')
ans =
1/(lambertw(-1/C1*exp(-t-1))+1)

Donde w(z) = lambertw(z) es definida implcitamente por w(z) * exp(w(z)) = z

EDO de segundo orden


Ejemplo 7: resolver y = -y + cos(2x) y las condiciones y(0) = 1; y(0) = 0
Solucin

>> y=dsolve('D2y=-y+cos(2*x)','y(0)=1','Dy(0)=0','x')

y = 4/3*cos(x)-1/3*cos(2*x)

c) CAMPO DE DIRECCIONES
Dada la EDO y = f(x,y) , si y = y(x) es solucin y (x0,y0) es un punto de la grafica
de y(x), entonces la pendiente de y = y(x) en (x0,y0) es y(x0) que es igual f(x0,y0).
Esto significa que, para conocer la pendiente de la solucin que pasa por (x0,y0) no
hace falta conocer dicha solucin, basta con calcular f(x0,y0).
El problema de valor inicial (1) constituye un campo de direcciones y el programa
Matlab, provee las instrucciones meshgrid y quiver que permiten generar el grafico del
campo de direcciones. Los vectores a considerar para obtener el campo de direcciones
sern (1, y) = (1, f(x,y)).

Ejemplo 8: construir el campo de direcciones de la EDO y = x, y representar la


solucin particular que cumple la condicin inicial y (0) = 0.
Solucin
En la ventana de comandos de MATLAB
>> f=inline('x','x','y');
>> paso=0.5;
>> iz=-3;
>> der=3;
>> [x,y]=meshgrid(iz:paso:der,iz:paso:der); % discretiza el rectngulo [-3,3]x[-3,3] con
paso 0.5
>> [n,m]=size(x);
>> dx=ones(n,m);
>> z=f(x,y);
>> dy=z;
>> quiver(x,y,dx,dy) % grafica el campo de direcciones
>> hold on
>> y = dsolve('Dy=x','y(0)=0','x')
y = 1/2*x^2
>> ezplot('1/2*x^2',[-2.5,2.5]),
>> plot(0,0,'*r')
1/2 x 2

2.5

1.5

0.5

-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5


x

MODELADO POR MEDIO DE ECUACIONES DIFERENCIALES

Qu es un modelo? Es el proceso de representacin del "mundo real", en


trminos matemticos. Los modelos matemticos son sistemas
que evolucionan con el tiempo, pero tambin pueden estar supeditados
a otras variables. Una vez elaborado el modelo, debemos comparar las
predicciones de ste con los datos del sistema. Si el modelo y el sistema
concuerdan, tenemos confianza en que las hiptesis hechas al crear el modelo
son razonables y que podemos usarlo para hacer predicciones; si no
concuerdan, entonces debemos estudiar y mejorar nuestras suposiciones.

ESQUEMA DE LA MODELACION MATEMATICA

Problema de Modelacin
Modelo
Mundo real Matemtico

Prediccin Anlisis
Interpretacin
Resultado Solucin

SUGERENCIAS PARA LA CONSTRUCCION DE MODELOS.


Los pasos bsicos para la elaboracin de un modelo son:
Paso 1: Establezca claramente las hiptesis en las cuales se basar el modelo.
Estas deben describir las relaciones entre las cantidades (variables y parmetros) por
estudiarse.
Paso 2: Defina completamente las variables y los parmetros que se usarn en
el modelo.
Paso 3: Use las hiptesis formuladas en el paso 1, para obtener ecuaciones que
relacionen las cantidades del paso 2.

En ecuaciones diferenciales la variable independiente casi siempre es el


tiempo. Los parmetros son cantidades que no cambian con el tiempo (o con la variable
dependiente) pero que pueden ajustarse (por causas naturales o por un experimento
cientfico)

PRUEBA DEL MODELO: Antes de verificar un modelo se deben tener en cuenta las
siguientes cuestiones.
Son razonables las hiptesis?
Son correctas las dimensiones fsicas de las variables?
Es el modelo, internamente consistente, en el sentido de que las ecuaciones no se
contradigan entre s?
Las ecuaciones pertinentes poseen solucin?
Qu tan difcil resulta obtener soluciones?
Proporcionan las soluciones una respuesta del problema estudiado?

MODELOS POR COMPARTIMENTOS


Muchos procesos se descomponen en varias etapas y todo el sistema se pude modelar
describiendo las iteraciones entre las distintas etapas

MODELO BASICO
X(t) denota el tamao de la poblacin o la cantidad de una sustancia en el
compartimento en el instante t. Entonces la tasa se cambi X(t) puede calcularse como
el caudal(tasa) de entrada menos el de salida del compartimento.

Tasa de entrada X(t) Tasa de salida

Ley de equilibrio: Tasa de Cambio neta = Tasa de entrada Tasa de salida

Del sistema de compartimentos tenemos


dX
Tasa de entrada Tasa de salida
dt

1. MODELO DEL CRECIMIENTO ILIMITADO DE LA POBLACION


Un modelo elemental de crecimiento de una poblacin se basa en la hiptesis
La velocidad de crecimiento de la poblacin es proporcional al tamao de la
poblacin
Sea P(t): la poblacin en el instante t

a. P(t) es una poblacin de bacterias en el instante t. Asumimos que la tasa de


crecimiento es proporcional a la poblacin presente, adems suponemos que la tasa de
defuncin (muerte) es nula (en la divisin celular, la clula madre no muere , sino se
convierte en 2 nuevas clulas)

Modelo Compartimental

k P(t) P(t)

k > 0 , en t = 0, P(0) = P0 luego tenemos un modelo para la poblacin de bacterias

dP (t )
kP (t ); P (0) P0
dt
b. P(t) es una poblacin humana en el instante t, la tasa de defuncin en este caso no es
nula. Pero podemos suponer que las personas solo mueren por causas naturales y por lo
tanto y por lo tanto se espera que la tasa de defuncin sea proporcional a la poblacin
P(t)

k1 P(t) P(t) k2 P(t)

Por ley de equilibrio


dP (t )
k1 P(t ) k 2 P(t ) (k1 k 2 ) P(t )
dt
K1 : constante de natalidad
K2: constante de mortalidad
dP (t )
kP (t ); donde k k1 k 2 (1)
dt

La ecuacin (1) es el modelo de poblacin humana (Ley de Malthus), k es constante de


crecimiento.
dP (t )
En (1) 0 entonces P = 0 (poblacin nula) es solucin de la ecuacin
dt
diferencial (1) a este tipo de solucin se le llama SOLUCION DE EQUILIBRO
dP(t )
Si P (t 0 ) 0 entonces kP (t 0 ) 0 , en consecuencia la poblacin no es
dt
constante.
dP (t )
Si k 0 y P (t 0 ) 0 entonces kP(t 0 ) 0 en t t 0 , y la poblacin est
dt
creciendo.

En t = 0, P(0) = P0 (se llama poblacin inicial)


dP (t )
Suponer que P0 0 y como k 0, tenemos 0, para t 0 , P esta
dt
inicialmente disminuyendo. Este anlisis de P(t) (crece o decrece) cuando t aumenta se
llama ANALISIS CUALITATIVO.

SOLUCION ANALITICA
Dado el problema de valor inicial
dP (t )
kP (t ); P(0) P0
dt
Separando variables tenemos la solucin P(t) = Cekt , C constante
Usando la condicin inicial P(0) = P0
P(t) = P0 ekt
La funcin P(t) se llama solucin(particular) del problema de valor inicial
El conjunto solucin P(t) = Cekt se llama SOLUCION GENERAL.
Ejemplo 1: En 1970, la poblacin de USA era de 3.93 millones, y en 1890 era de 62.95
millones.
Usar la ley de Malthus para estimar la poblacin de USA en funcin del tiempo.
Solucin
En, t = 0; p(0) = p0 = 3.93
Luego tenemos en (2).
p (t ) 3.93e kt (3)
Para encontrar k ajustamos el modelo a un dato especfico
Para t = 100 aos; p (100) 62.95
Luego en (3):

ln(62.95) ln(3.93)
p(100) 62.95 3.93e100 k k 0.027737
100
Al sustituir en la ecuacin (3)
p (t ) 3.93e 0.02773t
Es la poblacin en cualquier instante t.

Ejemplo 2: La poblacin mundial estimada en 1960, fue de 3000 millones de personas


(3x109) y la taza de crecimiento era de 1.8 %. Encontrar la poblacin en cualquier
instante t
Solucin
Tenemos que
P(1960) = 3x102 , k = 1.8 % = 0.018
Luego por la formula (2)
p (t ) 3 x10 9 e 0.018( t 1960 ) , que es la poblacin en cualquier instante t

Ejemplo 3: Un cultivo tiene inicialmente N0 bacterias, para t = 1 hora, el numero de


bacterias 3/2 N0 determine el tiempo para que el numero de bacterias se triplique?
Solucin
N(t) es la poblacin de bacterias en el tiempo t.
Luego en (3) tenemos
N (t ) N 0 e kt (4)
3
En t = 1; N (1) N 0 , luego en (4)
2
3 3
N (1) N 0 N 0 e k k ln( ) 0.4055
2 2
Luego tenemos:
N (t ) N 0 e 0.4055t
(5)
Sea tm el tiempo que demora para que se triplique, entonces
N (t m ) 3N 0
Luego en (5):
ln 3
N (t m ) 3 N 0 N 0 e 0.4055t tm 2.71hrs.
0.4055

MODELO DE CRECIMIENTO LIMITADO (MODELO LOGISTICO)


Considera adems de muertes por causa natural (Ley de Malthus), aquellas muertes
prematuras por: desnutricin, falta de medicamentos, transmisin de enfermedades,
crimines etc.
Nuestra hiptesis acerca de recursos limitados introduce otra cantidad N llamado
cantidad de soporte, estamos suponiendo que P crece si P < N, es decir
dP
kP, si P es pequea
dt
dP
Si P N , 0 queremos introducir un factor que, sea prximo a 1 si Pes pequeo.
dt
P
Pero si P < N el factor es negativo, luego el factor que se acomoda es 1
N
Ms precisamente tenemos
dP P
k (1 ) P (2)
dt N
Llamado MODELO LOGISTICO, con tasa de crecimiento k y capacidad N de soporte.

ANALISIS CUALITATIVO
P
Sea el lado derecho f ( P ) k (1 )P
N
Graficando f tenemos que corta al eje P en P = 0 y P = N
En cualquiera de los casos tenemos, esto indica que la poblacin permanece constante si
P = 0, P = N como se observa en los grficos

Es decir, las funciones constantes P = 0 y P = N resuelven la ecuacin


diferencial. Esas dos soluciones constantes tienen mucho sentido si la
poblacin es cero, permanecer en cero indefinidamente, si la poblacin es
exactamente la asociada con la capacidad de soporte N, ni crecer ni disminuir.
Igual que antes, decimos que P = 0 y P = N, son puntos de equilibrio. Las
funciones constantes P(t) = 0 y P(t) = N son llamadas soluciones de
equilibrio.
El comportamiento a largo plazo de la poblacin P es muy diferente
para otros valores.
dP
Si 0 < P(t) < N, entonces 0 la poblacin P est creciendo
dt
dP
Si P (t ) N entonces tenemos 0 por lo que se espera que la poblacin se nivele
dt
cuando tienda a N.
dP
Si P (0) N entonces f ( P ) 0 la poblacin est disminuyendo y si P (t ) N
dt
dP
Entonces 0 y esperemos que la poblacin se nivele en N
dt
Finalmente si P(0) < 0 (no tiene sentido en trminos de poblacin)
La solucin de (2) se obtiene por variables separables.

dP k
En (2) tenemos P ( P N ), P (0) P0
dt N
k
Haciendo A , entonces
N
dP
AP ( P N ), P (0) P0
dt
Integrando por variables separables
P dr t
P0 r (r N )

0
Ad

De donde resulta
p0 N
P (t ) , o tambin
P0 ( N P0 )e ANt

p0 N
P (t )
P0 ( N P0 )e kt
Es la poblacin en cualquier instante t

Ejemplo 4: (Modelo Logstico para la poblacin de USA)


Si la poblacin en 1790 es 3.93 millones (poblacin inicial) y se dan las poblaciones en
1840 y 1890 de 17.07 y 62.95.
Utilizar el modelo logstico para estimar la poblacin p(t). Cul es la poblacin en
1990?
Solucin
En t = 0; p(0) = p0 = 3.93
Luego en (2):
3.93 p1
p (t ) Ap t
3.93 ( p1 3.93)e 1
(3)
Para t = 50 aos; p(50) = 17.07 ; donde
3.93 p1
17.07 p (50) 50 Ap1
3.93 ( p1 3.93)e
(4)
Para t = 100 , en (3):
3.93 p1
62.95 p(100) 100 Ap1
3.93 ( p1 3.93)e
(5)
Resolviendo (4) y (5) tenemos:
p1 = 250.9992; A = 0.0001214
Sustituyendo en la ecuacin (3); resulta
986.43
p (t )
3.93 247.07e 0.030471 t
Funcin logstica en el tiempo t.
Segn el Censo en 1990, la poblacin (real) de USA era de: 249.63 millones de
habitantes.

Utilizando las funciones de poblacin:


Para t = 200 aos(1990) ; p(200) = 219.82 millones de habitantes (Modelo Logstico)
Para t = 200 aos(1990) ; p(200) = 1008.32 millones de habitantes (Ley de Malthus)
Observamos que el modelo logstico es el que mas se aproxima a la poblacin real.

Ejemplo 5. La poblacin humana de la tierra tiene un coeficiente vital de k = 0.029


aproximadamente. Dado que la poblacin mundial en 1960 era 3x109 personas y la tasa
de crecimiento 1.8 % anual, determine el coeficiente vital e.
Solucin
Tenemos el modelo logstico
dp
kp ep 2
dt
En trminos de porcentaje
1 dp
k ep
p dt
Taza de crecimiento es de 1.8 % = 0.018 y adems k =0,029
Luego en la ecuacin anterior
0,018 0,029 e(3 x10 9 )
De donde
e 3,667 x10 12

II.- METODOS NUMERICOS PARA LA SOLUCION DE EDO


El anlisis matemtico de muchos problemas en ciencias e ingeniera conducen a la
obtencin de ecuaciones diferenciales ordinarias (EDO).
Las soluciones numricas de una ecuacin diferencial, surgen como alternativa cuando
no existe una expresin analtica para la solucin, entonces en estos casos es necesario
acercarse a la solucin por una sucesin de valores que convengan a la solucin.
Un problema importante es determinar las condiciones para que la solucin exista y sea
nica, y conocer el dominio en el que la solucin tiene validez.

EXISTENCIA Y UNICIDAD DE LAS SOLUCIONES


Dado el PVI
x' (t ) f (t , x)
(1)
x(t 0 ) x0
x es una funcin desconocida de t.
La primera ecuacin proporciona la pendiente de la curva x en t.
La segunda ecuacin proporciona un valor particular de la funcin x(t)
Una solucin de (1) se consigue integrando
y t
y0
dY
t0
f ( s, y ( s ))ds
Donde
t
y (t ) y (t 0 ) f ( s, y ( s ))ds
t0

EXISTENCIA
Tendr solucin todo el PVI que se pueda expresar en la forma (1)?
La respuesta es no, pero si podemos esperar que la solucin exista en una vecindad de t
= t0
Ejemplo 1:
Considere el PVI
x' 1 x 2
x ( 0) 0
La curva solucin inicia en t = 0, con pendiente 1(x(0) = 1), Dado que la pendiente es
positiva x(t) es creciente en una vecindad de t = 0 y x2 + 1 tambin es creciente
Se puede esperar que para algn t finita no exista solucin
Es decir que x (t) = +
Esto ocurre en t = /2, dado que la solucin es x (t) = tan(t)

LEMA: Si f continua en el rectngulo R cerrado en (t0,x0)


R {(t , x ) / t t 0 ; x x 0 }

El PVI en (1) tiene solucin x(t) para t t 0 min{ , } , donde M es el mximo de
M
en R.
f (t , x )
Ejemplo 2:
Pruebe que el PVI
x ' (t senx ) 2
x (0) 3

Tiene solucin en -1 t 1
Prueba
Tenemos f (t , x ) (t senx ) 2 y (t 0 , x 0 ) (0,3) en el rectngulo R
R {(t , x ) / t ; x 3 } (2)
La longitud de f est acotada por
f (t , x) ( 1) 2 M

Debe satisfacer min{ , } 1 , para ello tomamos = 1, luego M = 4 ; Si 4 el
M
teorema de existencia asegura que existe una solucin al PVI en el intervalo

t min{ , } 1
M
UNICIDAD
Siendo an f continua, puede que el PVI no tenga solucin nica.
Ejemplo 3:
x' x 2 / 3
x ( 0) 0
1 3
X(t) = 0 es una solucin , otra solucin es x(t ) t
27
Para demostrar que el PVI (1) tiene una solucin nica en una vecindad t = t0 es
necesario suponer algo ms acerca de f.
f
Teorema 2: si f y son continuas en R(rectngulo) definido por (2) entonces el PVI
x
(1) tiene solucin nica en el intervalo que incluye a los t que satisfacen

t t 0 min{ , }
M
El siguiente teorema nos permite inferir la existencia y unicidad de la solucin sobre el
intervalo [a,b] dado.

Teorema 3: Si f continua en una franja a t b , - < x < + y satisface la


desigualdad
f (t , x1 ) f (t , x 2 ) L x1 x 2 (3)
Entonces el PVI tiene una solucin nica en el intervalo [a,b]
La desigualdad (3) se llama condicin de Lipschitz en la segunda variable.
En el caso de una funcin de una variable
g ( x1 ) g ( x 2 ) L x1 x 2 (4)
Esta condicin es ms fuerte que continuidad, dado que si 2 x1 el lado derecho de (4)
x
tiende a cero, luego g ( x 2 ) g ( x1 )
La condicin (4) es ms dbil que tener una derivada acotada.
Si g(x) existe en todas partes y no excede a L en valor absoluto, entonces el teorema
deel valor medio asegura que
g ( x1 ) g ( x 2 ) g ' ( ) x1 x 2 L x1 x 2
Ejemplo 5:
n
Pruebe que la funcin g ( x ) ai x wi
i 1
n
Satisface una condicin de Lipschitz con la constante L a i
i 1
Prueba
n n
g ( x1 ) g ( x 2 ) ai ( x1 wi ) ai ( x2 wi )
i 1 i 1
n
a
i 1
i ( x1 wi x 2 wi )
n
ai x1 wi x 2 wi
i 1
n
ai x1 x 2 L x1 x 2
i 1

Ejemplo 6: Dado el problema de valor inicial: y = x + y ; y(x0) = y0


Encuentre la constante de Lipchitz
Solucin
f (t , y1 ) f (t , y 2 ) ( x y1 ) ( x y 2 ) y1 y 2 , donde L = 1,
dy 2
Ejemplo 7: probar que la solucin del PVI t 2 e y ; y (0) 0
dt
Existe para 0 t 1 / 2 y adems y (t ) 1
Solucin
Tomar el rectngulo R : 0 t 1 / 2; 1 y 1
2 1 5
Adems M (max (t e y ) ( ) 2 e 0
t , y )R 2 4
1 1 1 1
Lego y(t) existe para 0 t min , min , 1/ 2
2 M 2 5/ 4
En este intervalo cumple y (t ) 1

dy
METODOS DE SOLUCION DEL PVI: f (t , y ); y (t 0 ) y 0
dt

a) METODO GRAFICO: consiste en resolver construyendo el campo de


direcciones por el mtodo de las isclinas
b) METODOS ANALITICOS: son los mtodos clsicos de resolucin de una EDO
(factor integrante, separacin de variables, cambio de variable, reduccin a
homognea, etc.)
c) METODOS BASADOS EN DESARROLLO DE TAYLOR: expresan la
funcin solucin y(t) en torno a t0 , a travs del desarrollo de Taylor
y ' ' (t 0 )
y (t ) y (t 0 ) y ' (t 0 )(t t 0 ) (t t 0 ) 2 ......
2!
d) METODO DE PICARD(aproximaciones sucesivas): consiste en generar a partir
del valor y0 del PVI , y obtener la sucesin
y 0 (t ) y 0
t
y1 (t ) y 0 f ( s, y ( s ))ds
t0


t
yn 1 (t ) y 0 f ( s, y n ( s ))ds
t0

e) METODOS NUMERICOS: consiste en encontrar soluciones aproximadas yk


para k = 1,2,,M. a partir de y0 (valor inicial), usando DIFERENCIAS
FINITAS.

SOLUCION NUMERICA DE LAS EDO


Dado el PVI
dy
f (t , y ); t [t 0 , t n ]
dt (5)
y (t 0 ) y 0
Para tn = t0 + nh ; n = 0,1,2,3,.
Denotamos yn a una aproximacin de y(tn) y fn una aproximacin de f(tn , y(tn))
Se busca encontrar una solucin y(t*) mediante yn(t*) con t * [t 0 , t n ]

METODOS DE UN SOLO PASO


Un mtodo numrico para el PVI (5) se llama mtodo de un solo paso si yn + 1
depende solo de yn para todo n 1
El objetivo es conseguir y1 , y2 , y3 ,y4 , ..
Tal que para cada t * [t 0 , t n ] , con t* = tn = t0 + nh
Entonces queremos que yn aproxime a y(tn) cuando h tiende a cero
Entre los mtodos de un solo paso tenemos:

a) METODOS EXPLICITOS: Para el clculo de yn solo implica evaluar la funcin


( y n k ,....., y n 1 , y n ) , entre ellos tenemos

1) Mtodo de Euler Progresivo(forward Euler) : yn + 1 = yn + hfn


h
2) Mtodo de Heun: y n 1 y n ( f n f (t n 1 , y n hf n ))
2
3) Mtodos generales de Runge Kutta:
y n 1 y n (t n , y n , h) h
Donde (t n , y n , h) se conoce como frmula de incremento
a1 k1 a 2 k 2 a3 k 3 .... a n k n
n: representa el orden del mtodo
ai : constantes
ki : depende del orden del mtodo
4) Mtodo adaptativo de Runge Kutta Fehlberg

b) METODOS IMPLICITOS: El valor de yn + 1 depende del propio yn + 1 , la


determinacin de yn + 1 , exige resolver la ecuacin algebraica
y n 1 ( y n k ,...., y n , y n 1 ) 0
Algunos mtodos implicitos
1) El mtodo de Euler regresivo(backward Euler)
y n 1 y n hf n 1
2) El mtodo del trapecio(Crank-Nicolson)
h
y n 1 y n ( f n f n 1 )
2

METODOS DE UN SOLO PASO

1. EL METODO DE TAYLOR
Sea el PVI
dy
f ( x, y )
dx (5)
y( x0 ) y0
La serie de Taylor
h2 h n (n) h ( n 1) ( n 1)
y i 1 y i hy 'i y ' ' i ...... y i y ( z ), xi z xi 1
2! n! ( n 1)!
Se puede usar para obtener puntos de la solucin (5), a partir de la condicin inicial y
estimar el error de truncamiento. Debe elegirse la distancia h entre los puntos.
La ventaja de este enfoque es que se puede mejorar la precisin incluyendo ms
trminos del desarrollo. Sin embargo, al usar las derivadas de y(x) se obtienen formulas
aplicables nicamente para la ecuacin especificada.

Algoritmo de Taylor de orden 2


h 2 '' h3
y i 1 y i hyi' yi ; E y ' ' ' ( z ); x 0 z x N (error de truncamiento)
2! 3!
xi 1 xi h, i 0,1,2,3,.....
Ejemplo 1: Aproxime una solucin para el PVI
y ' y x x 2 1 0
y (0) 1
Utilizando la serie de Taylor de orden 2, para h = 0.1
Solucin
Tenemos: y = y x2 + x +1, donde y = y x2 x +2
Luego para: x0 = 0; y0 = 1 ; h = 0.1
El algoritmo es:
h2
y i 1 y i h( y i xi2 xi 1) ( y i xi2 xi 2)
2
xi 1 xi h, i 0,1,2,3,...
Generando: y1, y2, y3, y4, y5,..
h2
para i 0, y1 y 0 h( y 0 x 2 0 x0 1) ( y 0 x 2 0 x0 2)
2!
(0.1) 2
1 0.1(1 0 2 0 1) (1 - 0 2 - 0 2) 1.2150
2
x 1 x0 h 0 0.1 0.1
h2
para i 1, y 2 y1 h( y1 x 2 1 x1 1) ( y1 x 21 x1 2)
2!
(0.1) 2
1.2150 0.1(1.2150 (0.1) 2 0.1 1) (1.2150 - (0.1) 2 - 0.1 2) 1.4610
2
x 2 x 1 h 0.1 0.1 0.2
Para comprobar la exactitud comparamos con la solucin exacta: y(x) = ex + x + x2
y(x1) = y(0.1) = 1.2152 ; y(x2) = y(0.2) = 1.4614

i xi+1 yi+1 (Taylor) y(xi+1) (Exacta)


0 0.1 1.2150 1.2152
1 0.2 1.4610 1.4614

Tiene un error de truncamiento de tres cifras decimales.

IMPLEMENTACION
El ejemplo anterior, se implementa con la funcin taylor para h = 0.1
function [x,y]= taylor(x,y,h)
y=y+h*(y-x^2+x+1)+h^2/2*(y-x^2-x+2);
x=x+h;

En la ventana de comandos, obtenemos los puntos (xi,yi) ; para i = 1,2,3,


>> x=0;y=1;h=0.1;
>> [x,y]=taylor(x,y,h)
x = 0.1000
y = 1.2150

>> [x,y]=taylor(x,y,h) % este comando se reactualiza


x = 0.2000
y = 1.4610
Obtener ms puntos:
El script scritaylor permite obtener ms puntos para un valor de m dado, usando la
funcin anterior taylor

% Scrip scritaylor, para la ecuacin diferencial


% y'-y-x+x^2-1=0 ; y(0) = 1, h = 0.1
x=0;
y=1;
m=20;
h=0.1;
for i=1:m
[x,y]=taylor(x,y,h);
u(i)=x;
v(i)=y;
end

>> scritaylor
>> plot(u,v,'o'); % grafica los puntos (x,y) calculados
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x') % obtencin de la solucin analtica
g=
x+x^2+exp(x)
>> hold on;grid on
>> ezplot(g,[0,2])
x+x 2+exp(x)
14

12

10

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x

Figura 1: Mtodo de Taylor, para h = 0.1, m = 20

Ejemplo 2: Resolver el PVI


y ' cos x seny x 2
y ( 1) 3
Por el mtodo de Taylor de 4to orden, para h = 0.1

Usamos la funcin taylor1, el cual usa la funcin tay


function y=taylor1(n,a,b,h)
% este programa resuelve la ecuacin diferencial
% y'=cosx-seny+x^2; y(-1)=3, usando el mtodo de Taylor
% de cuarto orden, para h=0.1
% usa la funcin "tay"
format long
x=a:h:n*h;
y=zeros(n,1);
y(1)=b;
for k=1:n
y1=tay(x(k),y(k));
y2=-sin(x(k))-cos(y(k))*y1+2*x(k);
y3=-cos(x(k))+(sin(y(k)))*(y2)^2-(cos(y(k)))*y1+2;
y4=sin(x(k))+(y1^3-y3)*cos(y(k));
y(k+1)=y(k)+h*(y1+(h/2)*(y2+(h/3)*(y3+(h/4)*(y4))));
end

Funcin tay
function y1=tay(x,y)
y1=cos(x)-sin(y)+x^2;

Ejecutamos en la ventana de comandos


>> taylor1(10,-1,3,0.1)
ans =

3.000000000000000
3.141523798815666
3.287216794698704
3.438764055326533
3.597569817751085
3.764637981583152
3.940425688412236
4.124693336379560
4.316391269699142
4.513637715380874
4.713841791853081
Por lo que concuerda con el valor y (0) = 4.713841791853

2. METODO DE EULER

De la frmula en serie de Taylor


h2 h3 h n 1 ( n 1)
xi 1 xi hxi '
xi ' ' xi ' ' '.... xi ( z ), t i z t i 1
2! 3! (n 1)!
Tomamos los dos primeros trminos: xi 1 xi hf (t i , xi )
Una ventaja en esta frmula es que no necesita tomar ninguna derivada de f, dicha
ventaja se neutraliza al tomar valores pequeos de h, para obtener una precisin
aceptable.
Para el PVI

x' f (t, x)
(1)
x(t 0 ) x0
Tenemos:
El algoritmo de Euler
xi 1 xi hf (t i , xi )
t i | t i h ; i 0,1,2,...
h2
E x' ' ( z ); t i z t i 1 (error de truncamiento en cada paso)
2

3. METODOS DE RUNGE KUTTA


Utilizar el mtodo de Taylor de orden 4 para resolver el PVI requiere derivar en (1) para
encontrar las formulas y ' ' , y ' ' , y iv una vez hecho esto las funciones debe programarse.
Los mtodos de Runge Kutta, no necesita derivadas en su frmula, al usar una
combinacin ingeniosa de valores de f(t,x).

3.1. RUNGE KUTTA DE SEGUNDO ORDEN


Por comodidad usamos la serie de Taylor para f(t + x) de la forma
h2 h3 h 4 iv
x(t h) x(t ) hx' (t ) x' ' (t ) x' ' ' (t ) x (t ) ...... (2)
2! 3! 4!
A partir de la ecuacin diferencial (1) tenemos
x' f
x' ' f t f x x' f t f x f
x' ' ' f tt f tx f ( f t f x ) f x f ( f xt f xx f )
etc.

Los primeros tres trminos de la ecuacin (2) se pueden escribir ahora


h2
x(t h) x(t ) hf [ f t f x f ] O (h 3 )
2
h h h2
x(t ) f f [ f t f x f ] O (h 3 ) (3)
2 2 2
h h
x(t ) f [ f hf t hff x ] O (h 3 )
2 2
Se puede eliminar las derivadas parciales, recurriendo a los primeros trminos de serie
de Taylor de dos variables
f (t h, x hf ) f hf t hff x O (h 2 )
La ecuacin (3) se puede escribir
h h
x(t h) x(t ) f (t , x) f (t h, x hf ) O( h 3 )
2 2
1
x(t ) [ hf (t , x) hf (t h, x hf )] O( h 3 )
2
Considerando xi 1 x (t h) un paso adelante de xi y h el tamao de paso, tenemos
k1 hf (t i , xi ),
k 2 hf (t i h, xi k1 )
1
xi 1 xi ( k1 k 2 )
2 (4)
t i 1 t i h, i 0,1,2,3,.....
h3
E x' ' ' ( z ) O( h 3 ), t i z t i 1 (error de truncamiento en cada paso)
3!
La expresin (4) se conoce como mtodo de Runge Kutta de 2do orden, tambin
llamado METODO DE HEUN
En general las frmulas de Runge Kutta de 2do orden adoptan la forma
x(t h) x(t ) w1 hf w2 h f (t h, x hf ) O (h 3 ) (5)
Donde w1 , w2 , y son parmetros.
La ecuacin (5) se puede reescribir con la ayuda de la serie de Taylor de 2 variables
como
x(t h) x (t ) w1 hf w2 h [f hf t hff x ] O( h 3 ) (6)
Al comparar (5) y (6) se debe imponer las condiciones
w1 w2 1
w 2 1 / 2 (7)
w2 1 / 2
Una solucin del sistema (7) es: w1 w2 1 / 2; 1
Que corresponde al mtodo de HEUN(4)
El sistema (7) posee otras soluciones, al tomar: w1 0, w2 1; 1 / 2
La frmula que se obtiene a partir de (6) resulta
k1 hf (t i , xi ),
k 2 hf (t i h / 2, x i k1 / 2)
xi 1 x i k 2
(8)
t i 1 t i h, i 0,1,2,3,.....
h3
E x ' ' ' ( z ) O ( h 3 ), t i z t i 1 (error de truncamiento en cada paso )
3!
Llamado METODO DE EULER MODIFICADO

3.2. RUNGE KUTTA DE 4to ORDEN


Deducir frmulas de Runge Kutta de orden superior resulta un poco complicado, por lo
que se presenta el mtodo de Runge Kutta de 4to Orden Clsico

k1 hf (t i , xi )
k 2 hf (t i h / 2, x i k1 / 2)
k 3 hf (t i h / 2, x i k 2 / 2)
k 4 hf (t i h, x i k 3 )
1 (9)
x i 1 x i ( k1 2k 2 2 k 3 k 4 )
6
t i 1 t i h, i 0,1,2,3,.....
h 5 (v)
E x ( z ) O (h 5 ), t i z t i 1 (error de truncamiento en cada paso)
5!

Ejemplo1: Aproxime una solucin para el PVI


y' y x x 2 1
y (0) 1 ; tomar h 0.1

a) Encuentre la solucin aproximada y3(0.3), por el mtodo de Euler, Heun y Runge


Kutta de 4to orden.
b) Encuentre la solucin exacta y evalu y(3)
Solucin
En este caso: f(x,y) = y + x x2 + 1; x0 = 0 , y0 = 1 , h = 0.1
a) Calculando las aproximaciones
1) Mtodo de Euler
y i 1 y i hf ( xi , y i ) y i 0.1[ y i xi xi2 1]
xi 1 xi h ; i 0,1,2
Calculo de los puntos (xi,yi) en (1), para i = 0,1,2,3,.
i 0; y1 y 0 hf ( x 0 , y 0 ) 1 0.1 f (0,1) 1 0.1(1 0 0 2 1) 1.2000
x 1 x 0 h 0 0.1 0.1

i 1; y 2 y1 hf ( x1 , y 1 ) 1.2 0.1 f (0.1,1.2) 1.2 0.1(1.2 (0.1) 2 0.1 1) 1.4290


x 2 x1 h 0.1 0.1 0.2
i 2; y 3 y 2 0.1 f ( x 2 , y 2 ) 1.4290 0.1 f (0.2,1.4290) 1.6879
x3 x 2 h 0.2 0.1 0.3
2) Mtodo de Heun
k1 0.1 f ( x i , y i ),
k 2 0.1 f ( x i h, y i k1 )
1
y i 1 y i ( k1 k 2 )
2
x i 1 x i h, i 0,1,2
Encontrando puntos (xi,yi)
i 0; k1 hf ( x0 , y 0 ) 0.1 f (0,1) 0.1(0 0 2 1 1) 0.2000
k 2 hf ( x 0 h, y 0 k1 ) 0.1 f (0.1,1.2) 0.1(0.1 0.12 1.2 1) 0.2290
1
y1 y 0 (k1 k 2 ) 1 0.5(0.2000 0.2290) 1.2145
2
x1 x0 h 0 0.1 0.1
i 1; k1 hf ( x1 , y 1 ) 0.1 f (0.1,1.2145) 0.1(0.1 0.12 1.2145 1) 0.2305
k 2 hf ( x1 h, y1 k1 ) 0.1 f (0.2,1.4450) 0.1(0.2 0.2 2 1.4450 1) 0.2605
1
y 2 y1 (k1 k 2 ) 1.2145 0.5(0.2305 0.2605) 1.4600
2
x 2 x1 h 0.1 0.1 0.2
i 2; k1 0.1 f ( x 2 , y 2 ) 0.1 f (0.2,1.46) 0.2620; k 2 0.1 f (0.3,1.722) 0.2932
1
y 3 y1 (k1 k 2 ) 1.46 0.5(0.262 0.2932) 1.7376
2
x3 x 2 h 0.2 0.1 0.3
3) Mtodo de RK4
k1 hf ( x i , y i )
k 2 hf ( x i h / 2, y i k1 / 2)
k 3 hf ( xi h / 2, y i k 2 / 2)
k 4 hf ( x i h, y i k 3 )
1
y i 1 y i ( k 1 2k 2 2k 3 k 4 )
6
x i 1 xi h, i 0,1,2
Calculando los puntos de la forma (xi,yi)
i 0: k1 hf ( x 0 , y 0 ) 0.1 f (0,1) 0.1(0 0 2 1 1) 0.2000
k 2 hf ( x 0 h / 2, y 0 k1 / 2) 0.1 f (0.05,1.1) 0.2148
k 3 hf ( x0 h / 2, y 0 k 2 / 2) 0.1 f (0.05,1.1074) 0.2155
k 4 hf ( x 0 h, y 0 k 3 ) 0.1 f (0.1,1.2155) 0.2305
1 1
y1 y 0 (k1 2k 2 2k 3 k 4 ) 1 (0.2 2(0.2148) 2(0.2155) 0.2305) 1.2152
6 6
x1 x0 h 0 0.1 0.1
Idnticamente
Para i = 1 , y2 = 1.4614 ; para i = 2, y3 = 1.7399
La solucin exacta es: y(x) = x + x2 + ex
Los valores obtenidos se muestran en la tabla, para h = 0.1

i xi+1 yi+1 (Euler) yi+1 (Heun) yi+1 (RK4) y(xi+1) (Exacta)


0 0.1 1.2000 1.2145 1.2152 1.2152
1 0.2 1.4290 1.46 1.4614 1.4614
2 0.3 1.6879 1.7376 1.7399 1.7399

Observamos que el mtodo RK4 es el que mejor aproxima al valor exacto.


Este procedimiento se puede repetir para otros valores de h.

IMPLEMENTACION
Para obtener los valores mostrados en la tabla, implementamos funciones en MATLAB.

1. Mtodo de Euler
La funcin euler calcula los valores aproximados, ingresando la funcin en lnea
function [x,y]= euler(f,x,y,h)
y=y+h*f(x,y);
x=x+h;
En la ventana de comandos
>> f=inline(funcion);x = 0; y = 1 h = 0.1;
>> [x,y]=euler(f,x,y,h)

Para obtener ms puntos usar el script euleradel que utiliza la funcin euler,
asignando un valor a m.

% Se usa para la ecuacin diferencial


% y'-y-x+x^2-1=0 ; y(0) = 1, h = 0.1, con f= y-x^2+x+1
f=inline('y-x^2+x+1');
x=0;
y=1;
m=20;
h=0.1;
for i=1:m
[x,y]=euler(f,x,y,h);
u(i)=x;
v(i)=y;
end

En la ventana de comandos:
>> euleradel
>> plot(u,v,'o'),grid on,hold on , % grafica los puntos (x,y) encontrados
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x') % obtiene la solucin analtica
g=
x+x^2+exp(x)
>> hold on
>> ezplot(g,[0,2]) % grafica la solucin analtica en una misma pantalla

x+x 2+exp(x)

14

12

10

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x

Figura 1: Solucin analtica (lnea continua) y Euler (puntos), para h = 0.1, m = 20.
Se observa la acumulacin del error de truncamiento

2. Mtodo de HEUN
La funcin heun ,calcula los valores aproximados y son actualizados, la funcin
f(x,y) ingresa en lnea

function [x,y]= heun(f,x,y,h)


k1=h*f(x,y);
k2=h*f(x+h,y+k1);
y=y+0.5*(k1+k2);
x=x+h;
>> f=inline(funcion);x = 0; y = 1 h = 0.1;
>> [x,y]=heun(f,x,y,h)

Para obtener ms puntos y su grafica se usa el script progheun que usa la


funcin heun

% Scrip metodo de heun, para la ecuacion diferencial


% y'-y-x+x^2-1=0 ; y(0) = 1, h = 0.1, con f= y-x^2+x+1
f=inline('y-x^2+x+1');
x=0;
y=1;
m=20;
h=0.1;
for i=1:m
[x,y]=heun(f,x,y,h);
u(i)=x; % la solucion es almacenada en
v(i)=y; % los vectores u, v
end

En ventana de comandos
>> progheun
>> plot(u,v,'r*'),grid on,hold on
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x')
g=
x+x^2+exp(x)

>> ezplot(g,[0,2])
Graficando
x+x 2+exp(x)
14

12

10

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x

Figura 2: Solucin analtica (lnea continua) y mtodo de heun (lnea punteada),


claramente se observa la reduccin del error de truncamiento

3. Mtodo de RK4
La funcin rk4 encuentra los valores aproximados y la funcin ingresa en lnea

function [x,y]= rk4(f,x,y,h)


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);
y=y+1/6*(k1+2*k2+2*k3+k4);
x=x+h;

En la ventana de comandos
>> f=inline(funcion);x = 0; y = 1 h = 0.1;
>> [x,y]=rk4(f,x,y,h)

Para obtener ms puntos y su grafica se usa el script progrk4 que usa la funcin
rk4
% Scrip metodo de runge kutta de cuarto orden,
%para la ecuacion diferencial
% y'-y-x+x^2-1=0 ; y(0) = 1, h = 0.1, con f= y-x^2+x+1
f=inline('y-x^2+x+1');
x=0;
y=1;
m=20;
h=0.1;
for i=1:m
[x,y]=rk4(f,x,y,h);
u(i)=x; % la solucin es almacenada en
v(i)=y; % los vectores u, v
end

En ventana de Comandos
>> progrk4
>> plot(u,v,'go'),grid on,hold on
>> plot(u,v,'ro'),grid on,hold on
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x')
g=
x+x^2+exp(x)
>> ezplot(g,[0,2])

Graficando
x+x 2+exp(x)
14

12

10

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x

Figura 3: Mtodo de Runge Kutta de 4to orden.

OBSERVACION:
Dado el PVI
y ' f ( x, y )
y( x0 ) y0
Una modificacin de los programas, anteriores es considerar a la funcin f(x,y) como
pendiente, que debe ser guardado como pendiente.m , lo de m es la extensin con
que MATLAB guarda sus archivos.

Ejemplo:
Dada la ecuacin diferencial:
y ' 2 x 3 12 x 2 20 x 8.5 ; y (0) 1 , x [0,4] , con tamao de paso h = 0.5
a) haga una rutina para el mtodo de Euler
b) haga una rutina para el mtodo de Heun
c) haga una rutina para el mtodo de Runge Kutta de cuarto orden
d) compare las soluciones mediante una grafica
Implementando las rutinas en MATLAB
1. Mtodo de Euler
function y = euler1(x0,y0,xf,h)
x = x0:h:xf; % arreglo con los valores de x
y = zeros(1,length(x)); % arreglo que va a contener los valores de y
y(1) = y0; % se asigna la condicin inicial en la posicin 1
for i = 2:length(x)
y(i)=y(i-1) + pendiente(x(i-1),y(i-1))*h;
end
plot(x,y,'r-*')

Necesitamos incluir el archivo pendiente.m


function f = pendiente(x,y)
f =-2*x^3+12*x^2-20*x+8.5;

En la ventana de comandos
>> x0=0;
>> y0=1;
>> xf=4;
>> h=0.5;
>> y1=euler1(x0,y0,xf,0.5)
>> hold on
>> y2=euler1(x0,y0,xf,0.1);
>> x=0:0.01:4;
>> y3=-0.5*x.^4+4*x.^3-10*x.^2+8.5*x+1;
>> hold on
>> plot(x,y3);
>> grid
>> legend('num:h=0.5','num:h=0.1','verdadera');

Obviamente la solucin general se obtiene artesanalmente


y = -0.5x4 +4x3 -10x2 + 8.5x + 1
8
num:h=0.5
num:h=0.1
7
verdadera

1
0 0.5 1 1.5 2 2.5 3 3.5 4

Figura 4: muestra los resultados por el mtodo de Euler para h = 0.5, 0.1;
conjuntamente con la solucin general.
2. Mtodo de Heun
function y = heun1(x0,y0,xf,h,e)
x = x0:h:xf;
y = zeros(1,length(x));
y(1) = y0;
for i = 2:length(x)
er = 100;
y0 = y(i-1) + pendiente(x(i-1),y(i-1))*h;
while er > e
y(i) = y(i-1) + (pendiente(x(i-1),y(i-1)) + pendiente(x(i),y0))*h/2;
er = abs((y(i) - y0)/y(i))*100
y0 = y(i);
end
end
plot(x,y,'+-')

Nota: el valor de e es ingresado por el usuario.

En la ventana de comandos
>> x0=0;
>> y0=1;
>> xf=4;
>> h=0.5;
>>e=0.5;
>> y1=euler1(x0,y0,xf,0.5);
>> hold on
>> y2=heun1(x0,y0,xf,0.5,e);
>> x=0:0.01:4;
>> y3=-0.5*x.^4+4*x.^3-10*x.^2+8.5*x+1;
>> hold on
>> plot(x,y3);
>> legend('eulr1:h=0.5','heun1:h=0.5','verdadera');
>> grid

Resultados obtenidos
8
eulr:h=0.5
heun:h=0.5
7
verdadera

1
0 0.5 1 1.5 2 2.5 3 3.5 4

Figura 5: Se aprecia que el mtodo de Heun nos da mejores resultados que el de Euler,
para h = 0.5.

3. Mtodo de RK4

function y = rk41(x0,y0,xf,h)
x=x0:h:xf;
y = zeros(1,length(x));
y(1)=y0;
for j = 2:length(x)
k1 = pendiente(x(j-1),y(j-1));
k2 = pendiente(x(j-1)+h/2,y(j-1)+h*k1/2);
k3 = pendiente(x(j-1)+h/2,y(j-1)+h*k2/2);
k4 = pendiente(x(j),y(j-1)+k3*h);
y(j) = y(j-1) + (k1 + 2*k2 + 2*k3 + k4)*h/6;
end
plot(x,y,'o-')

En la ventana de comandos

>> hold on
>> y4=rk41(x0,y0,xf,h);
>> legend('eulr:h=0.5','heun:h=0.5','rk41:h=0.5','verdadera');
>> title('grafico:euler1,heun1,rk41,para h=0.5 y exacta')

Resultados obtenidos
grafico:euler,heun,RK4,para h=0.5 y exacta
8
eulr:h=0.5
heun:h=0.5
7
RK4:h=0.5
verdadera
6

1
0 0.5 1 1.5 2 2.5 3 3.5 4

Figura 6: Resultados obtenidos por Euler, Heun y Runge Kutta de 4to orden, se observa
que el mtodo de Runge Kuta es el que se aproxima mas a la solucin general para un
tamao de paso h = 0.5

Ejercicio
Dado el problema de valor inicial
y ' e 2 t 2 y ; y (0) 1 / 10

a) Encuentre su campo de direcciones

b) Hallar la solucin exacta

c) Aproxime por el mtodo de Euler, usando los archivos, Euler y euleradel

d) Aproxime por el mtodo de Euler, usando los archivos, euler1 y pendiente

Solucin
a) Campo de direcciones: e 2t 2 y k (familia de curvas)

f=inline('exp(-2.*t)-2.*y','t','y');
paso=0.5;
iz=-6;der=6;
[t,y]=meshgrid(iz:paso:der,iz:paso:der);
[n,m]=size(t);
dt=ones(n,m);
z=f(t,y);
dy=z;
quiver(t,y,dt,dy)
8

-2

-4

-6
-8 -6 -4 -2 0 2 4 6 8

b) Solucin analtica

>> hold on
>> y=dsolve('Dy=exp(-2*t)-2*y','y(0)=1/10','t')
y=
exp(-2*t)/10 + t*exp(-2*t)

Grafica de la solucin

>> ezplot('exp(-2*t)./10+t.*exp(-2*t)',[-5.5,5.5])
>> plot(0,1/10,'*r')
4
x 10 exp(-2 t)/10+t exp(-2 t)

-0.5

-1

-1.5

-2

-2.5

-3

-5 -4 -3 -2 -1 0 1 2 3 4 5
t

c) Usando euler y euleradel

% Scrip "euleradel" resuelve por el metodo de Euler progresivo


% para la ecuacion diferencial
% y'=f(t,y);f=exp(-2*t)-2*y ; y(0) = 0.1; h = 0.5;
% utiliza la funcion "euler"
f=inline('exp(-2*x)-2*y');
x=0;
y=0.1;
m=20;
h=0.1;
for i=1:m
[x,y]=euler(f,x,y,h);
u(i)=x;
v(i)=y;
end
en la ventana de comandos
>> euleradel
>> plot(u,v,'o'),hold on, grid on (grafica los puntos)
>> g=dsolve('Dy=exp(-2*x)-2*y','y(0)=0.1','x') ( se obtiene la solucin analtica)
g=
exp(-2*x)/10 + x*exp(-2*x)
>> ezplot(g,[0,2]) ( grafica de la solucin , con los puntos )

exp(-2 x)/10 + x exp(-2 x)

0.2

0.15

0.1

0.05

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2


x

d) Usando euler1 y la funcin pendiente

>> x0=0;xf=2;y0=0.1;h=0.1;
>> y=euler1(x0,y0,xf,h),grid on

>> g=dsolve('Dy=exp(-2*x)-2*y','y(0)=0.1','x')

g = exp(-2*x)/10 + x*exp(-2*x)
>> hold on
>> ezplot(g,[0,2])
>> legend('euler:h=0.1','exacta')
exp(-2 x)/10 + x exp(-2 x)

euler:h=0.1
exacta

0.2

0.15

0.1

0.05

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2


x

Mtodos Adaptativos de Runge-Kutta


Todos los mtodos observados hasta el momento utilizan paso constante. Esta
caracterstica puede ser una desventaja en algunas ocasiones. Por ejemplo cuando la
solucin de la ecuacin sufre un cambio brusco (Figura 10), donde los mtodos de paso
constantes pueden generar errores importantes. Otra desventaja de los mtodos de paso
constante se presenta cuando la solucin se caracteriza por tener tramos con pendiente
casi constante (Figura 10); en estos tramos podra usarse un paso ms grande
reduciendo el tiempo de clculo sin prdida de precisin.

y
Pendiente casi
1 constante

Cambio brusco de
pendiente

0 x
1 2 3 4
Figura 10: funcin con cambios sbitos de pendiente

Un mtodo que implementa el cambio adaptativo del tamao del paso es el mtodo
Runge-Kutta Fehlberg, el cual realiza dos predicciones con mtodos quinto y cuarto
orden y de acuerdo a la diferencia entre las predicciones actualiza el paso. Aunque
alguien podra pensar que se esta duplicando el trabajo cuando se realizan dos
predicciones para el mismo punto, el mtodo RK Fehlberg utiliza las constantes ki
halladas en la prediccin de quinto orden para realizar la prediccin de cuarto orden,
reduciendo considerablemente los clculos necesarios. El mtodo RK de quinto orden
utilizado es el siguiente:

2825 18575 13525 277 1


y i y i 1 k1 k3 k4 k5 k6 h (1)
27648 48384 55296 14336 4
Donde
k1 f ( xi 1 , y i 1 )
k 2 f ( xi 1 h / 5, y i 1 k1 h / 5)
k 3 f ( xi 1 3h / 10, y i 1 (3k1 h / 40) (9k 2 h / 40))
k 4 f ( xi 1 3h / 5, y i 1 (3k1 h / 10) (9k 2 h / 10) (6k 3 h / 5))
k 5 f ( xi 1 h, y i 1 (11k1 h / 54) (5k 2 h / 2) (70k 3 h / 27) (35k 4 h / 27))
k 5 f ( xi 1 7h / 8, y i 1 (163k1 h / 55296) (175k 2 h / 512) (575k 3 h / 13824)
( 44275k 4 h / 110592 ) ( 253k 5 h / 4096))
El mtodo mtodo de cuarto orden esta dado por la siguiente expresin
37 250 125 512
y i y i 1 k1 k3 k4 k6 h (2)
378 621 594 1771
Donde las constantes ki son las mismas que las del mtodo de quinto orden
Una tcnica para disminuir el paso si es muy grande o aumentarlo si es muy pequeo es
la siguiente

nuevo
hnuevo hactual (3)
actual

Donde
y i( qu int o ) y i( cuarto ) (4)

La constante de la ecuacin (3) se toma igual a 0.2 cuando se quiere aumentar el


tamao de paso y se toma 0.25 para disminuirlo.

Ejemplo
Dada la ecuacin diferencial

dy 2 2
0.6 y 10e ( x 2 ) /[ 2 ( 0.075) ]
dx
Con y(0) = 0.5 , para h = 0.5 y dd = 0.00005.

Implementacin
La solucin de la ecuacin diferencial, lo hacemos con el programa RKadapt.m ,
creando un archivo pend.m , que ser llamado por el programa.

function y = RKadapt(x0,y0,xf,hi,dd)
% programa para el mtodo de Runge-Kutta Fehlberg
% realiza predicciones con mtodos de cuarto y quinto orden
% ENTRADAS:
% x0:valor incial de x
% y0: valor inicial de y
% xf: valor final de x
% hi:control tamao de paso
% $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
x(1) = x0;
y(1) = y0;
i = 1;
while x(i) < xf
k(1) = pend(x(i),y(i));
k(2) = pend(x(i)+hi/5,y(i)+k(1)*hi/5);
k(3) = pend(x(i)+3*hi/10,y(i)+3*k(1)*hi/40 + 9/40*k(2)*hi);
k(4) = pend(x(i)+3*hi/5,y(i) + 3*k(1)*hi/10 - 9/10*k(2)*hi + 6/5*k(3)*hi);
k(5) = pend(x(i)+hi,y(i) - 11*k(1)*hi/54 + 5/2*k(2)*hi - 70/27*k(3)*hi+...
35/27*k(4)*hi);
k(6) = pend(x(i)+7/8*hi,y(i) + 1631*k(1)*hi/55296 + 175/512*k(2)*hi+...
575/13824*k(3)*hi+ 44275/110592*k(4)*hi + 253/4096*k(5)*hi);
y4 = y(i) + hi*k*[37/378;0;250/621;125/594;0;512/1771];
y5 = y(i) + hi*k*[2825/27648;0;18575/48348;13525/55296;277/14336;1/4];
err = abs(y4-y5);
if err > dd
hi = hi*(dd/err)^0.25;
else
y(i+1)=y5;
hi = hi*(dd/err)^0.2;
x(i+1)=x(i)+hi;
i = i + 1;
end
end
plot(x,y)
grid on
xlabel('x')
ylabel('y')

Archivo pend.m
function f=pend(x,y)
f= -0.6*y+10*exp(-(x-2)^2/(2*(0.075)^2));
En la ventana de comandos

>> x0=0;
>> y0=0.5;
>> xf=4;
>> hi=0.5;
>> dd=0.00005;
>> y1=RKadapt(x0,y0,xf,hi,dd)

Resultados: obtenemos la grafica de la solucin de la ecuacin diferencial


Runge-Kutta fehlberg
1.8

1.6

1.4

1.2

1
y

0.8

0.6

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
x

SOLUCION NUMERICA DE SISTEMA DE ECUACIONES DIFERENCIALES

Los mtodos numricos para EDO de primer orden se pueden extender a sistemas de
ecuaciones diferenciales ordinarias (SEDO) con condiciones iniciales.
Sea el sistema de ecuaciones diferenciales
F (t , x, y, x ' ) 0; x(t 0 ) x 0
G (t , x, y, y ' ) 0; y (t 0 ) y 0
En la notacin adecuada para usar mtodos de aproximacin
dx
f (t , x, y ); x(t 0 ) x 0
dt
(1)
dy
g (t , x, y ); y (t 0 ) y 0
dt
Nota: si en el sistema no aparece la variable t el sistema es AUTONOMO.

1. METODO DE EULER
De la ecuacin (1), el mtodo de Euler para un SEDO con condiciones de inicio

x i 1 x i hf (t i , x i , y i )
y i 1 y i hg (t i , x i , y i )
t i 1 t i h, i 0,1,2,3,.....

Ejemplo 1: Resolver el sistema


dx
30 x 28 y; x (0) 2
dt
dy
2 y; y (0) 1
dt
En forma matricial: Y = AY ; Y(0) = Y(0)
Donde
30 28 2
Y ' [ x ' y ' ]t ; A ; Y (0)
0 2 1
Solucin
Implementamos el mtodo de Euler para sistema de ecuaciones, incluimos adems el
diagrama de fases, que es una herramienta para el estudio cualitativo de sistema de
ecuaciones diferenciales

Implementacin : El programa eulersiste , utiliza la funcin rhs3


% solucion numerica del PVI para ecuaciones diferenciales ordinarias
% rhs3: m-archivo con funcion del lado derecho en el pvi
% inte: intervalo [to,tn] en el que se quiere obtener la solucion
% ci: condicion inicial y(to)
% metodo de Euler
clear all
inte=[0 4];ci=[2;1];
t=linspace(inte(1),inte(2),800);y=zeros(length(t),2);
h=(inte(2)-inte(1))/length(t);
y(1,:)=ci(:)';
for j=1:length(t)-1
y(j+1,:)=y(j,:)+h*feval('rhs3',t,y(j,:)')'; % Mtodo de Euler
end
y1=y(:,1);
y2=y(:,2);
subplot(2,1,1);
plot(t,y1,'r',t,y2,'k');grid on
xlabel('Tiempo'), ylabel('Y(1) y Y(2)')
title('Ecuacion yprime=Ay');
subplot(2,1,2);
plot(y1,y2,'r');xlabel('Y(1)');ylabel('Y(2)');grid
title('Diagrama de fase');

la funcin rhs3
function dy=rhs3(t,y)
dy=[-30*y(1)+28*y(2);0*y(1)-2*y(2)];

Ejecutamos el programa
>> eulersiste
Resultados
Ecuacion yprime=Ay
2

1.5
Y(1) y Y(2)

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5 4
Tiempo
Diagrama de fase
1
Y(2)

0.5

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Y(1)

2. METODO DE HEUN: la frmula de heun para un SEDO de primer orden con


condiciones de inicio

k1, x hf (t i , xi , y i )
k1, y hg (t i , xi , y i )
k 2, x hf (t i h, xi k1, x , y i k1, y )
k 2, y hg (t i h, xi k1, x , y i k1, y )
1
xi 1 xi ( k1, x k 2, x )
2
1
y i 1 y i ( k1, y k 2, y )
2
t i 1 t i h, i 0,1,2,3,.....
E O( h 3 ), xi z xi 1 (error de truncamiento en cada paso)

Ejemplo 2: Dado el SEDO


x' x y t ; x ( 0) 1
y ' x y t; y ( 0) 2
Obtenga dos puntos por el mtodo de Heun, para h = 0.1

Solucin
Tenemos: f(t,x,y) = t + x + y; g(t,x,y) = - t + x y; t0 = 0; x0 = 1; y0 = 2
Clculos de dos puntos de la solucin

i 0: k1, x hf (t 0 , x 0 , y 0 ) 0.1 f (0,1,2) 0.3


k1, y hg (t 0 , x 0 , y 0 ) 0.1g (0,1,2) 0.1
k 2 , x hf (t 0 h, x 0 k1, x , y 0 k1, y ) 0.1 f (0.1,1.3,1.9) 0.33
k 2 , y hg (t 0 h, x 0 k1, x , y 0 k1, y ) 0.1g (0.1,1.3,1.9) 0.07
1
x1 x 0 (k1, x k 2 , x ) 1 0.5(0.3 0.33) 1.3150
2
1
y1 y 0 (k1, y k 2, y ) 2 0.5(0.1 (0.07)) 1.9150
2
t1 t 0 h 0 0.1 0.1

i 1: k1, x hf (t1 , x1 , y1 ) 0.1 f (0.1,1.3150,1.9150) 0.3333


k1, y hg (t1 , x1 , y1 ) 0.1g (0.1,1.3150,1.9150) 0.07
k 2, x hf (t1 h, x1 k1, x , y1 k1, y ) 0.1 f (0.2,1.648,1.845) 0.3693
k 2, y hg (t1 h, x1 k1, x , y1 k1, y ) 0.1g (0.2,1.648,1.845) 0397
1
x 2 x1 ( k1, x k 2, x ) 1.6662
2
1
y 2 y1 (k1, y k 2, y ) 1.8602
2
t 2 t1 h 0.1 0.1 0.2
Para comprobar comparamos con la solucin exacta
x(0.1) =1.3160 ; y(0.1) = 1.9150
x(0.2) = 1.6684 ; y(0.2) = 1.8604

i ti+1 Yi+1 (Heun) Y(ti+1) (Exacta)


0 0.1 [1.3159 , 1.9150] [1.3160 , 1.9150 ]
1 0.2 [1.6662 , 1.8602] [1.6684, 1.8604]

IMPLEMENTACION
El script sistheun implementa el mtodo de heun para SEDO, utiliza la funcin
heun3.m
El ejemplo 2, es implementado.

function [t,x,y]= heun3(f,g,t,x,y,h)


k1x=h*f(t,x,y)
k1y=h*g(t,x,y)
k2x=h*f(t+h,x+k1x,y+k1y)
k2y=h*g(t+h,x+k1x,y+k1y)
x=x+0.5*(k1x+k2x);
y=y+0.5*(k1y+k2y);
t=t+h;

Es utilizado por el script sistheun


% Scrip para el metodo de heun , para un sistema de dos
% ecuaciones diferenciales.
f=inline('t+x+y');
g=inline('-t+x-y');
t=0;
x=1;
y=2;
h=0.1;
for i=1:20
[t,x,y]=heun3(f,g,t,x,y,h);
u(i)=t;
v(i)=x;
w(i)=y;
end

>> sistheun
>>hold on;
>> plot(u,v,'o'); % u, v , w contienen los puntos calculados
>> plot(u,w,'o');
>> [x,y]=dsolve('Dx-t-x-y=0,Dy+t-x+y=0','x(0)=1,y(0)=2','t') % solucin exacta

x = -exp(-2^(1/2)*t)*(exp(2*2^(1/2)*t)*((exp(-2^(1/2)*t)*(2^(1/2)/2 - 1/2)*(2^(1/2)*t +
1))/2 - 3/4) - 2^(1/2)*((exp(2^(1/2)*t)*(2^(1/2)/2 + 1/2)*(2^(1/2)*t - 1))/2 - 3/4) +
2^(1/2)*exp(2*2^(1/2)*t)*((exp(-2^(1/2)*t)*(2^(1/2)/2 - 1/2)*(2^(1/2)*t + 1))/2 - 3/4) +
(exp(2^(1/2)*t)*(2^(1/2)/2 + 1/2)*(2^(1/2)*t - 1))/2 - 3/4)

y =- exp(-2^(1/2)*t)*(exp(2*2^(1/2)*t)*((exp(-2^(1/2)*t)*(2^(1/2)/2 - 1/2)*(2^(1/2)*t
+ 1))/2 - 3/4) + (exp(2^(1/2)*t)*(2^(1/2)/2 + 1/2)*(2^(1/2)*t - 1))/2 - 3/4)

>> ezplot(x,[0,2]);
>> ezplot(y,[0,2]);

-exp(-21/2 t) (exp(2 21/2 t) ((exp(-21/2 t) (21/2/2 - 1/2) (21/2 t + 1))/2 - 3/4) + (exp(21/2 t) (21/2/2 + 1/2) (21/2 t - 1))/2 - 3/4)

11

10

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2


t

3. METODO DE RUNGE KUTTA DE 4to ORDEN PARA SEDO


La frmula de Runge kutta de 4to orden puede extenderse a un SEDO de primer orden
con condiciones iniciales.
Dado el sistema
dx
f (t , x, y ); x (t 0 ) x 0
dt
(1)
dy
g (t , x, y ); y (t 0 ) y 0
dt

La frmula de Runge Kutta de cuarto orden para un SEDO con valores de inicio

k1, x hf (t i , xi , y i )
k1, y hg (t i , xi , y i )
k 2, x hf (t i h / 2, xi k1, x / 2, y i k1, y / 2)
k 2, y hg (t i h / 2, xi k1, x / 2, y i k1, y / 2)
k 3, x hf (t i h / 2, xi k 2, x / 2, y i k 2, y / 2)
k 3, y hg (t i h / 2, xi k 2, x / 2, y i k 2, y / 2)
k 4, x hf (t i h, xi k 3, x , y i k 3, y )
k 4, y hg (t i h, xi k 3, x , y i k 3, y )
1
xi 1 xi (k1, x 2k 2, x 2k 3 x k 4 x )
6
1
y i 1 y i (k1, y 2k 2, y 2k 3 y k 4 y )
6
t i 1 t i h, i 0,1,2,3,.....

Ejercicio: implemente el mtodo de Runge Kutta de 4to orden, para el ejemplo2

El Modelo Depredador Presa


Sean:
x(t): la poblacin depredadora
y(t) : la poblacin de las presas
t: el tiempo
Suponer que y(t)(presa) disminuye si x(t)(depredador) aumenta. La poblacin x(t) se
incrementa cuando las presas son muy abundantes, el aumento relativo de x(t) , y(t)
dependen de la forma positiva de la poblacin actual
El modelo general puede ser escrito, como
dx
ax by; x (0) x 0
dt
dy
cx dy; y (0) y 0
dt
a,b,c,d son constantes positivas
Un caso particular es:
dx
4 x 2 y; x (0) 100
dt
; 0 t 0.5
dy
x y; y (0) 400
dt
Solucin
a) Solucin analtica
En forma matricial
X = AX
Donde

4 2 x' (t ) x(t )
A ; X ' y ' (t ) ; X y (t )
1 1
Tiene solucin
X e At K ; donde K [ x 0 y 0 ]t [100 400]t
Los autovalores: A I 0 1 2; 2 3
Los autovectores: A i I vi 0; para i 1,2
para 1 2; A 2 I v1 0 tenemos v1 [- 1 1] t
para 2 3; A 3I v 2 0 tenemos v 2 [- 2 1] t
La matriz J(autovalores), y la matriz C(con columnas v1 y v2) son
2 0 e 2t 0 - 1 - 2 1 2
J ; e Jt ; C ; C 1
0 3 0
3t
e 1 1 1 1

At
La matriz e (fundamental)
e 2t 2e 3t 2e 2t 2e 3t
e At Ce Jt C 1
e e 2e 2t e 3t
2t 3t

Solucin analtica
x(t ) At 100 900e 2t 1000e 3t
y ( y ) e At
K e . 400 3t
900e 500e
2t

IMPLEMENTACION COMPUTACIONAL
El modelo depredador-presa, puede ser resuelto en MATLAB, por el mtodo de la
matriz exponencial.

1. Usando el mtodo de la matriz exponencial


% EL script progmatricial usa mtodo de la matriz exponencial para
% resolver el modelo depredador presa lineal
%
a=[4 2;-1 1];
c=[100 400];
t0=0;
tf=0.5;
h=0.025;
m=(tf-t0)/h;
g=c;
tab=[t0,c];
for i=1:m
t0=t0+h;
w=(expm(a*(t0))*c')';
g=[g;w];
tab2=[t0,w];
tab=[tab;tab2];
end
u=0:h:tf;
plot(u',g)
tab

En la ventana de
>> progmatricial
tab =
1.0e+003 *
0 0.1000 0.4000
0.0000 0.1317 0.4072
0.0001 0.1672 0.4137
0.0001 0.2067 0.4195
0.0001 0.2506 0.4243
0.0001 0.2994 0.4281
0.0001 0.3534 0.4307
0.0002 0.4133 0.4319
0.0002 0.4795 0.4316
0.0002 0.5526 0.4295
0.0002 0.6332 0.4253
0.0003 0.7220 0.4190
0.0003 0.8197 0.4101
0.0003 0.9272 0.3984
0.0004 1.0453 0.3836
0.0004 1.1749 0.3652
0.0004 1.3171 0.3429
0.0004 1.4730 0.3163
0.0005 1.6438 0.2849
0.0005 1.8307 0.2482
0.0005 2.0352 0.2056
Graficando
modelo depredaor presa
2500

2000

1500

1000

500

0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5

2. Usando el mtodo de Runge Kutta de 4to orden, para sistema de ecuaciones


% archivo de RK4siste(runge kutta de 4to orden), en forma de scrip
para
% un sistema de ecuaciones diferenciales lineales
h=0.025;
% se crea la funcion dentro del programa, sin necesidad de
% definirla mediante un archivo
xx=inline('4*x+2*y','t','x','y');
yy=inline('-x+y','t','x','y');
t0=0;
tf=0.5;
x=100;
y=400;
t=t0;
g=[t,x,y];
tab1=[t,x,y];
while (t<tf)
t=t+h;
u1=h*eval('xx(t,x,y)');
v1=h*eval('yy(t,x,y)');
u2=h*eval('xx(t+h/2,x+u1/2,y+v1/2)');
v2=h*eval('yy(t+h/2,x+u1/2,y+v1/2)');
u3=h*eval('xx(t+h/2,x+u2/2,y+v2/2)');
v3=h*eval('yy(t+h/2,x+u2/2,y+v2/2)');
u4=h*eval('xx(t+h,x+u3,y+v3)');
v4=h*eval('yy(t+h,x+u3,y+v3)');
x=x+(1/6)*(u1+2*u2+2*u3+u4);
y=y+(1/6)*(v1+2*v2+2*v3+v4);
p=[t,x,y];
g=[g;p];
tab2=[t,x,y];
tab1=[tab1;tab2];
end
tab1
% para graficar la solucion
u=0:h:tf;
plot(u',g)
Resultados
>> RK4siste
tab1 =
1.0e+003 *
0 0.1000 0.4000
0.0000 0.1317 0.4072
0.0001 0.1672 0.4137
0.0001 0.2067 0.4195
0.0001 0.2506 0.4243
0.0001 0.2994 0.4281
0.0001 0.3534 0.4307
0.0002 0.4133 0.4319
0.0002 0.4795 0.4316
0.0002 0.5526 0.4295
0.0002 0.6332 0.4253
0.0003 0.7220 0.4190
0.0003 0.8197 0.4101
0.0003 0.9272 0.3984
0.0004 1.0453 0.3836
0.0004 1.1749 0.3652
0.0004 1.3171 0.3429
0.0004 1.4730 0.3163
0.0005 1.6438 0.2849
0.0005 1.8307 0.2482
0.0005 2.0352 0.2056
2500

2000

1500

1000

500

0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5

FUNCIONES EN MATLAB PARA RESOLVER PVIs


MATLAB dispone de funciones especiales que permiten resolver PVIs, algunas con
cierta ventaja respecto a otras.
y ' f (t , y )
y (t 0 ) y 0
Si la funcin f(t,y) cumple ciertas condiciones, el PVI anterior tiene una nica solucin.
Generalmente la solucin no tiene una expresin analtica.
La siguiente tabla muestra las distintas funciones que resuelven PVIs, el tipo de
problema y al mtodo que corresponde.

Funcin Tipo de problema Mtodo Ventajas/Desventajas


ode45 EDOs no rgidas Runge Kutta, Responde bien en la
mtodo de un paso mayora de problemas
ode23 EDOs levemente rgidas Runge Kutta, Ms eficiente que
mtodo de un paso ode45
ode113 EDOs no rgidas A-B-M , mtodo Ms eficiente que
multipasos ode45, cuando la ODE
es difcil de evaluar
ode15s EDOs rgidas FDNs, mtodo Responde bien en la
multipasos mayora de problemas
ode23s EDOs rgidas Rosembrock, Ms eficiente que
mtodo de un paso ode15s. para
tolerancias primitivas
ode23t EDOs moderadamente rgidas FDNs, regla del Sin amortiguamiento
trapecio numrico
ode23tb EDOs rgidas Runge Kutta , Ms eficiente que
regla del trapecio ode23t, cuando la
ODE es difcil de
evaluar

Sintaxis de las funciones en MATLAB para resolver PVIs.


Para resolver un PVI, en general es de la forma:

[t,y] = funcion (EDOfun, intervalo,y0 , opciones)

Donde la palabra funcin es alguna de las funciones (ode45, ode23, ode113, etc.)
Las especificaciones de los parmetros de entrada son.

Parmetro Especificacin
EDOfun Representa la funcin en el lado derecho de la EDO, dy/dt =
EDOfun(t,y) , donde t escalar, y y dy/dt son vectores columnas,
EDOfun se debe especificar en un M-file.
intervalo Es un vector que representa el intervalo de integracin. Se debe dar la
condicin inicial en intervalo(1) y se resuelve desde intervalo(1) a
intervalo(2)
y0 Vector de valores inciales para el PVI
opciones Es una estructura con parmetros adicionales que cambia las propiedades
predeterminadas de la funcin, se usa para problemas especficos

Las especificaciones de los parmetros de salida son

Parmetro Especificacin
t Representa el vector tiempo
y Representa una matriz solucin, donde cada fila de y es la solucin de
la correspondiente fila del vector t

Ejemplo 1: el modelo depredador presa lineal


dx
4 x 2 y; x(0) 100
dt
dy
x y; y (0) 400
dt

Usando el comando ode45


% solucion delmodelodepredador presa usando
% el comando ode45
function dy=dp1(t,y)
dy=[4*y(1)+2*y(2); -y(1)+y(2)];

En la ventana de comandos
Especificamos el rango de integracin y condiciones iniciales
>> tspan=[0,0.5]';
>> y0=[100,400]';
La solucin
>> [t,y]=ode45('dp1',tspan,y0);
Graficamos x, y con respecto al tiempo t
>> plot(t,y)
>> grid on
2500
y1
y2

2000

1500

1000

500

0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5

Graficamos el Diagrama de Fases x(t) vs y(t)


plot(y(:,1),y(:,2))
>> grid on
>> xlabel('x(t)'),ylabel('y(t)')

450

400

350
y(t)

300

250

200
0 500 1000 1500 2000 2500
x(t)

Ejemplo 2: Depredador presa para el caso no lineal


dx
1.2 x 0.6 xy; x (0) 2
dt
dy
0.8 y 0.3 xy; y (0) 1
dt
En este caso usamos el comando ode23 de Matlab
% solucion del modelo depredador presa usando
% el comando ode23
function dy=dp1(t,y)
dy=[1.2*y(1)-0.6*y(1)*y(2); -0.8*y(2)+0.3*y(1)*y(2)];
tspan=[0,20]';
>> y0=[2,1]';
>> [t,y]=ode23('dp1',tspan,y0);
>> plot(t,y)
>> grid on
Graficando: curvas respeto al tiempo t
5.5

4.5

3.5

2.5

1.5

0.5
0 2 4 6 8 10 12 14 16 18 20

Graficando el diagrama de fases


>> plot(y(:,1),y(:,2))
>> grid on
>> xlabel('x(t)'),ylabel('y(t)')
>> title('depredador presa')
depredador presa
4

3.5

2.5
y(t)

1.5

0.5
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
x(t)

Ejempl 3: (Especies en competencia) sean y1(t) , y2(t) las cantidades de animales en


el tiempo t de especies que compiten por el mismo alimento. Se supone que la natalidad
de cada especie es proporcional al nmero de animales de esa especie pero la
mortalidad de cada especie depende de la poblacin de ambas especies. Un sistema es el
siguiente
y '1 y1 (t )(4 0.0003 y 2 (t ) 0.0004 y1 (t ))
y ' 2 y 2 (t )(2 0.0002 y1 (t ) 0.0001 y 2 (t ))
Si se sabe que la poblacin inicial de cada especie es de 10000, cul ser la solucin de
este sistema para t en [0,4]
Solucin
Para este problema no homogneo, usamos la herramienta profesional de MATLAB,
llamada ODE45

% solucion numerica de PVI para ecuaciones diferenciales ordinarias


%para resolver el problema de especiesen competencia
% rhs2: m-archivo con funcion del lado derecho en el pvi
% inte: intervalo [to,tn] en el que se quiere obtener la solucion
% ci: condicion inicial y(to)
% usa ode45
inte=[0 4];ci=[10000,10000];
[t,y]=ode45('rhs2',inte,ci);
y1=y(:,1);
y2=y(:,2);
subplot(2,1,1);
plot(t,y1,'k-',t,y2,'k');grid on
xlabel('Tiempo, segundos');ylabel('Y(1 )y Y(2)');
title('Ecuacion de especies en competencia');
subplot(2,1,2);
plot(y1,y2,'k');xlabel('Y(1)');ylabel('Y(2)');grid on
title('Diagrama de fase,especies en competencia')

la funcin rhs2
function dy=rhs2(t,y)
dy=[y(1)*(4-0.0003*y(1)-0.0004*y(2));y(2)*(2-0.0002*y(1)-
0.0001*y(2))];

Resultados grficos
4
x 10 Ecuacion de especies en competencia
2

1.5
Y(1 )y Y(2)

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5 4
Tiempo, segundos
4
x 10 Diagrama de fase,especies en competencia
2

1.5
Y(2)

0.5
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Y(1)

SOLUCION DE EDO DE MAYOR ORDEN CON CONDICIONES INICIALES


Son aquellas que involucran derivadas de orden superior x(t), x(t), x(iv) , ..
Este tipo de ecuaciones aparecen en modelos matemticos que involucran problemas de
la fsica e ingeniera
Por ejemplo el sistema amortiguado
mx(t) + cx(t) + k x(t) = g(t) (1)
Donde: k constante de recuperacin, m masa, g(t) es una fuerza externa
se supone que la amortiguacin debida al rozamiento es proporcional a la velocidad. Por
otro lado se conoce la posicin x(t0) y la velocidad x(t0) en cierto t0.
La ecuacin anterior se puede escribir como un sistema de ecuaciones, haciendo
x(t) = y(t) , entonces x(t) = y(t)

y la ecuacin (1) se convierte en


dx
y
dt x (t 0 ) x0
con
dy 1 y (t 0 ) y 0
[ g (t ) cy (t ) kx(t )]
dt m
El cual puede resolverse por las formulas dadas en 2.7.1 o 2.7.2.

Analizamos el caso de una EDO de segundo orden con condiciones de inicio, en la que
y(x) y y(x) aparecen en forma explicita
G( x, y ,y , y) = 0: y(x0) = y0 , y(x0) = y0
Mediante la sustitucin: z = y
Se tiene
G( x, y ,z , z) = 0
Se puede escribir como in sistema de dos ecuaciones diferenciales de primer orden
Siguiendo la notacin anterior

y = f(x,y,z) = z
z = g(x,y,z) expresin que se obtiene al despejar z de G
Con las condiciones iniciales
y(x0) = y0 , z(x0) = y0 = z0

Es un sistema de dos ecuaciones diferenciales de primer orden con condiciones de inicio

Ejemplo 2: Calcule un punto de la solucin usando la frmula de Runge Kutta


de cuarto orden para h = 0.1
y y x + y + 1 = 0 ; y(0) = 1, y(0) = 2
Solucin

Mediante la sustitucin z = y se obtiene


z z x y + 1 = 0
Constituye un sistema de dos ecuaciones diferenciales de primer orden que se puede
escribir
y = f(x,y,z) = z; y(0) = 1
z = g(x,y,z) = x y + z -1 ; z(0) = 2
Calculo de os puntos de solucin
i 0, x 0 0, y 0 1, z0 2
k1, y hf ( x 0 , y 0 , z 0 ) 0.1 f (0,1,2) 0.2
k1, z hg ( x 0 , y 0 , z 0 ) 0.1g (0,1,2) 0
k 2 , y hf ( x 0 h / 2, y 0 k1, y / 2, z 0 k1, z / 2) 0.1 f (0.05,1.1,2) 0.2
k 2 , z hg ( x 0 h / 2, y 0 k1, y / 2, z 0 k1, z / 2) 0.1g (0.05,1.2,2) 0.005
k 3, y hf ( x 0 h / 2, y 0 k 2 , y / 2, z 0 k 2, z / 2) 0.1 f (0.05,1.1,1.9975) 0.1998
k 3, z hg ( x 0 h / 2, y 0 k 2 , y / 2, z 0 k 2, z / 2) 0.1g (0.05,1.1,1.9975) 0.0052
k 4 , y hf ( x 0 h, y 0 k 3, y , z 0 k 3, z ) 0.1 f (0.1,1.1998,1.9948) 0.1995
k 4 , z hg ( x 0 h, y 0 k 3, y , z 0 k 3, z ) 0.1g (0.1,1.1998,1.9948) 0.0105
1 1
y1 y 0 ( k1, y 2k 2, y 2k 3, y k 4 , y ) 1 (0.2 2(0.2) 2(0.1998) 0.1995) 1.1998
6 6
1 1
z1 z 0 ( k1, z 2k 2 , z 2k 3, z k 4 , z ) 2 (0 2( 0.005) 2( 0.0052) 0.0105) 1.9948
6 6
x1 x 0 h 0.1
Resolviendo con MATLAB
>> s=dsolve(D2y-Dy-x+y+1=0,y(0)=1,Dy(0)=2)

Ejemplo 2:
Consideremos el problema de valor inicial de segundo orden
x(t) + 4x(t) + 5x(t) = 0; x(0) = 3 , x(0) = -5
a) encuentre la solucin exacta de la ecuacin de segundo orden
b) transforme la ecuacin de segundo orden en un sistema de primer orden equivalente
c) use la formula (7) y (8) para hallar una solucin aproximada en [0,5], N = 50 y h =
0.1
Solucin
a) una solucin analtica, por el mtodo tradicional es
x (t ) 3e 2t cos(t ) e 2t sen(t )
b) sustituyendo x' (t ) y (t ) x ' ' (t ) y ' (t )
Tenemos
dx
y
dt x (0) 3
Con
dy y (0) 5
5 x 4 y
dt
Aplicando el RK4 (Runge Kutta de cuarto orden) para h= 0.1, N = 50 en [0,5]
Se muestran algunos de los resultados en la tabla No1

k tk xk xk(t)
0 0.0 3.000000 3.000000
1 0.1 2.525645 2.525658
2 0.2 2.104027 2.104046
3 0.3 1.735062 1.735084
4 0.4 1.416533 1.416555
Tabla No1: 5 0.5 1.144885 1.144904 resultados de
aplicar RK4, son 10 1.0 0.333243 0.333246 comparados
xk(aprox.) y xk(t) 20 2.0 -0.006206 -0.006211 (exacta)
30 3.0 -0.007010 -0.007012
Los valores de la 48 4.8 -0.000049 -0.000049 columna tres,
denotan los 49 4.9 -0.000023 -0.000023 valores
50 5.0 -0.00000493 -0.00000490
aproximados y en la cuarta columna los valores exactos, los valores de y k no se
muestran ya que no son transcendentes por que?
IMPLEMENTACION
Podemos implementar el mtodo de RK4, para este ejercicio, usando el archivo
RK4siste.m
% archivo de RK4(runge kutta de 4to orden), para
% sistema de ecuaciones diferenciales lineales
h=0.1
% se crea la funcin dentro del programa, sin necesidad de
% definirla mediante un archivo
xx=inline('y','t','x','y');
yy=inline('-5*x-4*y','t','x','y');
t0=0;
tf=5;
x=3;
y=-5;

t=t0;
g=[t,x,y];
tab1=[t,x,y];
while (t<tf)
t=t+h;
u1=h*eval('xx(t,x,y)');
v1=h*eval('yy(t,x,y)');
u2=h*eval('xx(t+h/2,x+u1/2,y+v1/2)');
v2=h*eval('yy(t+h/2,x+u1/2,y+v1/2)');
u3=h*eval('xx(t+h/2,x+u2/2,y+v2/2)');
v3=h*eval('yy(t+h/2,x+u2/2,y+v2/2)');
u4=h*eval('xx(t+h,x+u3,y+v3)');
v4=h*eval('yy(t+h,x+u3,y+v3)');
x=x+(1/6)*(u1+2*u2+2*u3+u4);
y=y+(1/6)*(v1+2*v2+2*v3+v4);
p=[t,x,y];
g=[g;p];
tab2=[t,x,y];
tab1=[tab1;tab2];
end
% tab1
% para graficar la solucin
u=0:h:tf;
plot(u,'g')
En la ventana de comandos
>> RK4siste
Resultados
tab1 =
0 3.0000 -5.0000
0.1000 2.5256 -4.4819
0.2000 2.1040 -3.9506
0.3000 1.7351 -3.4324
0.4000 1.4165 -2.9441
0.5000 1.1449 -2.4960
0.6000 0.9158 -2.0932
0.7000 0.7247 -1.7373
0.8000 0.5668 -1.4274
0.9000 0.4377 -1.1611
1.0000 0.3332 -0.9350
1.1000 0.2495 -0.7450
1.2000 0.1832 -0.5871
1.3000 0.1312 -0.4572
1.4000 0.0909 -0.3513
1.5000 0.0602 -0.2659
1.6000 0.0372 -0.1978
1.7000 0.0202 -0.1440
1.8000 0.0080 -0.1020
1.9000 -0.0005 -0.0697
2.0000 -0.0062 -0.0452
2.1000 -0.0098 -0.0269
2.2000 -0.0117 -0.0135
2.3000 -0.0126 -0.0040
2.4000 -0.0126 0.0025
2.5000 -0.0122 0.0068
2.6000 -0.0113 0.0094
2.7000 -0.0103 0.0108
2.8000 -0.0092 0.0112
2.9000 -0.0081 0.0111
3.0000 -0.0070 0.0105
3.1000 -0.0060 0.0097
3.2000 -0.0051 0.0088
3.3000 -0.0042 0.0078
3.4000 -0.0035 0.0068
3.5000 -0.0029 0.0059
3.6000 -0.0023 0.0050
3.7000 -0.0019 0.0042
3.8000 -0.0015 0.0035
3.9000 -0.0012 0.0029
4.0000 -0.0009 0.0024
4.1000 -0.0007 0.0019
4.2000 -0.0005 0.0015
4.3000 -0.0004 0.0012
4.4000 -0.0003 0.0009
4.5000 -0.0002 0.0007
4.6000 -0.0001 0.0006
4.7000 -0.0001 0.0004
4.8000 -0.0000 0.0003
4.9000 -0.0000 0.0002
5.0000 -0.0000 0.0002
5.1000 0.0000 0.0001
Grfica:
5

4.5

3.5

2.5

1.5

0.5

0
0 10 20 30 40 50 60

Observamos que los resultados de la columna 2, coinciden con los resultados de la


columna 3 de la tabla No1.

Ejemplo 1: consideremos la EDO de segundo orden (no rgido)


y ' ' - (1 - y 2 )y' y 0
Donde > 0 , haciendo la sustitucin y1 = y, y2 = y1, obtenemos el sistema

y1' y 2
y 2' (1 y12 ) y 2 y1
El sistema anterior genera el PVI
y1' y 2 ; y1 (0) 2
y 2' (1 y12 ) y 2 y1 ; y 2 (0) 0 para t [0,20]

Procedimiento para usar la funcin ode45 en Matlab


a) Necesitamos definir la funcin EDOfun, que dependa de t, y. Creamos un M-file

function z=funejerc1(t,y)
z=[y(2);(1-y(1).^2).*y(2)-y(1)];
Notar que la variable t no aparece en la definicin de la funcin funejerc1 y = 1, la
variable funejerc1 es un vector columna
b) para las opciones tenemos la instruccin
Opciones = odeset (RelTol,1e-6)
c) por la condicin del PVI, el intervalo es [0,20] y el vector columna de valores
inciales ser [2;0], as tenemos

[t,y]=ode45('funejerc1',[0,20],[2;0],opciones);
Tambin se puede escribir
[t,y]=ode45('funejerc1',[0,20],[2,0],opciones) o [t,y]=ode45('funejerc1',[0,20],[2;0]);

d) para visualizar el resultado mediante una grafica, lo hacemos con


plot(t,y(:,1),'r*',t,y(:,2),'--')
title('Solucion de la EDO,mu=1');
xlabel('tiempo t');
ylabel('solucion y');
legend('y1','y2')

e) resultados
Solucion de la EDO,mu=1
3
y1
y2
2

1
solucion y

-1

-2

-3
0 2 4 6 8 10 12 14 16 18 20
tiempo t

Figura 1: grafica de las soluciones del PVI, con ode45, para = 1

Ejemplo 2: consideremos el mismo problema para grande, en este caso el PVI se


convierte en rgido. Considere ahora

y1' y 2 ; y1 (0) 2
y (1 y ) y 2 y1 ; y 2 (0) 0 para t [0,3000]
'
2
2
1

Solucin
Seguimos las mismas instrucciones anteriores, con las modificaciones:
El M-file ser funejerc2, el intervalo ahora es [0,3000] (por razones de escala), = 1000
Y usamos ode15s

function z=funejerc2(t,y)
z=[y(2);1000*(1-y(1).^2).*y(2)-y(1)];

En la ventana de comandos
opciones=odeset('RelTol',1e-6);
[t,y]=ode15s('funejerc2',[0,3000],[2;0],opciones);
plot(t,y(:,1),'r--')
title('Solucion de la EDO,mu=1000');
xlabel('tiempo t');
ylabel('solucion y');
legend('y1')

Resultados
Solucion de la EDO,mu=1000
2.5
y1
2

1.5

0.5
solucion y

-0.5

-1

-1.5

-2

-2.5
0 500 1000 1500 2000 2500 3000
tiempo t

Figura 2: grafica de una solucin del PVI rgido, con ode15s, para = 1000

EJERCICIOS

1.- grafique el campo de direcciones para la ecuacin diferencial y luego grafique tres
curvas solucin
a) y = 1 + y ; b) y = x2 y2
2.- grafique el campo de direcciones de la EDO, despus utilcelo para graficar una
curva solucin que pase por el punto indicado
a) y = y 2x ; (1,0)
b) y = y + xy ; (0,1)
c) y = 1- xy ; (0,0)
d) y = x xy ; (1,0)
3.- Resuelva las siguientes EDO usando el mtodo de Euler, heun y RK4
i) Tome h = 0.1 y de 20 pasos. Luego tome h = 0.05 y de 40 pasos
ii) Compare la solucin exacta y (2) con las aproximaciones obtenidas en la parte (a)
iii) dibuje las aproximaciones y la solucin exacta en una misma grafica
a) y = t2 y ; y(0) = 1 ; y(t) = - e-t + t2 - 2t + 2
4 3t 1
b) y = 3y + 3t ; y(0) = 1 , y (t ) e t
3 3
2/2
c) y = -ty ; y(0) = 1 , y (t ) e t
1 2t
d) y = e-2t -2y ; y(0) = 1/10 ; y (t ) e te 2 t
10
1
e) y = 2ty2 ; y(0) = 1 ; y (t )
(1 t 2 )

4.- Modelo de una Epidemia: Vamos a describir a continuacin un modelo matemtico


para la extensin de una epidemia. Supongamos que tenemos una comunidad de L
personas que contiene inicialmente P personas contagiadas y Q sin contagiar. Sea y (t)
el nmero de personas contagiadas en un instante t. Si la enfermedad no es muy grave,
como el resfriado comn, todo el mundo continua activo y la epidemia se extiende.
Puesto que hay PQ posibles contactos entre personas de uno y otro grupo, la velocidad
de cambio de y(t) es proporcional a PQ, as que el problema puede modelarse mediante
el problema de valor inicial.
y = ky(L - y) ; y(0) = y0
(a) Tomando L = 25000 , k = 0.00003 y h = 0.2 , con la condicin inicial
y(0) = 50 ,use el programa indicado en la parte I, para calcular la aproximacin de
Euler en el intervalo [0,60]
(b) Dibuje la grfica de la solucin aproximada de la parte (a)
(c) Estime el nmero medio de personas contagiadas calculando la media aritmtica
de las ordenadas obtenidas en la parte (a) con el mtodo de Euler
5.- Un paracaidista salta desde un avin hasta el momento en que abre el paracadas. La
resistencia del aire es proporcional a v3/2 (v representa la velocidad). Suponga que el
intervalo temporal es [0,6] y que la ecuacin diferencial para la velocidad de descenso
es: v = 10 0.01v3/2 ; en [0,6] con v(0) = 0.
Use el mtodo de Euler con h = 0.05, para estimar v (6).

También podría gustarte