Comment Résoudre et Parcelle de Lotka-Volterra Équations Différentielles dans Matlab
Je me demandais si quelqu'un pourrait être en mesure de m'aider à résoudre le Lotka-Volterra équations à l'aide de MatLab. Mon code ne semble pas fonctionner. Je ne les suivants:
Étape 1 -
J'ai créé un dossier intitulé pred_prey_odes.m contenant le code suivant:
% 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);
J'ai enregistré le fichier et fait en sorte que c'est dans le répertoire courant avant de taper le code suivant dans la fenêtre de commande:
clc
tspan = [0, 20];
y0 = [10; 10];
ode = @(t, y) pred_prey_odes(t, y);
[t, y] = ode45(ode, tspan, y0);
plot (t,y)
Cependant, pas d'intrigue apparaît. En fait, il ne se passe rien dans matlab et je ne peux même pas effacer la fenêtre de commande. Si j'type clc rien ne se passe...
Toute aide serait appréciée!
Merci!
-Sneha Inguva
si l'invite de commande ne retourne pas? Il est possible que l'algorithme est toujours en cours d'exécution. Essayez d'appuyer sur Ctrl-C pour quitter l'opération. Si c'est le cas, quelque chose est incorrect avec votre application ou de l'ode45 est de prendre un temps très long à résoudre
OriginalL'auteur snehoozle | 2012-02-04
Vous devez vous connecter pour publier un commentaire.
Votre code est bien. Avec ce choix des paramètres, les prédateurs, tout simplement à mourir et la proie de l'expérience de croissance exponentielle. Puisque la valeur de la predator variable est minuscule, ode45 pense qu'il doit prendre vraiment minuscule étapes pour résoudre correctement. Par exemple, j'ai couru votre code avec tspan = [0,10] et le nombre de pas de temps a été 227485.
Vous pourriez avoir plus de chance soit de changer les paramètres, ou si ce sont vraiment les paramètres que vous vous souciez, vous pouvez utiliser ode23 qui doit être en mesure de prendre des pas de temps plus grâce à la stabilité des propriétés. Cependant, il pourrait être trop lent. Fondamentalement, le problème est que MATLAB est d'essayer de contrôler l'erreur relative basée sur le prédateur variable qui est minuscule et fondamentalement pas de sens. Si vous avez obtenu votre propre méthode RK4 qui n'ont pas de temps adaptatif marcher il serait probablement bien fonctionner.
MODIFIER Il est un signe d'erreur dans la deuxième équation. La fixation doit donner des oscillations au lieu de les prédateurs extinction.
Salut...Pourriez-vous faire quelques suggestions? J'ai essayé d'utiliser ode23 et de jouer avec les paramètres, mais pas de cigare...une population meurt alors que d'autres restent explose. Pourriez-vous faire quelques suggestions quant à des paramètres et de départ des populations?
Oh désolé, votre fichier a une erreur dans les indications pour la deuxième équation. Le fichier doit avoir: dy = zeros(2,1); dy(1) = a * y(1) - c * y(1) * y(2); dy(2) = -b * y(2) + d * y(1) * y(2);
Je pense que tout ça avec de Lotka-Volterra est que, fondamentalement, vous devriez toujours obtenir des oscillations n'importe quel choix de (positive) des paramètres et des conditions initiales que vous faites. Notez également que y0 = [b/d,a/c] devrait être un point fixe du système, afin de choisir quelque chose près que, comme y0 = [0.9*(b/d),1.1*(a/c)] devrait donner des petites oscillations.
Merci Kai! Vos suggestions travaillé!
OriginalL'auteur Kai Sikorski