Matlab - Almacenar en un vector el tiempo transcurrido en una ODE

 
Vista:

Almacenar en un vector el tiempo transcurrido en una ODE

Publicado por Paula (3 intervenciones) el 16/02/2012 20:18:47
Estimados:

Estoy resolviendo la famosa ecuación de Lotka y Volterra y me gustaria poder que graficara dentro de la función, el problema es que el tiempo "t" se va actualizando cada vez y el grafico final es el último punto 20. He tratado de guardarlo en otro vector T con un bucle "for-end" pero no me sale...

Me podrian ayudar?

a todo esto, la funcion la llamo asi:

>> [t,x]=ode45(@lv,[0 20],[30;4])

Muchas gracias.

function f=lv(t,x) %Ecuación de Lotka y Volterra
a=.5471;b=.0281;c=.0266;r=.8439; %parametros cualquieras

f=[a*x(1)-b*x(1)*x(2);-r*x(2)+c*x(1)*x(2)]; %EDO

A = x(1,:);
B = x(2,:);
T = [0,t];
for i=1:t,
T(i)= t(1:i);
end

plot(T,A,T,B,)

end


Paula.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Almacenar en un vector el tiempo transcurrido en una ODE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 17/02/2012 06:11:16
hola Paula.

1
2
3
4
5
6
7
8
9
%ecuación de Lotka y Volterra 
[t,x]=ode45(@lv,[0 20],[30;4]);
figure(gcf)
plot(t,x(:,1),'r',t,x(:,2),'g')
legend('(t,x(:,1))','(t,x(:,2))')
 
function f=lv(~,x) %Ecuación de Lotka y Volterra 
a=.5471; b=.0281; c=.0266;r=.8439; %parametros cualquieras
f=[a*x(1)-b*x(1)*x(2);-r*x(2)+c*x(1)*x(2)]; %EDO


Saludos.
JOSE JEREMIAS CABALLERO

Servicios de programacion matlab


Asesor de Proyectos con Matlab
programador en matlab
"Detalladar sus preguntas, para recibir respuestas acertadas"
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Almacenar en un vector el tiempo transcurrido en una ODE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 17/02/2012 06:14:12
Hola Paula.

1
2
3
4
5
6
7
8
9
10
function ode45caballero2
%ecuación de Lotka y Volterra 
[t,x]=ode45(@lv,[0 20],[30;4]);
figure(gcf)
plot(t,x(:,1),'r',t,x(:,2),'g')
legend('(t,x(:,1))','(t,x(:,2))')
 
function f=lv(~,x) %Ecuación de Lotka y Volterra 
a=.5471; b=.0281; c=.0266;r=.8439; %parametros cualquieras
f=[a*x(1)-b*x(1)*x(2);-r*x(2)+c*x(1)*x(2)]; %EDO



1
2
EJECUCION
>> ode45caballero2



Saludos.
JOSE JEREMIAS CABALLERO

Servicios de programacion matlab


Asesor de Proyectos con Matlab
programador en matlab
"Detalladar sus preguntas, para recibir respuestas acertadas"
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Almacenar en un vector el tiempo transcurrido en una ODE

Publicado por Paula (3 intervenciones) el 22/02/2012 21:26:09
Muchas gracias, me sirvio mucho.

Ahora bien, me gustaria ahora graficar el diagrama de fases, X1 vs X2

trato solamente de añadir a tu codigo otro plot y me tira error....

function ode45caballero2 %ecuación de Lotka y Volterra
[t,x]=ode45(@lv,[0 20],[30;4]);
figure(gcf)
plot(t,x(:,1),'r',t,x(:,2),'g')
legend('(t,x(:,1))','(t,x(:,2))')
plot(x(:,1),x(:,2))

function f=lv(~,x) %Ecuación de Lotka y Volterra
a=.5471; b=.0281; c=.0266;r=.8439; %parametros cualquieras
f=[a*x(1)-b*x(1)*x(2);-r*x(2)+c*x(1)*x(2)]; %EDO

Gracias de antemano
Paula
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Almacenar en un vector el tiempo transcurrido en una ODE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 22/02/2012 21:32:59
Hola Paula.
1
2
3
4
5
6
7
8
9
10
function ode45caballero2 %ecuación de Lotka y Volterra 
[t,x]=ode45(@lv,[0 20],[30;4]);
figure(gcf)
plot(t,x(:,1),'r',t,x(:,2),'g',x(:,1),x(:,2))
legend('(t,x(:,1))','(t,x(:,2))','x(:,1),x(:,2)')
 
 
function f=lv(~,x) %Ecuación de Lotka y Volterra 
a=.5471; b=.0281; c=.0266;r=.8439; %parametros cualquieras 
f=[a*x(1)-b*x(1)*x(2);-r*x(2)+c*x(1)*x(2)]; %EDO



Saludos.
JOSE JEREMIAS CABALLERO

Servicios de programacion matlab


Asesor de Proyectos con Matlab
programador en matlab
"Detalladar sus preguntas, para recibir respuestas acertadas"
[email protected] ; [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Almacenar en un vector el tiempo transcurrido en una ODE

Publicado por Paula (3 intervenciones) el 23/02/2012 14:35:04
Estimado José:

La solución que me diste, tira ambos en un mismo gráfico y debido a la naturaleza de ambos, no es conveniente que aparezcan juntos. Me gustaria iniciar una nueva figura, de hecho trate agregando figure antes y tampoco me funcionó.

de antemano, muchas gracias.

Paula
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Almacenar en un vector el tiempo transcurrido en una ODE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 23/02/2012 18:53:39
Hol Paula.
En ningun momento me dices que quieres, que la otra grafica salga en otra ventana de grafica.
Para la proxima oportunidad, haces las preguntas bien precisas para recibir respuestas precisas.

Sugerencias.
Estudiar matlab basico:
temas: vectores, matrices , graficos en 2 dimensiones y luego grafico en 3 dimensiones.


Saludos.
JOSE JEREMIAS CABALLERO

Servicios de programacion matlab


Asesor de Proyectos con Matlab
programador en matlab
"Detalladar sus preguntas, para recibir respuestas acertadas"
[email protected] ; [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Almacenar en un vector el tiempo transcurrido en una ODE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 23/02/2012 18:55:09
HOla Paula.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function ode45caballero2 %ecuación de Lotka y Volterra 
[t,x]=ode45(@lv,[0 20],[30;4]);
figure(1)
plot(t,x(:,1),'r',t,x(:,2),'g')
legend('(t,x(:,1))','(t,x(:,2))')
 
figure(2)
plot(x(:,1),x(:,2))
legend('x(:,1),x(:,2)')
 
 
 
function f=lv(~,x) %Ecuación de Lotka y Volterra 
a=.5471; b=.0281; c=.0266;r=.8439; %parametros cualquieras 
f=[a*x(1)-b*x(1)*x(2);-r*x(2)+c*x(1)*x(2)]; %EDO


Saludos .
JOSE JEREMIAS CABALLERO

Servicios de programacion matlab


Asesor de Proyectos con Matlab
programador en matlab
"Detalladar sus preguntas, para recibir respuestas acertadas"
[email protected] ; [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar