Escolar Documentos
Profissional Documentos
Cultura Documentos
ecuaciones diferenciales
mediante ode45
MATLAB dispone de varias funciones para resolver
mediante procedimientos numricos ecuaciones
diferenciales: ode23, ode45, ode113, etc, (vase en el
sistema de ayuda para qu tipos de problemas es ms
adecuado cada uno de los procedimientos).
Eligiremos ode45 para resolver la mayor parte de los
problemas.
La funcin ode45
Su sintaxis es la siguiente
[t,x]=ode45(odefun,tspan,x0, options, params)
x es una matriz donde cada columna corresponde a las
variables dependientes y t es el vector tiempo.
odefun es el nombre de la funcin,
tspan especifica el intervalo de tiempo, un vector de dos
nmeros tspan=[ti,tf] , tiempo inicial y final. Para obtener
valores de las variables dependientes en instantes
concretos t0, t1, t2, ... tn. se escribe tspan=[t0,t1....tn];
x0 es un vector que contiene los valores iniciales.
options es una estructura que se crea con la
funcin odeset, que explicaremos al final de esta pgina
ya que es un asunto bastante complicado.
params son parmetros que queremos pasar a la
funcin odefun
En la mayor parte de los ejemplos, utilizaremos los tres
primeros parmetros: llamaremos a la funcin ode45 y le
pasaremos la funcin odefunc, los instantes inicial y final
dvdt=f(t,x,v)dvdt=f(t,x,v)
dvxdt=f(t,x,vx,y,vy)dvxdt=f(t,x,vx,y,v
y)
dydt=vydydt=vy
dvydt=g(t,x,vx,y,vy)dvydt=g(t,x,vx,y,
vy)
dxdt=vxdvxdt=42x(x2+y2)3/2d2ydt2=42y(x2+y2)3/2
dydt=vydvydt=42y(x2+y2)3/2d2xdt2=42x(x2+y2)3/
2
{dxdt=vxdvxdt=42x(x2+y2)3/2d2ydt2=42y(x2+y2)3/2
{dydt=vydvydt=42y(x2+y2)3/2
tspan=[0 tf];
fg=@(t,x)[x(2);-4*pi*pi*x(1)/
(sqrt(x(1)*x(1)+x(3)*x(3)))^3; x(4);
-4*pi*pi*x(3)/(sqrt(x(1)*x(1)+x(3)*x(3)))^3];
[t,x]=ode45(fg,tspan,x0);
plot(x(:,1),x(:,3),'r')
xlabel('x')
ylabel('y');
title('rbita de un planeta')
Opciones de ode45
Imaginemos que estudiamos el movimiento de cada de
un cuerpo, no sabemos cuanto tiempo tardar en llegar al
suelo, desconocemos el valor del elemento tf en el
vector tspan. Sin embargo, queremos detener el proceso
de integracin numrica de la ecuacin diferencial que
describe el movimiento cuando la posicin del mvil sea
cero. La funcin MATLAB ode45 dispone de un
parmetro adicional options donde podemos indicarlo,
pero es bastante lioso e intentaremos explicarlo mediante
ejemplos.
Volvemos a resolver la ecuacin diferencial que describe
las oscilaciones amortiguadas y detendremos el proceso
de integracin cuando el mvil alcance la posicin
mxima, su velocidad es nula.
Supongamos que el oscilador amortiguado estudiado
anteriormente, de frecuencia natural 0=2, constante de
amortiguamiento =0.25, parte de la posicin x0=2.5 con
velocidad nula, queremos detener el proceso de
integracin cuando el mvil alcance la posicin mxima,
Posicin x(1)
2.5000
0.0000
1.1322
Velocidad x(2)
-0.0000
2.7173
-0.0000
Indice ie
2
1
2
ydt=xyxzdzdt=z+xy