Sunteți pe pagina 1din 112

SOLUCIN NUMRICA DE

ECUACIONES DIFERENCIALES

CAPITULO VI

Introduccin.

En la practica de la Ingeniera y Ciencias, es frecuente


que los fenmenos estudiados se representen como
ecuaciones que impliquen el cambio de una variable
respecto a otra, es decir, mediante derivadas. Las
ecuaciones son diferenciales. Por lo regular las
derivadas son respecto al tiempo o al espacio.

QU ES UNA ECUACIN DIFERENCIAL?

Es una ecuacin de la forma:

dy d 2 y
dny
F ( x, , 2 ,..., n ) 0
dx dx
dx

Es decir una ecuacin en las cual existen relaciones de


una funcin con sus derivadas.

CLASIFICACIN LAS ECUACIONES


DIFERENCIALES
La primera gran clasificacin es si la ecuacin
contiene derivadas ordinarias o derivadas
parciales:
du dv

x, Ecuacion diferencial ordinaria (EDO)


dx dx
2 u 2 u u
2
, Ecuacion diferencia parcial (EDP)
2
t
u
t
EDO la ecuacin donde aparecen derivadas respecto a una
sola variable.
EDP la ecuacin donde aparecen derivadas respecto a mas
de una variable.

OTROS ELEMENTOS DE CLASIFICACIN DE


ECUACIONES DIFERENCIALES

El orden de una ecuacin diferencial: es igual al de la


derivada de ms alto orden que aparece en ella.

El grado de una ecuacin diferencial es el exponente de


la potencia ms alta a la que aparece elevada alguna de
las variables de la ecuacin.

CMO SE SOLUCIONA UNA ECUACIN


DIFERENCIAL?
Solucin analtica: expresa la solucin general en
funciones elementales (polinomios, exponenciales, etc.).
No se abordar
Solucin
numrica:
obtiene
las
soluciones
particulares de una ecuacin diferencial. Pare ello se
formula de tal forma que su solucin sea posible usando
operaciones aritmticas. Se abordar en esta
presentacin.

Ley Fsica

EDO

Solucin

dv
c
g v
dt
m
Analtica

gm
c m t
v
1 e
c

Numrica

vi 1 vi g vi t
m

Teniendo gran variedad de problemas


de este tipo existen diferentes
mtodos de su solucin.
Estos se clasifican en:
1.

Mtodos de un paso o iniciadores:


Taylor.
2. Runge Kutta.
1.

Mtodos
3. Mtodos
4. Mtodos
5. Mtodos
2.

mltipaso o de continuacin.
predictor corrector.
explcitos.
implcitos.

Solucin
numrica

Aproximacin
por funciones
Polinomios ortogonales
Series de Fourier
Funciones ortogonales

Mtodo de
diferencias
(step by step)
Metodo de Euler
Metodo de Runge-Kuta
...
...

CMO SE SOLUCIONA UNA ECUACIN


DIFERENCIAL?
Para hallar la solucin particular de una ecuacin de
grado
n
se
requieren
n
condiciones
independientes; la forma como un problema entrega
estas condiciones da origen a dos tipos de
problemas:
Los de valores iniciales
Los de valores de frontera.

Problema clsico o fundamental (problema de valor


inicial)

