Lotka-Volterra predator-prey model in Matlab
-
Ich muss das Lotka-Volterra predetaor-prey model in Matlab implementieren, d.h. ich muss folgendes Gleichungssystem (numerisch) loesen:
\begin{equation} \dot{u} = (\alpha\_1 - \beta\_1 v)u,\quad u(0) = 100 \\ \dot{v} = (\alpha\_2 - \beta\_2 u)v,\quad v(0) = 5 \\ \end{equation}ist dabei die Beute und die Raeuber. Die Konstanten sind gegeben durch .
Mein Matlab-Code sieht wie folgt aus:
a1 = 3; a2 = 2; b1 = 0.1; b2 = 0.1; dy = @(t,y) [ (a1 - b1*y(2)) * y(1) ; -(a2 - b2*y(1)) * y(2) ]; y0 = [100; 5]; ops = odeset('RelTol', 100*eps, 'AbsTol', eps); [t y] = ode45(dy, [0 10], y0, ops);
Wenn ich den Code (mit Octave) ausfuehre bekomme ich folgende Warunungen/Fehler:
warning: Option "InitialStep" not set, new value 1.000000 is used
warning: Option "MaxStep" not set, new value 1.000000 is used
error: Solving has not been successful. The iterative integration loop exited at time t = 1.459670 before endpoint at tend = 10.000000 was reached. This may happen if the stepsize grows smaller than defined in vminstepsize. Try to reduce the value of "InitialStep" and/or "MaxStep" with the command "odeset".Kann mir jemand sagen was ich falsch mache?
*Edit
Im Code verwende ich y, das wie folgt definiert ist:
-
Steht doch da: die maximale Schrittweiten sind (viel) zu groß und Octave hat dafür offenbar keine so guten initialen Schätzer wie Matlab. (In Matlab produziert dein Code das korrekte Ergebnis.) Dreh sie mal runter ...
-
Daniel E. schrieb:
Steht doch da: die maximale Schrittweiten sind (viel) zu groß und Octave hat dafür offenbar keine so guten initialen Schätzer wie Matlab. (In Matlab produziert dein Code das korrekte Ergebnis.) Dreh sie mal runter ...
Achso, dann liegt das nur daran. Ich hatte angenommen, dass ich sonst irgendwo einen Fehler gemacht habe.
Ich werde dann mal manuell die Schrittweite veraendern. Danke dir