Numerically solve Lotka-Volterra equations using Euler-Cromer
$begingroup$
I am trying to solve this coupled pair of equations
$$
{dxover dt}=alpha x - beta xy,\
{dyover dt}=delta xy - gamma y
$$
using the numerical method Euler-Cromer. It doesn't matter which method, as long as it is symplectic. But I'm lost on how to use this method for a system that doesn't have a Hamiltonian (or does it?), at least isn't mechanical. Is it possible to solve this using Euler-Cromer? I am looking for something like a recurrence relation so that I can calculate each new value from the old.
Best regards //
ordinary-differential-equations numerical-methods nonlinear-system
$endgroup$
add a comment |
$begingroup$
I am trying to solve this coupled pair of equations
$$
{dxover dt}=alpha x - beta xy,\
{dyover dt}=delta xy - gamma y
$$
using the numerical method Euler-Cromer. It doesn't matter which method, as long as it is symplectic. But I'm lost on how to use this method for a system that doesn't have a Hamiltonian (or does it?), at least isn't mechanical. Is it possible to solve this using Euler-Cromer? I am looking for something like a recurrence relation so that I can calculate each new value from the old.
Best regards //
ordinary-differential-equations numerical-methods nonlinear-system
$endgroup$
add a comment |
$begingroup$
I am trying to solve this coupled pair of equations
$$
{dxover dt}=alpha x - beta xy,\
{dyover dt}=delta xy - gamma y
$$
using the numerical method Euler-Cromer. It doesn't matter which method, as long as it is symplectic. But I'm lost on how to use this method for a system that doesn't have a Hamiltonian (or does it?), at least isn't mechanical. Is it possible to solve this using Euler-Cromer? I am looking for something like a recurrence relation so that I can calculate each new value from the old.
Best regards //
ordinary-differential-equations numerical-methods nonlinear-system
$endgroup$
I am trying to solve this coupled pair of equations
$$
{dxover dt}=alpha x - beta xy,\
{dyover dt}=delta xy - gamma y
$$
using the numerical method Euler-Cromer. It doesn't matter which method, as long as it is symplectic. But I'm lost on how to use this method for a system that doesn't have a Hamiltonian (or does it?), at least isn't mechanical. Is it possible to solve this using Euler-Cromer? I am looking for something like a recurrence relation so that I can calculate each new value from the old.
Best regards //
ordinary-differential-equations numerical-methods nonlinear-system
ordinary-differential-equations numerical-methods nonlinear-system
edited Jan 16 at 17:13
LutzL
58.9k42056
58.9k42056
asked Jan 16 at 16:56
SimpleProgrammer SimpleProgrammer
668
668
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
As
$$
frac{dx}{x}(δx−γ)=frac{dy}{y}(α−βy)
$$
there is indeed a first integral
$$
F(x,y)=δx-γln|x|+βy-αln|y|
$$
Taking this as a Hamiltonian for a potentially different time scale results in the system
begin{align}
frac{dx}{ds}&=-F_y=fracαy-β&&=frac{αx-βxy}{xy}\
frac{dy}{ds}&=~~~F_x=δ-fracγx&&=frac{δxy-γy}{xy}\
end{align}
so that for $xy>0$ the relation between the time scales is $frac{dt}{ds}=frac1{xy}$
To this Hamiltonian system you can apply the symplectic Euler method, which should yield orbits that are closer to closed than the simple application of Euler. With some more effort in the initial step one can easily modify this method to leapfrog Verlet, which has even better theoretical properties. To get not only the curve but the solution, you also need to integrate the equation for $t$.
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "69"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3075976%2fnumerically-solve-lotka-volterra-equations-using-euler-cromer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
As
$$
frac{dx}{x}(δx−γ)=frac{dy}{y}(α−βy)
$$
there is indeed a first integral
$$
F(x,y)=δx-γln|x|+βy-αln|y|
$$
Taking this as a Hamiltonian for a potentially different time scale results in the system
begin{align}
frac{dx}{ds}&=-F_y=fracαy-β&&=frac{αx-βxy}{xy}\
frac{dy}{ds}&=~~~F_x=δ-fracγx&&=frac{δxy-γy}{xy}\
end{align}
so that for $xy>0$ the relation between the time scales is $frac{dt}{ds}=frac1{xy}$
To this Hamiltonian system you can apply the symplectic Euler method, which should yield orbits that are closer to closed than the simple application of Euler. With some more effort in the initial step one can easily modify this method to leapfrog Verlet, which has even better theoretical properties. To get not only the curve but the solution, you also need to integrate the equation for $t$.
$endgroup$
add a comment |
$begingroup$
As
$$
frac{dx}{x}(δx−γ)=frac{dy}{y}(α−βy)
$$
there is indeed a first integral
$$
F(x,y)=δx-γln|x|+βy-αln|y|
$$
Taking this as a Hamiltonian for a potentially different time scale results in the system
begin{align}
frac{dx}{ds}&=-F_y=fracαy-β&&=frac{αx-βxy}{xy}\
frac{dy}{ds}&=~~~F_x=δ-fracγx&&=frac{δxy-γy}{xy}\
end{align}
so that for $xy>0$ the relation between the time scales is $frac{dt}{ds}=frac1{xy}$
To this Hamiltonian system you can apply the symplectic Euler method, which should yield orbits that are closer to closed than the simple application of Euler. With some more effort in the initial step one can easily modify this method to leapfrog Verlet, which has even better theoretical properties. To get not only the curve but the solution, you also need to integrate the equation for $t$.
$endgroup$
add a comment |
$begingroup$
As
$$
frac{dx}{x}(δx−γ)=frac{dy}{y}(α−βy)
$$
there is indeed a first integral
$$
F(x,y)=δx-γln|x|+βy-αln|y|
$$
Taking this as a Hamiltonian for a potentially different time scale results in the system
begin{align}
frac{dx}{ds}&=-F_y=fracαy-β&&=frac{αx-βxy}{xy}\
frac{dy}{ds}&=~~~F_x=δ-fracγx&&=frac{δxy-γy}{xy}\
end{align}
so that for $xy>0$ the relation between the time scales is $frac{dt}{ds}=frac1{xy}$
To this Hamiltonian system you can apply the symplectic Euler method, which should yield orbits that are closer to closed than the simple application of Euler. With some more effort in the initial step one can easily modify this method to leapfrog Verlet, which has even better theoretical properties. To get not only the curve but the solution, you also need to integrate the equation for $t$.
$endgroup$
As
$$
frac{dx}{x}(δx−γ)=frac{dy}{y}(α−βy)
$$
there is indeed a first integral
$$
F(x,y)=δx-γln|x|+βy-αln|y|
$$
Taking this as a Hamiltonian for a potentially different time scale results in the system
begin{align}
frac{dx}{ds}&=-F_y=fracαy-β&&=frac{αx-βxy}{xy}\
frac{dy}{ds}&=~~~F_x=δ-fracγx&&=frac{δxy-γy}{xy}\
end{align}
so that for $xy>0$ the relation between the time scales is $frac{dt}{ds}=frac1{xy}$
To this Hamiltonian system you can apply the symplectic Euler method, which should yield orbits that are closer to closed than the simple application of Euler. With some more effort in the initial step one can easily modify this method to leapfrog Verlet, which has even better theoretical properties. To get not only the curve but the solution, you also need to integrate the equation for $t$.
answered Jan 16 at 17:35
LutzLLutzL
58.9k42056
58.9k42056
add a comment |
add a comment |
Thanks for contributing an answer to Mathematics Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3075976%2fnumerically-solve-lotka-volterra-equations-using-euler-cromer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown