Cómo Solucionar y Parcela de Lotka-Volterra Ecuaciones Diferenciales en Matlab

Me preguntaba si alguien podría ayudarme a resolver el Lotka-Volterra ecuaciones usando MatLab. Mi código no parece estar funcionando. Hago lo siguiente:

Paso 1 –

He creado un archivo titulado pred_prey_odes.m que contiene el código siguiente:

% the purpose of this program is to model a predator prey relationship 
% I will be using the Lotka-Volterra equations 

% Program consists of the following differential equations: 
% dY1/dt = a * Y1 - c * Y1 * Y2
% dY2/dt = b * Y2 - d * Y1 * Y2 

function dy = pred_prey_odes(t, y) 
% function that is to be integrated 

%select constants 
a = 1;  
b = 2;  
c = 3; 
d = 4; 

%set up differential equations 
dy = zeros(2,1); 
dy(1) = a * y(1) - c * y(1) * y(2); 
dy(2) = b * y(2) - d * y(1) * y(2); 

Me guarda el archivo y se aseguró de que estaba en el directorio actual antes de escribir el código siguiente en la ventana de comandos:

clc
tspan = [0, 20]; 
y0 = [10; 10]; 
ode = @(t, y) pred_prey_odes(t, y); 
[t, y] = ode45(ode, tspan, y0); 
plot (t,y)

Sin embargo, ningún argumento aparece. De hecho, no pasa nada en matlab y ni siquiera puedo borrar la ventana de comandos. Si yo tipo clc no pasa nada…

Cualquier ayuda se agradece!

Gracias!

-Sneha Inguva

  • así el símbolo del sistema no vuelve? Es posible que el algoritmo todavía se está ejecutando. Prueba a Pulsar Ctrl-C para salir de la operación. Si ese es el caso, algo está mal con su aplicación o ode45 es tomar un tiempo muy largo para resolver
InformationsquelleAutor snehoozle | 2012-02-04

1 Kommentar

  1. 4

    El código está bien. Con esta elección de los parámetros, los depredadores simplemente morir y la presa experimentar un crecimiento exponencial. Puesto que el valor de los depredadores de la variable es pequeño, ode45 piensa que necesita para tomar realmente pequeños pasos para resolverlo correctamente. Por ejemplo, me encontré con su código con tspan = [0,10] y el número de pasos de tiempo fue 227485.

    Podría tener mejor suerte, ya sea el cambio de los parámetros, o si estos son realmente los parámetros que te importa, podrías usar ode23 que debe ser capaz de tomar grandes pasos de tiempo debido a la estabilidad de las propiedades. Sin embargo, eso puede ser demasiado lento. Fundamentalmente el problema es que MATLAB está tratando de controlar el error relativo basado en el depredador variable que es pequeño y básicamente sin sentido. Si usted rodó su propio método RK4 que no tienen tiempo de adaptación de escalonamiento sería probablemente un buen trabajo.

    EDITAR Hay un cartel de error en la segunda ecuación. La fijación que debe dar a las oscilaciones en lugar de los depredadores de extinción.

    • Ooh! Gracias. Voy a tratar de hacer un cambio en los parámetros y ver qué pasa.
    • Hola…podrías hacer un par de sugerencias más? He intentado utilizar ode23 y jugando con los parámetros, pero no de cigarros…una población que muere, mientras que el otro aún se explota. Podría usted hacer algunas sugerencias en cuanto a los parámetros y a partir de las poblaciones?
    • Oh, lo siento tu archivo tiene un error en las señales de la segunda ecuación. El archivo debe tener: dy = zeros(2,1); dy(1) = a * y(1) – c * y(1) * y(2); dy(2) = -b * y(2) + d * y(1) * y(2);
    • Creo que todo el asunto con Lotka-Volterra es que, básicamente, siempre se debe obtener oscilaciones no importa lo que la elección de la (positivo) de los parámetros y condiciones iniciales que hacer. También tenga en cuenta que y0 = [b/d,a/c] debe ser un punto fijo del sistema, para recoger algo parecido a eso como y0 = [0.9*(b/d),1.1*(a/c)] debería dar pequeñas oscilaciones.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea