Sie sind auf Seite 1von 10

N

UNIVERSIDAD
PRIVADA DEL NORTE

Anexos 8.
1.

Ecuaciones diferenciales ordinarias.

Las ecuaciones diferenciales juegan un papel esencial en las disciplinas cientficas y tecnicas, ya que la mayora de los fen
omenos fsicos se pueden modelar utilizando este tipo de ecuaciones. Solo un n
umero limitado de ecuaciones diferenciales pueden resolverse analticamnte. Los
metodos numericos, por otro lado, pueden dar una solucion aproximada de la mayora de estas
ecuaciones. Sin embargo, obtener una solucion numerica no es una tarea sencilla, ya que no existe un metodo numerico general que pueda resolver todas las ecuaciones diferenciales existentes.
MatLab posee una librera con un gran n
umero de herramientas que pueden ser utilizadas para
la solucion de ecuaciones diferenciales. Para poder sacar el m
aximo provecho a estas herramientas, el usuario debe saber trabajar con ecuaciones diferenciales, as como estar familiarizado con
los metodos apropiados para poder resolverlas.
En esta secci
on se describe en detalle como se utiliza MatLab para resolver ecuaciones
diferenciales ordinarias de primer orden. Se describir
an los metodos numericos utilizados para
resolver este tipo de ecuaciones, aunque estos no se explicaran desde el punto de vista matem
atico. Esta secci
on proporciona informaci
on para resolver ecuaciones de primer orden no demasiado
problematicas. Estos metodos proporcionan la pauta para resolver ecuaciones de orden superior
y sistemas de ecuaciones m
as completos.
Una ecuaci
on diferencial ordinaria (ODE: del ingles Ordinary Differential Equation) es una
ecuaci
on que contiene una variable independiente, una variable dependiente, as como derivadas
de la variable dependiente. Las ecuaciones que se tratar
an en esta secci
on son ecuaciones de
primer orden, cuya forma es:
dy
= f (x, y)
dx
donde x e y representan la variable independiente y dependiente, respectivamente. La solucion
es una funcion y = f (x) que satisface la ecuaci
on. En general, existen muchas funciones que
dan solucion a una determinada ODE, por lo que se necesita m
as informaci
on para calcular la
solucion a un problema especfico. Esta informaci
on adicional es el valor de la funcion (variable
dependiente) para ciertos valores de la variable independiente.

Facultad de Ingeniera

Departamento de Ciencias

N
1.1.

UNIVERSIDAD
PRIVADA DEL NORTE

Pasos en la resoluci
on de una ODE simple de primer orden:

De aqu en adelante se considerar


a t (el tiempo) como variable independiente. La razon es que en
muchas aplicaciones el tiempo es casi siempre la variable independiente, as adem
as la explicacion
sera coherente con la ayuda que proporciona MatLab en el men
u Help (Ayuda).

1.1.1.

Paso 1: Escribir el problema en la forma est


andar.

Esto es, escribir la ecuaci


on en la forma:
dy
= f (t, y)
dt

para t0 t tf ,

con y = y0

en

t = t0

Como se puede observar, para resolver una ODE de primer orden es necesario conocer tres cosas
importantes: una ecuaci
on que da la expresi
on para la derivada de y con respecto a t, el intervalo
de la variable independiente y el valor inicial de y. La solucion es el valor de y en funcion de t,
entre t0 y tf .
He aqu un problema de ejemplo:
t3 2y
dy
=
dt
t

1.1.2.

para 1 t 3,

con y = 4,2 en

t=1

Paso 2: Crear un fichero de funci


on.

Crear una funcion (en un fichero) que calcule dy


dt para los valores dados de t e y. Para el problema
anterior, el fichero de funcion sera el siguiente:

function dydt = ODEexp1(t,y)


dydt = (t^3-2*y)/t;

1.1.3.

Paso 3: Seleccionar un m
etodo para hallar la soluci
on.

Se trata de seleccionar el metodo para el calculo de la solucion. Hasta la fecha se han desarrollado
multitud de metodos para calcular ODEs de primer orden. Tpicamente, en estos metodos el
intervalo de tiempo se divide en peque
nos subintervalos o pasos. La solucion comienza en el
Facultad de Ingeniera

Departamento de Ciencias

UNIVERSIDAD
PRIVADA DEL NORTE