dy
y ' f ( x, y )
dx
y ( x0 ) y0
y ( x' ) ?

Dada una ecuacin diferencial ordinaria de orden n y


cualquier grado, cuya forma general es:

f ( x, y, y ' , y ' ' , , y ( n ) ) 0

Se establece en matemticas que en su solucin


general deben aparecer n constantes arbitrarias.
Entonces G(X, Y, G1, G2, ... , Gn) = 0

Grficamente esta ecuacin representa una familia de


curvas planas, cada una de ellas obtenidas para
valores particulares de las n constantes, G1, G2, ... , Gn,
como se ve en la grfica:

Un problema de valores iniciales est dada


por:

una ecuacin diferencial de orden n


un conjunto de n condiciones independientes,
vlidas para el mismo punto inicial.

Si la ecuacin diferencial define el problema


X = a es el punto inicial
Entonces las n condiciones independientes
son:

Para los problemas de valores en la frontera deben


establecerse condiciones de frontera en todos y
cada uno de los puntos que constituyen la frontera
del dominio de soluciones del problema.

La solucin numrica de ED consiste en


sustituir el dominio continuo de soluciones por
uno discreto formado por puntos aislados
igualmente espaciados entre s.

PROBLEMAS DE VALORES
INICIALES
Dada una EDO de orden n un
problema con condiciones iniciales es:
dy d 2 y
dny
F ( x, , 2 ,..., n ) 0
dx dx
dx
y ( x a ) c1
dy ( x a )
c2
dx
.
.
dy n 1 ( x a)
cn
dx

PROBLEMAS DE VALORES DE
FRONTERA
El orden mnimo de la ecuacin
diferencial para un problema de
valores de frontera es dos:
dy d 2 y
F ( x , y , , 2 ) 0
dx dx
y ( x a) c1
y ( x b) c 2

PROBLEMAS DE VALORES INICIALES


Y DE VALORES DE FRONTERA
En problemas de valores iniciales entregan
condiciones en el extremo inicial del
intervalo de solucin. Los problemas de
valores de frontera establecen condiciones
en todos y cada uno de los puntos que
constituyen la frontera del dominio de
solucin.
Ejemplo en una dimensin, si el dominio
de solucin es a<x<b, hay dos puntos
frontera, x=a y x=b; las condiciones son
f(x=a)=C1 y f(x-b)=C2.

Problemas de Valor Inicial .vs.


Problemas de frontera
Valor inicial

y= y
Solucin
y(t) = c exp(t)

Como verificar la
solucin ?

Valor de frontera

y = z
z = -y
Solucin
y(t) = A sin(t+a)
z(t) = A cos(t+a)

y(0)=0
y()=0 muchas soluciones

Problemas Estables vs.


Inestables
ECUACION DIFERENCIAL
Inestable
a<0

y = a y
y(t) = c exp(at)

y = -y
Solucin
y(t) = c exp(-t)

Estable
a>0
y = y
Solucin
y(t) = c exp(t)

PROBLEMAS DE VALOR
INICIAL
Los mtodos numricos que estudiaremos se podrn aplicar a
una ecuacin o a sistemas de ecuaciones diferenciales:

C.I.

d
y (t ) f (t , y )
dt
y (t0 ) y0

Tiempo

t [t0 , t f ]

EDO

PROBLEMAS DE n-simo
ORDEN
Se podrn aplicar a problemas de n-simo orden con condicin
inicial, de la forma:

Para lo que se debe transformar el P.V.I. dado, en un sistema


equivalente, introduciendo las variables:

y1 =
y2 =
y3 =
...
yn =

y
y
y
y

(n-1)

= dn-1/ dt

n-1

PROBLEMAS DE n-simo
ORDEN
Derivando miembro a miembro cada una de
estas ltimas ecuaciones con respecto a t, se
obtiene el sistema equivalente:
y1
y2
y3
...
y n

= y = y2
= y = y3
= y = y4
= f(t,y1,y2,y3,....,yn)

Condicin inicial
y1(t0)=y1,0 , y2(t0)=y2,0 , ..., yn(t0)=yn,0

EJEMPLO: EDO de orden 2


EDO
C.I.
Tiempo

d2
(t ) sin( ) 0
2
dt
d
(t0 ) 1; (t0 ) 1
dt
t [0,10]

y1 =
y2 =
y1 = y2
y2 = = -sin()
Condiciones iniciales: y1(0) = 1, y2(0) = 1

MTODOS DE EULER

Dado el problema de valores iniciales

dy
y ' f ( x, y ), y ( x0 ) y0
dx
se debe integrar la ecuacin diferencial en el intervalo

de donde se obtiene la siguiente expresin aproximada


llamada frmula de Euler o de punto pendiente

yi 1 yi f ( xi , yi )h
yi hy 'i

Mtodo
yEuler

de
yi+1 = yi + f(xi, yi)h

Predicho
Error
Verdadero

y = pendiente = f(xi,yi)

t
xi

Tamao de paso, h

xi+1

EJEMPLO
Con el mtodo de Euler integre numricamente
la ecuacin

Aplicando el mtodo obtenemos:

En la tabla aparecen tabulados los valores de la


solucin aproximada obtenidos a partir de la
condicin inicial conocida Y0(0) = 1

Yi

Yi solucin exacta

0.0

1.000 000

1.000 000

0.1

1.050 000

1.055 409

0.2

1.110 638

1.123 596

0.3

1.184 649

1.208 459

0.4

1.275 870

1.315 789

0.5

1.389 819

1.454 545

Programa mtodo de
Euler
function [t,y] = euler_1(fun,ti,tmax,h,ci)
% METODO DE EULER
% fun: funcin programada
% ti : tiempo inicial
% tmax : tiempo final
% h : intervalo de tiempo
% ci : condiciones iniciales
for n=1:length(ci)
Y(n,1) = ci(n);%condicion inicial
end
T(1) = ti; %tiempo inicial
fin=(tmax-ti)/h;
for n=1:fin
Y(:,n+1)=Y(:,n)+h*feval(fun,T(n),Y(:,n));
T(n+1)=T(n)+h;
end
t=T'; y=Y';
plot(t,y)

Programa mtodo de Euler


% METODO DE EULER
% fun: funcin programada
ti=0;
% Tiempo inicial
tmax=3; % Tiempo final
ci=1;
% Condicin inicial
h=0.01; % Intervalo de tiempo
[t,y] = euler_1('myf',ti,tmax,h,ci)
% Solucin exacta
ye = exp(-t).*cos(5*t);
hold on
plot(t,ye,'r*') % grafico de la solucin

EJEMPLO:EDO de orden 1

C.I.

d
y (t ) y (t ) 5e t sin(5t )
dt
y (0) 1

Tiempo

t [0,3]

EDO

% Matlab asume funcin derivada con respecto a la 1a variable


function yprime = myf(t,y)
yprime = -y -5*exp(-t)*sin(5*t);

en donde f(Xn+1, Yn+1) es el valor de la funcin f(X, Y) para:

X = Xn+1

Y = Yn + h f(Xn, Yn)

Como resultado se obtiene el mtodo


mejorado de Euler (o mtodo Heun) con error
del orden de h3 definido por la expresin

en donde f(Xn+1, Yn+1) es el valor de la funcin f(X, Y)


para:
X = Xn+1
Y = Yn + h f(Xn, Yn)

Frmula de predictorcorrector o Mtodo de Heun

Es mejorada porque se puede demostrar que el error total de la


frmula es O(h2), mientras que en Euler es O(h). O sea, la
frmula de Euler-mejorada o Heun es de orden dos.
En la frmula de Euler mejorada se obtiene una mayor exactitud
pero un trabajo de clculo mayor, ya que para ir de tk a tk+1 hay
que evaluar dos veces la funcin f(t,y).

34

yi' 1 f ti 1 , yi01
yi =f(ti, yi)

ti+1

ti

y'

f ti , yi f ti 1 , y 0i 1

t
Predictor

ti

ti+1

Corrector35

Los mtodos de Euler y Heun tienen los siguientes


puntos en comn:
1.

2.

Son mtodos de un paso; para determinar Yn+1 se necesita


conocer nicamente los valores de Xn y Yn del punto
anterior.
No requieren evaluar ninguna derivada, sino nicamente
valores de la funcin f(X, Y).

Estas caractersticas dan origen a una gran variedad


de mtodos conocidos como de Runge-Kutta. La
diferencia entre ellos cosiste en la forma como se
define la funcin (X,Y)

La ventaja de los mtodos de Runge-Kutta es que los


dichos mtodos requieren slo de la funcin f(X, Y) y
no se necesita la evaluacin de derivadas. Esto hace
que, en la prctica, la aplicacin de los mtodos de
Runge-Kutta sean ms simples que el uso de la serie
de Taylor.

Mtodos de Runge-Kutta (RK)


El mtodo de RK se fundamenta en el mtodo de la serie de
Taylor. Existen mtodos de RK de diferentes ordenes, el orden
del mtodo lo define el orden de la derivada en el trmino de
la serie de Taylor donde sta se corte. Existen muchas
variaciones, pero todas se pueden denotar en la forma
generalizada de la ecuacin:
yi+1 = yi + (xi,yi,h)h
donde (xi,yi,h) es conocida como funcin incremento, la cual
puede interpretarse como una pendiente representativa sobre
el intervalo.
= a1k1+ a2k2 ++ ankn
donde las a son constantes y las k son relaciones de
recurrencia, esto es, k1 aparece en la ecuacin para k2, la cual
aparece en la ecuacin para k3, etc.
n = 1, es el mtodo de Euler. n = 2, es el mtodo de Heun.

La ecuacin original del mtodo de Euler es:

y i 1 y i xi , y i , h h

Donde

xi , y i , h - funcin incremento (pendiente sobre el intervalo).

La funcin incremento se escribe en general como:

a1 k1 a2 k2 .......... .......... an kn

donde las a son constantes y las k son:

k1 f xi , y i
k2 f xi p1 h, y i q11 k1 h
k3 f xi p2 h, y i q21 k1 h q22 k2 h
.
kn f xi pn-1 h, y i qn-1,1 k1 h qn-1,2 k2 h .......... .. qn-1,n-1 kn-1 h

k- son relaciones de recurrencia, ya que la primera interviene


en la segunda, a su vez la primera y la segunda intervienen
en la tercera y as sucesivamente.
Existe varios tipos de mtodos de Runge Kutta
El orden del mtodo depende del nmero de trminos en la
funcin incremento n.

n = 1 - mtodo de Runge Kutta de primer orden, su funcin


incremento es:

a1 k1 a1 f xi , y i

n = 2- mtodo de Runge Kutta de segundo orden, su funcin


incremento es:
y i 1 y i a1 k1 a2 k2 h

Las ai son constantes a determinar y las ki son:

k1 f xi , y i
k2 f xi p1 h, y i q11 k1 h

Hay que determinar los valores de las constantes a 1, a2, p1 y q11.


Para ello desarrollamos la serie de Taylor de segundo orden para
yi+1 en trminos de yi y la derivada primera de la funcin respecto
de x valuada en xi, yi :

f xi , y i 2
y i 1 y i f xi , y i h
h
2!

Despus de operaciones matemticas tenemos:

f
f 2
yi1 yi a1 f xi, yi a2 f xi, yi h a2 p1 a2 f xi, yi q11 h ....
x
y

Comparamos trminos de esta ecuacin con:


f x, y f x, y dy h2
y i 1 y i f xi , y i h


y
dx 2!
x

Para ser equivalentes las dos ecuaciones se debe cumplir:

a1 a2 1 , a2 p1

1
2

a2 q11

Como hay una incgnita mas que el nmero de ecuaciones, no existe un


conjunto nico de constantes. Sin embargo, podemos suponer una de las
constantes y calcular a las otras tres. En consecuencia, existe una familia
de mtodos de segundo orden.

Por ejemplo, en funcin de a2 (a2 =1/2):

1
1
y q11
2 a2
2 a2
Entonces: a1 = , p1 = 1 y q11 = 1.
Reemplazando, obtendremos la ecuacin:
a1 1 - a2 , p1

y i 1 y i a1 k1 a2 k2 h
donde:

1
2

1
1

y i 1 y i k1 k2 h
2
2

k1 f xi , y i
-kpendiente
en el inicio del intervalo
2 f xi h, y i k1 h

k1
k2 - pendiente al final del mismo.

Mtodo de RK de segundo orden

a2 = : Mtodo de Heun con un solo corrector,


donde.
yi+1 = yi + (k1/2+k2/2)h
k1 = f(xi, yi)
k2 = f(xi+h, yi+k1h)
a2 = 1: Mtodo del punto medio.
yi+1 = yi + k2h
k1 = f(xi, yi)
k2 = f(xi+h/2, yi+k1h/2)
a2 = 2/3: Mtodo de Ralston.
yi+1 = yi + (k1/3+2k2/3)h
k1 = f(xi, yi)

Mtodos de Runge Kutta de tercer orden.

De la ecuacin general de Runge Kutta:

y i 1 y i a1 k1 a2 k2 a3 k 3 h

Se puede hacer un desarrollo similar al del mtodo de segundo orden.


Como resultado: 6 ecuaciones con 8 incgnitas, entonces deben
especificarse 2 valores para establecer todos los parmetros restantes.
Una versin comn del mtodo de Runge Kutta de tercer orden es:

y i 1 y i

donde:

k1 f xi , y i
k2
k3

1
k1 4 k2 k3 h
6

1
1

f xi h, y i k1 h
2
2

f xi h, y i k1 h 2 k2 h

Si la derivada es solo una funcin de x, el mtodo se reduce a la regla de


Simpson 1/3.

Mtodo de Runge-Kutta (de cuarto orden):

1
y i 1 y i k1 2 k2 2 k3 k4 h
6
k1 f xi , y i
k2
k3
k4

1
1

f xi h, y i k1 h
2
2

1
1

f xi h, y i k2 h
2
2

f xi h, y i k3 h

Este mtodo es mas utilizado, veamos los pasos de calculo.

Para calcular un valor aproximado de la solucin y1 en el punto


x1 = x0 + h, se calculan los siguientes nmeros:

k1 h f (x 0 ,y0 )
h
k1
k 2 h f (x0 , y0 )
2
2
h
k2
k3 h f (x 0 , y0 )
2
2
k 4 h f (x0 h, y0 k3 )
1
K0 (k1 2k 2 2k 3 k4 )
6
y entonces se toma:
y1 y0 K0

Procediendo del mismo modo, calcularamos el valor aproximado de


la solucin, y2, en el punto x2 = x1 + h:

k1 h f (x1 , y1 )
h
k1
k 2 h f (x1 , y1 )
2
2
h
k2
k3 h f (x1 , y1 )
2
2

k 4 h f (x1 h, y1 k3 )
1
K0 (k1 2k 2 2k 3 k4 )
6
y2 y1 K0

Y as, sucesivamente, para el punto ensimo, tendramos xn = xn-1 + h:

k1 h f (x n 1 , yn 1 )
h
k1
k 2 h f (xn 1 , yn 1 )
2
2
h
k2
k3 h f (x n 1 ,y n 1 )
2
2

k 4 h f (xn 1 h, yn 1 k3 )
1
K0 (k1 2k 2 2k 3 k4 )
6
yn yn 1 K0

Utilizar el mtodo de Runge-Kutta con el problema siguiente para


calcular la solucin aproximada en x = 0.2 y x =0.4:

dy
2x y ; y(0) 1
dx
h = 0.2:

x1 x 0 h 0 0.2 0.2

k1 h f (x 0 ,y0 )

0.2 (2 0 1) 0.2
h
k1
k 2 h f (x0 , y0 )
0.2 f (0 0.1, 1 0.1)
2
2
k 2 0.2 2 0.11.1 0.26
h
k2
k3 h f (x 0 , y0 )
2
2

0.2 f (0.1, 1.13)

k3 0.2 2 0.1 1.13 0.266

k 4 h f (x0 h, y0 k3 ) 0.2 f (0.2, 1.266)


k 4 0.2 2 0.2 1.266 0.3332
1
K0 (k1 2k 2 2k 3 k4 ) 0.2642
6

y1 y0 K0 1.2642
x2 x1 h 0.2 0.2 0.4
k1 h f (x1 , y1 ) 0.2 (2 0.2 1.2642) 0.33284
h
k
k 2 h f (x1 , y1 1 ) 0.2 f (0.3, 1.43062) 0.40612
2
2

h
k2
k3 h f (x1 , y1 )
2
2

0.2 f (0.3, 1.46726) 0.41345

k 4 h f (x1 h, y1 k3 ) 0.2 f (0.4, 1.67765) 0.49553


1
K0 (k1 2k 2 2k 3 k4 ) 0.41125
6
y2 y1 K0 1.2642 0.41125 1.67545

Utilizar el mtodo de Runge-Kutta con el problema siguiente para


calcular la solucin aproximada en x = 0.1 y x =0.2:

dy
x 2 y2
dx
h = 0.1:

; y(0) 1

x1 x 0 h 0 0.1 0.1

k1 h f (x 0 ,y0 ) 0.1f (0,1) 0.1 (02 12 ) 0.1


h
k1 0.1 f (0.05, 1.05)
k 2 h f (x0 , y0 )
2
2
2
2
k 2 0.1 0.05 1.05 0.1105
h
k 2 0.1 f (0.05, 1.05525)
k3 h f (x 0 , y0 )
2
2
k3 0.1116052
k 4 h f (x0 h, y0 k3 ) 0.1 f (0.1, 1.1116052 )
k 4 0.1 (0.12 1.1116052 2 ) 0.1245666
1
K0 (k1 2k 2 2k 3 k4 ) 0.1114628
6
y1 y0 K0 1.1115

x2 x1 h 0.1 0.1 0.2


k1 h f (x1 , y1 ) 0.1 (0.12 1.1115 2 ) 0.1245432
h
k1 0.1 f (0.15, 1.1737716) 0.1400239
k 2 h f (x1 , y1 )
2
2
h
k2
k3 h f (x1 , y1 ) 0.1 f (0.15, 1.181512) 0.141847
2
2

k 4 h f (x1 h, y1 k3 )

0.1f (0.2, 1.2533471) 0.1610878

1
K0 (k1 2k 2 2k 3 k4 ) 0.1415621
6
y2 y1 K0 1.2531

Ejemplo
Usar el mtodo de Runge-Kutta para aproximar
Y(0.5) dada la siguiente ecuacin diferencial:

Solucin:
Condiciones iniciales

Para poder calcular el valor de y1, debemos calcular primeros los


valores de k1, k2, k3 y k4. Tenemos entonces que:

El proceso debe repetirse hasta obtener y5. Resumimos los


resultados en la siguiente tabla:
n

Xn

0.1

1.01005

0.2

1.04081

0.3

1.09417

0.4

1.17351

0.5

1.28403

Yn
1

Entonces concluimos que el valor obtenido con el mtodo de Runge-Kutta es

Y finalmente, calculamos el error relativo verdadero para comprobar


que se ha reducido

Ejemplo
Usar el mtodo de Runge-Kutta para
aproximar y(2.2) dada la ecuacin
diferencial:

Solucin
Tomamos h=0.1 y llegaremos a la aproximacin en dos
pasos. Con esta aclaracin, tenemos los siguientes
datos:

Primera Iteracin:

Segunda Iteracin:

Conclumos entonces que el valor buscado es:

Programa mtodo de R-K o4


function [t,y] = rko4_1(fun,ti,tmax,h,ci)
% METODO DE Runge-Kutta de orden 4
% [t,y] = rko4_1(fun,ti,tmax,h,ci)
% fun: nombre del archivo con la funcin programada
% ti : tiempo inicial
% tmax : tiempo final
% h : intervalo de tiempo
% ci : condiciones iniciales
for n=1:length(ci)
Y(n,1) = ci(n);%condicion inicial
end
T(1) = ti; %tiempo inicial
fin=(tmax-ti)/h;
for n=1:fin
k1 = h*feval(fun,T(n),Y(:,n));
k2 = h*feval(fun,T(n)+(0.5*h),Y(:,n)+0.5*k1);
k3 = h*feval(fun,T(n)+(0.5*h),Y(:,n)+0.5*k2);
k4 = h*feval(fun,T(n)+h,Y(:,n)+k3);
Y(:,n+1) = Y(:,n) + (1/6)*(k1+2*k2+2*k3+k4);
T(n+1)=T(n)+h;
end
t=T'; y=Y';
plot(t,y)

Programa mtodo de R-K o4


% METODO R-K o4
% fun: funcin programada
ti=0;
% Tiempo inicial
tmax=3; % Tiempo final
ci=1;
% Condicin inicial
h=0.01; % Intervalo de tiempo
[t,y] = rko4_1(myf,ti,tmax,h,ci)
% Solucion exacta
ye = exp(-t).*cos(5*t);
hold on
plot(t,ye,'r*') % grafico de la solucin
function yprime = myf(t,y)
yprime = -y -5*exp(-t)*sin(5*t);

APLICANDO MATLAB
ODE45: Nonstiff Explicit Runge-Kutta pair, order 4 and 5
[T,Y] = ODE45(ODEFUN,TSPAN,Y0)
TSPAN = [T0 TFINAL] integrates the m system of differential
equations y' = f(t,y) from time T0 to TFINAL with initial
conditions Y0.
Function ODEFUN(T,Y) must return a column vector
corresponding to f(t,y).
To obtain solutions at specific times T0,T1,...,TFINAL (all
increasing or all decreasing), use TSPAN = [T0 T1 ... TFINAL].

APLICANDO MATLAB
% Solucin de la funcin myf
tspan = [0 3]; %Intervalo de la variable independiente
yzero = 1; %Condicion inicial
ode45('myf',tspan,yzero) % solucin con grafico
[t,y] = ode45('myf',tspan,yzero); % solucin con datos
plot(t,y,'r*--') % grafico de la solucin
xlabel t, ylabel y(t)
% Solucion exacta
ye = exp(-t).*cos(5*t);
hold on
line(t,ye)

EJEMPLO: EDO de orden 2


EDO
C.I.
Tiempo

d2
(t ) sin( ) 0
2
dt
d
(t0 ) 1; (t0 ) 1
dt
t [0,10]

y1 =
y2 =
y 1 = y 2
y2 = = -sin() = -sin(y1)
Condiciones iniciales: y1(0) = 1, y2(0) = 1

FUNCION EN MATLAB
function yprime = pend(t,y)
yprime = [y(2); -sin(y(1))];

Ejemplo:
% Solucin de la funcion pend
tspan = [0 10]; % %Intervalo de la variable independiente
yazero = [1; 1]; % condiciones iniciales a
ybzero = [-5;2]; % condiciones iniciales b
yczero = [5; -2];% condiciones iniciales c
[ta,ya] = ode45('pend',tspan,yazero); % solucion con CI a
[tb,yb] = ode45('pend',tspan,ybzero); % solucion con CI b
[tc,yc] = ode45('pend',tspan,yczero); % solucion con CI c
plot(ta,ya) % grafico de la solucion con CI a
plot(tb,yb) % grafico de la solucion con CI b
plot(tc,yc) % grafico de la solucion con CI c

% Grafico del campo vectorial


[y1,y2] = meshgrid(-5:.5:5,-3:.5:3);
Dy1Dt = y2; Dy2Dt = -sin(y1);
quiver(y1,y2,Dy1Dt,Dy2Dt)
hold on
plot(ya(:,1),ya(:,2),yb(:,1),yb(:,2),yc(:,1),yc(:,2))
axis equal, axis([-5 5 -3 3])
xlabel y_1(t), ylabel y_2(t)
hold off

Mtodos de Runge Kutta de orden superior.


Si se requiere mayor exactitud en las estimaciones es recomendable utilizar alguno de los mtodos de Runge
Kutta de quinto orden. Entre estos se destaca el mtodo de Butcher:

y i 1 y i

1
7 k1 32 k3 12 k4 32 k5 7 k6 h
90

k1 f xi , y i

1
1

k2 f xi h, y i k1 h
4
4

1
1
1

k3 f xi h, y i k1 h k2 h
4 que el de
8 cuarto orden,
8 pero es
preciso
mucho mayor la complejidad adicional y el esfuerzo
Este mtodo es mas
computacional.
1
1

k4 f xi h, y i k2 h k3 h
2
2

3
3
3

k5 f xi h, y i
k1 h
k4 h
4
16
16

3
2
12
12
8

k6 f xi h, y i k1 h k2 h
k3 h
k4 h k5 h
7
7
7
7
7

Comparacin de los mtodos de Runge Kutta

Transformacin de una EDO de orden n en un sistema de n EDOs


de primer orden
Considrese una ecuacin diferencial de la siguiente forma, para x
2
n 1
[a,b] :

d ny
dy
d
y
d
y
f x, y,
,
,......,
2
n 1

dx
dx n
dx
dx

La idea bsica de la transformacin es tratar explcitamente como


funciones incgnita a las n 1 primeras derivadas de la funcin y.
Esto puede expresarse como:
y1 y
dy dy1
y2

dx
dx
d2y

dy 2
y3

2
dx
dx
.
yn

Entonces

d ny
dx n

dy n 1
dx

dy n
f x, y1 , y 2 , y 3 ,......, y n
dx

Si tomamos ltima ecuacin y la combinamos con las (1) a excepcin y 1,


se transforman las condiciones iniciales y se obtiene:
dy1 dy

dx
dx

dy
d y
y3 2

dx
dx 2

n
dy
d y

yn n 1

dx
dx n

dy n

f x, y1 , y 2 , y 3 ,......, y n
dx

y2

n ecuaciones con n incognitas

y1 a y a 0
dy
y2 a
a 1
dx

d 2 y1

y3 a
a 2

dx 2

d n-1y

. yn a
a n 1
dx n-1

n condiciones iniciales

Ejemplo: Expresar la siguiente ecuacin diferencial ordinaria de


orden 3 en un sistema de
tres ecuaciones diferenciales
ordinarias de orden 1.
Dada la siguiente ecuacin:
d3y x
d2y x
dy x
x
2
3 x 2
4 y x 4 e x 2
dx
dx 3
dx 2

Donde las condiciones iniciales son:


x = 0, y(0) =4, y(0) = -1, y(0) = 2.
Transformarla en un sistema de 3 ecuaciones de primer orden.
Para ello definimos las siguientes variables dependientes:

y ' x v x

Entonces:

v ' x u x
y ' x v x
y '' x v ' x u x
y '' ' x v '' x u' x

La ecuacin original podr entonces escribirse en trminos del


siguiente sistema:
y ' x v x
v ' x u x
4 e x 2 2 v ' x 3 x 2 y ' x 4 y
u x
x
'

Condiciones iniciales en x = 0:

y(0) 4; v(0) 1

u(0) 2

Solucin de un sistema de n EDOs de primer orden

dy1
f1 x , y1 , y 2 ,......... ..., y n
dx
dy 2
f2 x , y1 , y 2 ,......... ..., y n
dx
.
.
dy n
fn x , y1 , y 2 ,......... ..., y n
dx

La solucin de tal sistema requiere de que se conozcan las n


condiciones iniciales en el valor inicial del intervalo correspondiente a x.
Todos los mtodos vistos anteriormente para simples ecuaciones
pueden extenderse a la resolucin de sistemas como el anterior. El
procedimiento para resolver un sistema de ecuaciones simplemente
involucra aplicar las tcnicas conocidas para cada ecuacin en cada
paso, antes de proceder con el siguiente.

Ejemplo 1: Resolver el siguiente sistema de EDOs mediante el mtodo de Euler.

dy1
- 0.5 y1
dx
dy 2
4 - 0.3 y 2 - 0.1 y1
dx

Intervalo: x = [0, 2], con condiciones iniciales en x = 0, y1 = 4 , y2 = 6.


Utilizaremos un paso h = 0.5.
La formula del mtodo de Euler y i 1 y i f ( xi , y i ) h
Primero calculamos las pendientes:

dy1
f1 ( 0 , 4, 6) - 0.5 4 - 2
dx
dy 2
f2 ( 0 , 4, 6) 4 - 0.3 6 - 0.1 4 1.8
dx

Y luego los valores de la funcin para el primer paso:


y1 0.5 y1 0 f1 ( 0 , 4 , 6) h 4 - 2 0.5 3
y 2 0.5 y 2 0 f2 ( 0 , 4 , 6) h 6 1.8 0.5 6.9

Para un segundo paso volvemos a calcular las pendientes:


dy1
f1 ( 0.5 , 3, 6.9) - 0.5 3 - 1.5
dx

dy 2
f2 ( 0.5 , 3, 6.9) 4 - 0.3 6.9 - 0.1 3 1.63
dx

Y luego los valores de la funcin para el segundo paso:


y1 1.0 y1 0.5 f1 ( 0.5 , 3, 6.9) h 3 - 1.5 0.5 2.25

y 2 1.0 y 2 0.5 f2 ( 0.5 , 3, 6.9) h 6.9 1.63 0.5 7.715

Y as contina el clculo hasta el final. Los resultados se resumen en la


x
y1
y2
siguiente tabla:
0.0

4.000000

6.000000

0.5

3.000000

6.900000

1.0

2.250000

7.715000

1.5

1.687500

8.445250

2.0

1.265625

9.094870

Sistemas de EDO

Sistema
EDO

C.I.
Tiempo

d
y1 (t ) y2 (t ) y3 (t )
dt
d
y2 (t ) y1 (t ) ay2 (t )
dt
d
y3 (t ) b y3 (t )( y1 (t ) c)
dt
y1 (0) 1; y2 (0) 1; y3 (0) 1;
t [0,100]

Parametros: a = 0.2, b = 0.2, c = 5, 2.5, 1, 0.5

FUNCIN EN MATLAB
function yprime = rossler(t,y)
% ROSSLER: Rossler system
a=0.2; b=0.2; c=2.5;
yprime = [-y(2)-y(3); y(1)+a*y(2);
b+y(3)*(y(1)-c)];

APLICANDO MATLAB
% Solucin de la funcin Rossler
tspan = [0,100]; % Intervalo de la variable independiente
yzero = [1;1;1]; % Condicin inicial
ode45('rossler',tspan,yzero); % solucion con grafico
[t,y] = ode45('rossler',tspan,yzero); % solucin con datos
plot(t,y(:,1)) % Grafico solucin de y1
plot(t,y(:,1),t,y(:,2)) % Grafico solucin de y1,y2
plot(t,y(:,1),t,y(:,2),t,y(:,3)) % grafico de la solucin de y1,y2,y3
plot3(y(:,1),y(:,2),y(:,3)) % grafico de la solucin

OTROS MTODOS
Runge-Kutta-Fehlberg Paso adaptativo: METODO DE
PASO VARIABLE
Mtodos de Adams-Bashforth: METODOS MULTIPASOS
EXPLCITOS
Mtodos Adams-Moulton: METODOS MULTIPASOS
IMPLCITOS
METODOS PREDICTOR-CORRECTOR

APLICANDO MATLAB
ode45 is based on an explicit Runge-Kutta (4,5) formula, the
Dormand-Prince pair.
ode23 is an implementation of an explicit Runge-Kutta (2,3) pair
of Bogacki and Shampine.
ode113 is a variable order Adams-Bashforth-Moulton PECE
solver. It is a multistep solver.
ode15s is a variable order solver based on the numerical
differentiation formulas, NDFs. (also known as Gear's method) is
a multistep solver

APLICANDO MATLAB

ode23s is based on a modified Rosenbrock formula of order 2. it


is a one-step solver
ode23t is an implementation of the trapezoidal rule using a
"free" interpolant.
ode23tb is an implementation of TR-BDF2, an implicit RungeKutta formula,trapezoidal rule and backward differentiation

APLICANDO MATLAB
ODE23: Nonstiff

Explicit Runge-Kutta pair, order 2 and 3

ODE45: Nonstiff

Explicit Runge-Kutta pair, order 4 and 5

ODE113: Nonstiff Explicit linear multistep, orders 1 to 13


ODE15S: Stiff Implicit linear multistep, orders 1 to 5
ODE23S: Stiff Modified Rosenbrock pair (one-step), orders 2 and 3
ODE23T: Mildly stiff Trapezoidal rule (implicit), orders 2 and 3
ODE23TB: Stiff Implicit Ringe-Kutta type algorithm, orders 2 and 3

APLICANDO MATLAB

PROBLEMAS
DE VALORES
DE FRONTERA

PROBLEMAS DE VALORES DE
FRONTERA
dy d 2 y
F ( x , y , , 2 ) 0
dx dx
y ( x a ) c1
y ( x b) c 2

El orden mnimo de la ecuacin


diferencial para un problema de
valores de frontera es dos

ODE CONDICIONES
FRONTERA
Ejemplos:
u ' ' 4200 x 5 3000 x 4
u (0) 0 , u (1) 0

0 x 1

METODO DEL DISPARO


Transforma mediante un simple cambio de variables
un problema de condiciones de frontera en uno de
condiciones iniciales.

u1 ( x) y ( x)
u2 ( x) y ' ( x)

y ' ' f ( x, y , y ' )


u1 ' u2

a x b

u 2 ' f ( x, y , y ' )

y (a )

u1 (a )

u 2 (a ) ? u1 (b)
y (b)

METODO DEL DISPARO


u1 (b) e4
u1 (b) e3
u1 (b) e2

u2 (a ) k 4
u2 (a ) k3
u2 (a ) k 2
u2 (a ) k1

u1 (b) e1

Ejemplo 1
u ' ' 4200 x 5 3000 x 4

0 x 1

u (0) 0
u (1) 0
y1 u
y2 u '

y1 ' u ' y2

y2 ' u ' ' 4200 x 5 3000 x 4

u (0) 0

y1 (0) 0

u (1) 0

y2 (0) ?

u (1) 0

Ejemplo 1 MATLAB
function yprima = frontera_1(x,y)
yprima=[y(2);4200*x^5-300*x^4];
*************************************
xspan = [0 1]; %Intervalo de la variable independiente
yzero = [0 0]; %Condicion inicial
%yzero = [0 -90]; %Condicion inicial
[x,y] = ode45('frontera_1',xspan,yzero);
plot(x,y(:,1)) % grafico de la solucion
y(length(x),1)

Ejemplo 2
1
u ' ' 32 2 x 3 u u '
8
u (1) 17

1 x 3

u (3) 14.33
y1 u
y2 u '
u (1) 17
u (3) 14.33

y1 ' u ' y2

1
y2 ' u ' ' 32 2 x 3 y1 y2
8
y1 (1) 17
y2 (1) ?

u (3) 14.33

Ejemplo 2 MATLAB
function yprima = frontera_2(x,y)
yprima=[y(2);1/8*(32+2*x^3-y(1)*y(2)];
*************************************
xspan = [1 3]; % Intervalo de la variable independiente
yzero = [17 0]; % Condicin inicial
%yzero = [17 -14]; % Condicin inicial
[x,y] = ode45('frontera_2',xspan,yzero);
plot(x,y(:,1)) % grafico de la solucin
y(length(x),1)

METODO DE DIFERENCIAS
FINITAS
y ( xi 1 )

y ( xi )

wi 1

wi

y ( xi 1 )

y (b)

wi 1

y (a )

x a

xi 1

xi

xi 1

x b

METODO DE DIFERENCIAS
FINITAS: CASO LINEAL

METODO DE DIFERENCIAS
FINITAS: CASO LINEAL

METODO DE DIFERENCIAS
FINITAS: CASO LINEAL

METODO DE DIFERENCIAS
FINITAS: CASO NO LINEAL

SISTEMA NO-LINEAL

ODE _ MATLAB (bvp4c)


CONDICIONES FRONTERA

MATLAB: bvp4c
El comando esta diseado para resolver problemas de
condiciones de frontera de ecuaciones diferenciales ordinarias
de la forma:

y' f ( x , y )
donde x es la variable independiente, y es la variable
dependiente, y y representa dy/dx. Con las siguientes
condiciones de frontera en el intervala [a , b]:

g ( y (a ) , y (b) ) 0

MATLAB: bvp4c
bvp4c usa el mtodo de diferencias finitas con la frmula de
Lobatto IIIa (3-etapas).
Este mtodo produce una solucin continua, no
uniformemente espaciada, de cuarto orden de precisin,
mediante la tcnica de COLOCACIN.
Esta tcnica usa una malla de puntos para subdividir el
intervalo de integracin. Se halla una solucin resolviendo un
sistema global de ecuaciones algebraicas resultantes de las
condiciones de frontera y las condiciones impuestas por el
mtodo de colocacin en cada subintervalo.
Se determina si el error obtenido satisface el critero de
tolerancia, si no, se adapta la malla y se repite el proceso.

MATLAB: bvp4c
La sintaxis de bvp4c es:
sol = bvp4c(odefun, bcfun, solinit)
odefun: Funcin que representa la EDO que se desea
solucionar (similar que para los comandos ODE**).
dydx = odefun(x,y) donde x es un escalar, dydx y y son
vectores columna.
bcfun: Esta funcin debe retornar una funcin residual que
debe ser cero en las condiciones de frontera.
res = bcfun(ya,yb) donde ya y yb son vectores columna
representando las fronteras izquirda y(a) y derecha y(b)
res es un vector columna del residual que satisface las
condiciones de frontera.

MATLAB: bvpinit
solinit: Funcin donde se especifican los puntos iniciales de la
malla y una aproximacin inicial de la solucin en estos puntos.
solinit debe tener una estructura especfica para ser utilizada
en el comando bvp4c por lo que MATLAB tiene el comando
bvpinit para obtener la estructura exigida.
solinit = bvpinit(x,yinicial)
x es un vector que especifica una malla inicial. Para el intervalo
[a,b], se debe especificar x(1) como a y x(end) como b. La
funcin bvp4c obtiene una malla final en la solucin.

MATLAB: bvpinit
yinicial es la aproximacin inicial de la solucin. Puede ser un
vector o una funcin:
Vector: Para cada componente de la solucin bvpinit asume
el correspondiente elemento del vector como un valor
constante para todos los puntos de la malla. Es decir, y(i) es
una aproximacin inicial constante para la componente ith of
the solution y(i,:) en todos los puntos x de la malla.
Funcin: Para cada punto de la malla, la funcin debe
devolver un vector cuyos elementos son aproximaciones de las
correspondientes componentes de la solucin. La funcin debe
ser de la forma: y = guess(x)
donde x son los puntos de la malla y y es un vector con
longitud igual al nmero de componentes de la solucin. O sea,
si se usa la funcin @guess, bvpinit la llama para todas las
componentes de la solucin, y(:,j) = guess(x(j)), en cada
punto de la malla j

ARGUMENTOS DE SALIDA
El comando produce una estructura sol (que puede tener cualquier
nombre) con las siguientes caractersticas:
sol.x: Almacena los nodos de la malla seleccionado por bvp4c
sol.y: Aproxima el valor de y(x) en los nodos de la malla.
sol.yp: Aproxima el valor de y(x) en los nodos de la malla.
sol.parameters: Estima el valor de los parmetros desconocidos,
si es el caso, obtenidos en el clculo.
La funcin bvpval usa la estructura de salida de sol para evaluara
la solucin numrica en cualquier punto del intervalo [a , b].

OPCIONES
La estructura del comando permite considerar los siguientes
argumentos opcionales:
options: Es el cuarto argumento:
sol = bvp4c(odefun,bcfun,solinit,options)
Cambia las propiedades que tiene el mtodo por defecto
(tolerancia, iteraciones, ). Estos cambios se realizan utilizando
las funciones de Matlab bvpset y bvpget (utilizar la ayuda de
MATLAB help para ver ms detalles de estas funciones).

ARGUMENTOS CONOCIDOS
p1,p2... Son parmetros conocidos que se pueden pasar entre las
diferentes funciones del comando (odefun y bcfun).
sol = bvp4c(odefun, bcfun, solinit, options, p1, p2...)
Si no se cambian los opciones se debe colocar [].
sol = bvp4c(odefun, bcfun, solinit, [], p1, p2...)
En la funcin odefun la lista de argumentos conocidos se debe
colocar despus de x , y
dydx = odefun(x,y,p1,p2,...)
En la funcin bcfun la lista de argumentos conocidos se debe
colocar despus de ya, yb
res = bcfun(ya,yb,p1,p2,...)

ARGUMENTOS
DESCONOCIDOS

La estructura bvp4c permite calcular parmetros desconocidos


de la ecuacin bajo la exigencia de que la solucin se ajuste a las
condiciones de frontera. Se deben dar valores iniciales de los
parmetro en la funcin bvpinit:
solinit = bvpinit(x,v, parameters_o)
Donde parameters_o es el vector de valores iniciales de los
parmetros
En la funcin odefun la lista de argumentos conocidos se debe
colocar despus del vector de parmetros desconocidos
dydx = odefun(x,y,parameters,p1,p2,...)
En la funcin bcfun la lista de argumentos conocidos se debe
colocar despus del vector de parmetros desconocidos
res = bcfun(ya,yb,parameters,p1,p2,...)

Ejemplo 1
u ' ' 4200 x 5 3000 x 4

0 x 1

u (0) 0
u (1) 0
y1 u
y2 u '

y1 ' y2

y2 ' 4200 x 5 3000 x 4

u (0) 0

y1 (0) 0

u (1) 0

y1 (1 ) 0

function yprima = frontera_1(x,y)


yprima=[y(2);4200*x^5-300*x^4];

Ejemplo 1 MATLAB
function solucion=ecuacion1_bvp
inicial = bvpinit(linspace(0,1,20), [0 0])
solucion = bvp4c(@frontera_1, @f1_bc, inicial);
plot(solucion.x,solucion.y(1,:))
%-----------------------------------------------------function res = f1_bc(ya,yb)
res = [ya(1);yb(1)];
%----------------------------------------------------function yprima = frontera_1(x,y)
yprima=[y(2);4200*x^5-300*x^4];

Ejemplo 1 COMPARACION
function solucion=ecuacion1_bvp
inicial = bvpinit(linspace(0,1,20), [0 0])
solucion = bvp4c('frontera_1', @f1_bc, inicial);
plot(solucion.x,solucion.y(1,:))
%-----------------------------------------------------function res = f1_bc(ya,yb)
res = [ya(1);yb(1)];
%------------------------------------------------------xspan = [0 1]; % Intervalo de la variable
independiente
yzero = [0 -90]; % Condicion inicial
[x,y] = ode45('frontera_1',xspan,yzero); % solucin
con datos
hold on;
plot(x,y(:,1),'r') % grafico de la solucin

Ejemplo 2 MATLAB
1
u ' ' 32 2 x u u '
1 x 3
8
3

u (1) 17
u (3) 14.33
y1 u

y1 ' y2

u (1) 17

1
y2 ' 32 2 x 3 y1 y2
8
y1 (1) 17

u (3) 14.33

y1 (3) 14.33

y2 u '

function yprima = frontera_2(x,y)


yprima=[y(2);1/8*(32+2*x^3-y(1)*y(2)];

Ejemplo 2 MATLAB
function solucion=ecuacion2_bvp
inicial = bvpinit(linspace(1,3,20), [0 0])
solucion = bvp4c('frontera_2', @f2_bc, inicial);
plot(solucion.x,solucion.y(1,:))
%-----------------------------------------------------function res = f2_bc(ya,yb)
res = [ya(1)-17;yb(1)-14.33];
%------------------------------------------------------function yprima = frontera_2(x,y)
yprima=[y(2);1/8*(32+2*x^3-y(1)*y(2)];

S-ar putea să vă placă și