punto conocido y0 . Seguidamente, utilizando uno de los metodos de integracion, se calcula el


valor de y en cada paso. En la Tabla 1 se listan siete metodos distintos para resolver ODEs de
primer orden, implementados en MatLab mediante funciones. En la tabla se detalla adem
as una
breve descripci
on de cada metodo.

TABLA 1. Funciones MatLab para la resoluci


on de ODEs
Nombre de la funci
on
ode45

ode23
ode113
ode15s
ode23s
ode23t
ode23tb

Descripci
on
Para ecuaciones no demasiado complejas.Obtiene la soluci
on en un
solo paso, ideal para intentar obtener una primera aproximacion.
Se basa en el metodo de Runge-Kutta.
Para ecuaciones no demasiado complejas. Es m
as rapido pero
menos preciso que el metodo ode45.
Para ecuaciones no demasiado complejas. Obtiene la soluci
on en
m
ultiples pasos.
Para ecuaciones complejas. Obtiene la solucion en varios pasos.
Se utiliza cuando ode45 falla.
Para ecuaciones complejas. Obtiene la solucion en un solo paso.
Permite resolver algunas ecuaciones que no puede resolver ode15s.
Para ecuaciones de dificultad media.
Para ecuaciones complejas. A veces m
as eficiente que ode15s.

En general, los metodos de calculo de ODEs se pueden dividir en dos grupos seg
un su
habilidad para resolver problemas faciles o difciles, y tambien en funcion de si se usan uno
o varios pasos para la resoluci
on de la ecuaci
on. Las ecuaciones m
as difciles son aquellas que
incluyen componentes que varan de forma rapida y lenta, y requieren peque
nos subintervalos de
tiempo para obtener la solucion. Los metodos que calculan la solucion en un solo paso necesitan
necesitan la informaci
on de un punto para obtener una solucion proxima al punto en cuenti
on.
Los metodos planificados en varios pasos utilizan informaci
on de varios puntos previos para
encontrar la solucion en el punto siguiente.
Es necesario conocer de antemano que metodo es el m
as apropiado para un problema
especfico. Para hacer esto se puede utilizar, como primera opci
on, el metodo ode45. Este metodo
da, por lo general, buenos resultados para la mayora de los problemas. Si no se obtiene ninguna
solucion adecuada debido a la dificultad de la ecuaci
on, se puede utilizar, por ejemplo, el metodo
ode15s.

Facultad de Ingeniera

Departamento de Ciencias

N
1.1.4.

UNIVERSIDAD
PRIVADA DEL NORTE

Paso 4: Resoluci
on de la ODE.

El formato del comando que se utiliza para resolver ODEs para valores concretos es el mismo
para todos los metodos vistos anteriormente. La sintaxis general es:


[t, y] = nombre metodo f uncODE , tspan, y0
Informaci
on adicional:
nombre metodo - Es el nombre del metodo (numerico) usado (por ejemplo: ode45, ode23s, etc.)
funcODE - Es el nombre, en forma de cadena, de la funcion (fichero de funcion) que calcula
dy
dt para valores dados de t e y.
tspan Es un vector que especifica el intervalo de la solucion. El vector debe tener almenos dos
elementos, pero puede tener m
as. Si el vector tiene s
olo dos elementos, los elementos deben ser
[t0, tf ], que son el punto inicial y final, respectivamente, del intervalo de la solucion. Sin embargo, el vector tspan puede tener puntos adicionales entre el primero y el u
ltimo. El n
umero de
elementos de tspan afecta a la salida del comando.
y0 - Es el valor inicial de y (valor de y en el primer punto del intervalo).
[t, y] - Es la salida del comando, es decir, la solucion a la ecuaci
on diferencial. Los valores t e
y son vectores columna. Los puntos primero y u
ltimo representan el punto inicial y final del
intervalo, respectivamente. El espaciado y el n
umero de puntos dependen del vector de entrada
tspan. Si tspan tiene dos elementos (puntos inicial y final), los vectores t e y contendr
an la
solucion en cada paso de integracion calculado por el metodo en cuesti
on. Por el contrario, si
tspan tiene m
as de dos puntos (puntos adicionales entre el inicial y el final), los vectores t e
y s
olo contendr
an la solucion para esos puntos. El n
umero de puntos en tspan no afecta a los
pasos (subintervalos de tiempo) utilizados para la soluci
on de la ecuaci
on.
Por ejemplo, la solucion al problema presentado en el Paso 1:
dy
t3 2y
=
dt
t

para 1 t 3,

con y = 4,2 en

t=1

se puede obtener de la forma:


>> [t,y]=ode45(ODEexp1,[1:0.5:3],4.2)
t =
Facultad de Ingeniera

Departamento de Ciencias

UNIVERSIDAD
PRIVADA DEL NORTE

1.0000
1.5000
2.0000
2.5000
3.0000
y =
4.2000
2.4528
2.6000
3.7650
5.8444

Esta solucion se ha calculado mediante el metodo ode45. El nombre de la funcion utilizada (la
del Paso 2) es ODEexp1 . La solucion coemienza en t = 1 y finaliza en t = 3, con incrementos
de 0,5 (seg
un el vector tspan). Para visualizar la solucion, el problema se resuelve de nuevo
utilizando tspan con un espaciado menor. Esta solucion se representa gr
aficamente mediante el
comando plot.

>> [t,y]=ode45(ODEexp1,[1:0.01:3],4.2);
>> plot(t,y)
>> xlabel(t), ylabel(y)

6
5.5
5

4.5
4
3.5
3
2.5
2

1.5

2
t

Facultad de Ingeniera

2.5

Departamento de Ciencias

N
1.2.

UNIVERSIDAD
PRIVADA DEL NORTE

Programas diversos

function E=euler(f,a,b,ya,M)
%M
etodo de Euler. Construcci
on de las aproximaciones a la soluci
on del
%problema inicial y=f(t,y) con y(a)=y0 en [a,b] dadas por
%
%
y(k+1)=y(k)+h*f(t(k),y(k)) para k=0,1,...,M-1.
%
% Datos
%
- f es la funci
on almacenada como una cadena de caracteres f.
%
- a y b son los extremos derecho e izquierdo del intervalo.
%
- ya es la condici
on inicial y(a).
%
- M es el n
umero de pasos.
% Resultado
%
- E=[T Y] siendo T el vector de las abscisas e Y el vector de
%
las ordenadas.
h=(b-a)/M;
T=zeros(1,M+1);
Y=zeros(1,M+1);
T=a:h:b;
Y(1)=ya;
for j=1:M
Y(j+1)=Y(j)+h*feval(f,T(j),Y(j));
end
E=[T Y];
plot(E(:,1),E(:,2))

function H=heun(f,a,b,ya,M)
%Datos
%
- f es la funci
on almacenada como una cadena de caracteres f.
%
- a y b son los extremos derecho e izquierdo del intervalo.
%
- ya es la condici
on inicial y(a).
%
- M es el n
umero de pasos.
%Resultado
%
- H=[T Y] siendo T el vector de las abscisas e Y el vector de
%
las ordenadas.
h=(b-a)/M;
Facultad de Ingeniera

Departamento de Ciencias

UNIVERSIDAD
PRIVADA DEL NORTE

T=zeros(1,M+1);
Y=zeros(1,M+1);
T=a:h:b;
Y(1)=ya;
for j=1:M
k1=feval(f,T(j),Y(j));
k2=feval(f,T(j+1),Y(j)+h*k1);
Y(j+1)=Y(j)+(h/2)*(k1+k2);
end
H=[T Y];
plot(H(:,1),H(:,2))

function z=df(t,y)
z = [(t-y)/2,(2-t+y)/4,(-2+t-y)/8,(2-t+y)/16];

function T4=taylor(df,a,b,ya,M)
%Datos
%
- df=[y y y y] almacanada como una cadena de caracteres
%
- df, siendo y=f(t,y).
%
- a y b son los extremos derecho e izquierdo del intervalo.
%
- ya es la condici
on inicial.
%
- M es el n
umero de pasos.
%Resultado
%
- T4=[T Y] siendo T el vector de las abscisas e Y el vector de
%
las ordenadas.
h=(b-a)/M;
T=zeros(1,M+1);
Y=zeros(1,M+1);
T=a:h:b;
Y(1)=ya;
for j=1:M
D=feval(df,T(j),Y(j));
Y(j+1)=Y(j)+h*(D(1)+h*(D(2)/2+h*(D(3)/6+h*D(4)/24)));
end
T4=[T Y];
plot(T4(:,1),T4(:,2))
Facultad de Ingeniera

Departamento de Ciencias

UNIVERSIDAD
PRIVADA DEL NORTE

function R=rk4(f,a,b,ya,M)
%Aproximaci
on a la soluci
on del problema de valor inicial y=f(t,y) con
%y(a)=y0 en [a,b] usando la f
ormula:
%
%
y(k+1)=y(k)+h/6*(k1+2k2+2k3+k4).
%
%Datos
%
- f es la funci
on almacenada como una cadena de caracteres f.
%
- a y b son los extremos derecho e izquierdo del intervalo.
%
- ya es la condici
on inicial y(a).
%
- M es el n
umero de pasos.
%Resultado
%
- R=[T Y] siendo T el vector de las abscisas e Y el vector de
%
las ordenadas.
h=(b-a)/M;
T=zeros(1,M+1);
Y=zeros(1,M+1);
T=a:h:b;
Y(1)=ya;
for j=1:M
k1=h*feval(f,T(j),Y(j));
k2=h*feval(f,T(j)+h/2,Y(j)+k1/2);
k3=h*feval(f,T(j)+h/2,Y(j)+k2/2);
k4=h*feval(f,T(j)+h,Y(j)+k3);
Y(j+1)=Y(j)+(k1+2*k2+2*k3+k4)/6;
end
R=[T Y];
plot(R(:,1),R(:,2));

function Z=F1(t,Z)
x=Z(1); y=Z(2); Z=[y,2*t*y/(1+t^2)-2*x/(1+t^2)+1];

function [T,Z]=rks4(F,a,b,Za,M)
%Datos
%
- F es la funci
on, almacenada como una cadena de caracteres F.
%
- a y b son los extremos derecho e izquierdo del intervalo.
Facultad de Ingeniera

Departamento de Ciencias

UNIVERSIDAD
PRIVADA DEL NORTE

%
- Za=[x1(a)...xn(a)]; es la condici
on inicial.
%
- M es el n
umero de pasos.
%Resultados
%
- T el vector de los nodos.
%
- Z=[x1(t)...xn(t)]; donde xk(t) es la aproximaci
on a la k-
esima
%
variable dependiente.
h=(b-a)/M;
T=zeros(1,M+1);
Z=zeros(M+1,length(Za));
T=a:h:b;
Z(1,:)=Za;
for j=1:M
k1=h*feval(F,T(j),Z(j,:));
k2=h*feval(F,T(j)+h/2,Z(j,:)+k1/2);
k3=h*feval(F,T(j)+h/2,Z(j,:)+k2/2);
k4=h*feval(F,T(j)+h,Z(j,:)+k3);
Z(j+1,:)=Z(j,:)+(k1+2*k2+2*k3+k4)/6;
end

function Z=F2(t,Z)
x=Z(1); y=Z(2); Z=[y,2*t*y/(1+t^2)-2*x/(1+t^2)];

function L=linsht(F1,F2,a,b,alpha,beta,M)
%Datos
%
- F1 y F2 son los sistemas de ecuaciones de primer orden
%
que representan los problemas de valor inicial:
%
u=p(t)u(t)+q(t)u(t)+r(t) con u(a)=alpha y u(a)=0
%
v=p(t)v(t)+q(t)v(t)
con v(a)=0
y v(a)=1
%
almacenados como cadenas de caracteres F1 y F2.
%
- a y b son los extremos derecho e izquierdo del intervalo.
%
- alpha = x(a) y beta = x(b) son las condiciones de contorno.
%
- M es el n
umero de pasos.
%Resultado
%
- L=[T X]; siendo T el vector de dimensi
on (M+1)x1 de las abscisas y
%
y X el vector de dimensi
on (M+1)x1 de las ordenadas.
Facultad de Ingeniera

Departamento de Ciencias

UNIVERSIDAD
PRIVADA DEL NORTE

%Resoluci
on del sistema F1
Za=[alpha,0];
[T,Z]=rks4(F1,a,b,Za,M);
U=Z(:,1);
%Resoluci
on del sistema F2
Za=[0,1];
[T,Z]=rks4(F2,a,b,Za,M);
V=Z(:,1);
%C
alculo de la soluci
on del problema de contorno
X=U+(beta-U(M*1))*V/V(M+1);
L=[T X];
plot(L(:,1),L(:,2))

Facultad de Ingeniera

Departamento de Ciencias

10

Das könnte Ihnen auch gefallen