How can I get results over the whole domain of my non-linear differential equations?
Clash Royale CLAN TAG#URR8PPP
$begingroup$
I want to solve the following system of non-linear differential equations:
t0 = 0.6;
tmax = 20;
σ = 0.04 t0;
a1 = -0.02;
a2 = -0.8;
s =
NDSolve[
D[x[t], t] + σ x[t] + a1/t0 (y[t]/t)^(1/3) == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == y[t0] == 1,
x, y, t, t0, tmax]
Plot[x[t] /. s, t, t0, tmax]
The problem is that the NDSolve
long before reaching max
.
I guess the problem comes from the power 1/3.
How can I correct the situation?
differential-equations
$endgroup$
add a comment |
$begingroup$
I want to solve the following system of non-linear differential equations:
t0 = 0.6;
tmax = 20;
σ = 0.04 t0;
a1 = -0.02;
a2 = -0.8;
s =
NDSolve[
D[x[t], t] + σ x[t] + a1/t0 (y[t]/t)^(1/3) == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == y[t0] == 1,
x, y, t, t0, tmax]
Plot[x[t] /. s, t, t0, tmax]
The problem is that the NDSolve
long before reaching max
.
I guess the problem comes from the power 1/3.
How can I correct the situation?
differential-equations
$endgroup$
$begingroup$
Please do not post images of your work. Please post your actual Mathematica code in the form of text that can be copied and pasted into a Mathematica notebook. Without such, it will be difficult to reproduce your problem and to experiment with possible solutions.
$endgroup$
– m_goldberg
Feb 20 at 6:19
add a comment |
$begingroup$
I want to solve the following system of non-linear differential equations:
t0 = 0.6;
tmax = 20;
σ = 0.04 t0;
a1 = -0.02;
a2 = -0.8;
s =
NDSolve[
D[x[t], t] + σ x[t] + a1/t0 (y[t]/t)^(1/3) == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == y[t0] == 1,
x, y, t, t0, tmax]
Plot[x[t] /. s, t, t0, tmax]
The problem is that the NDSolve
long before reaching max
.
I guess the problem comes from the power 1/3.
How can I correct the situation?
differential-equations
$endgroup$
I want to solve the following system of non-linear differential equations:
t0 = 0.6;
tmax = 20;
σ = 0.04 t0;
a1 = -0.02;
a2 = -0.8;
s =
NDSolve[
D[x[t], t] + σ x[t] + a1/t0 (y[t]/t)^(1/3) == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == y[t0] == 1,
x, y, t, t0, tmax]
Plot[x[t] /. s, t, t0, tmax]
The problem is that the NDSolve
long before reaching max
.
I guess the problem comes from the power 1/3.
How can I correct the situation?
differential-equations
differential-equations
edited Feb 20 at 7:51
m_goldberg
87.6k872198
87.6k872198
asked Feb 20 at 6:06
MPHYKEKMPHYKEK
864
864
$begingroup$
Please do not post images of your work. Please post your actual Mathematica code in the form of text that can be copied and pasted into a Mathematica notebook. Without such, it will be difficult to reproduce your problem and to experiment with possible solutions.
$endgroup$
– m_goldberg
Feb 20 at 6:19
add a comment |
$begingroup$
Please do not post images of your work. Please post your actual Mathematica code in the form of text that can be copied and pasted into a Mathematica notebook. Without such, it will be difficult to reproduce your problem and to experiment with possible solutions.
$endgroup$
– m_goldberg
Feb 20 at 6:19
$begingroup$
Please do not post images of your work. Please post your actual Mathematica code in the form of text that can be copied and pasted into a Mathematica notebook. Without such, it will be difficult to reproduce your problem and to experiment with possible solutions.
$endgroup$
– m_goldberg
Feb 20 at 6:19
$begingroup$
Please do not post images of your work. Please post your actual Mathematica code in the form of text that can be copied and pasted into a Mathematica notebook. Without such, it will be difficult to reproduce your problem and to experiment with possible solutions.
$endgroup$
– m_goldberg
Feb 20 at 6:19
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
Surd
is the solution, but it behaves delicately in this specific situation. Surd[x, n]
returns the $n$-th real root of $x$, but it requires that $n$ be an integer. If NDSolve
is fed any inexact coefficients, however, it will numericize everything -- including Surd
's second argument it turns out.
Thus, use exact arithmetic to define the variables in the equation:
t0 = 6/10;
tmax = 20;
σ = 4/100 t0;
a1 = -2/100;
a2 = -8/10;
And then use Surd[y[t]/t, 3]
in place of (y[t]/t)^(1/3)
:
s = NDSolve[D[x[t], t] + σ x[t] + a1/t0 Surd[y[t]/t, 3] == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == 1, y[t0] == 1, x, y, t,
t0, tmax]
This is also much faster to solve, likely because it doesn't encounter any abnormalities in the complex plane.
You can easily check that it matches up with the other solution (where the other solution is defined at all) by naming this solution something other than s
and plotting both x[t]
results on the same graph.
$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: "387"
;
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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
,
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%2fmathematica.stackexchange.com%2fquestions%2f191873%2fhow-can-i-get-results-over-the-whole-domain-of-my-non-linear-differential-equati%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$
Surd
is the solution, but it behaves delicately in this specific situation. Surd[x, n]
returns the $n$-th real root of $x$, but it requires that $n$ be an integer. If NDSolve
is fed any inexact coefficients, however, it will numericize everything -- including Surd
's second argument it turns out.
Thus, use exact arithmetic to define the variables in the equation:
t0 = 6/10;
tmax = 20;
σ = 4/100 t0;
a1 = -2/100;
a2 = -8/10;
And then use Surd[y[t]/t, 3]
in place of (y[t]/t)^(1/3)
:
s = NDSolve[D[x[t], t] + σ x[t] + a1/t0 Surd[y[t]/t, 3] == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == 1, y[t0] == 1, x, y, t,
t0, tmax]
This is also much faster to solve, likely because it doesn't encounter any abnormalities in the complex plane.
You can easily check that it matches up with the other solution (where the other solution is defined at all) by naming this solution something other than s
and plotting both x[t]
results on the same graph.
$endgroup$
add a comment |
$begingroup$
Surd
is the solution, but it behaves delicately in this specific situation. Surd[x, n]
returns the $n$-th real root of $x$, but it requires that $n$ be an integer. If NDSolve
is fed any inexact coefficients, however, it will numericize everything -- including Surd
's second argument it turns out.
Thus, use exact arithmetic to define the variables in the equation:
t0 = 6/10;
tmax = 20;
σ = 4/100 t0;
a1 = -2/100;
a2 = -8/10;
And then use Surd[y[t]/t, 3]
in place of (y[t]/t)^(1/3)
:
s = NDSolve[D[x[t], t] + σ x[t] + a1/t0 Surd[y[t]/t, 3] == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == 1, y[t0] == 1, x, y, t,
t0, tmax]
This is also much faster to solve, likely because it doesn't encounter any abnormalities in the complex plane.
You can easily check that it matches up with the other solution (where the other solution is defined at all) by naming this solution something other than s
and plotting both x[t]
results on the same graph.
$endgroup$
add a comment |
$begingroup$
Surd
is the solution, but it behaves delicately in this specific situation. Surd[x, n]
returns the $n$-th real root of $x$, but it requires that $n$ be an integer. If NDSolve
is fed any inexact coefficients, however, it will numericize everything -- including Surd
's second argument it turns out.
Thus, use exact arithmetic to define the variables in the equation:
t0 = 6/10;
tmax = 20;
σ = 4/100 t0;
a1 = -2/100;
a2 = -8/10;
And then use Surd[y[t]/t, 3]
in place of (y[t]/t)^(1/3)
:
s = NDSolve[D[x[t], t] + σ x[t] + a1/t0 Surd[y[t]/t, 3] == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == 1, y[t0] == 1, x, y, t,
t0, tmax]
This is also much faster to solve, likely because it doesn't encounter any abnormalities in the complex plane.
You can easily check that it matches up with the other solution (where the other solution is defined at all) by naming this solution something other than s
and plotting both x[t]
results on the same graph.
$endgroup$
Surd
is the solution, but it behaves delicately in this specific situation. Surd[x, n]
returns the $n$-th real root of $x$, but it requires that $n$ be an integer. If NDSolve
is fed any inexact coefficients, however, it will numericize everything -- including Surd
's second argument it turns out.
Thus, use exact arithmetic to define the variables in the equation:
t0 = 6/10;
tmax = 20;
σ = 4/100 t0;
a1 = -2/100;
a2 = -8/10;
And then use Surd[y[t]/t, 3]
in place of (y[t]/t)^(1/3)
:
s = NDSolve[D[x[t], t] + σ x[t] + a1/t0 Surd[y[t]/t, 3] == 0,
D[y[t], t] - a2 x[t]/t == 0, x[t0] == 1, y[t0] == 1, x, y, t,
t0, tmax]
This is also much faster to solve, likely because it doesn't encounter any abnormalities in the complex plane.
You can easily check that it matches up with the other solution (where the other solution is defined at all) by naming this solution something other than s
and plotting both x[t]
results on the same graph.
answered Feb 20 at 6:35
eyorbleeyorble
5,66311028
5,66311028
add a comment |
add a comment |
Thanks for contributing an answer to Mathematica 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%2fmathematica.stackexchange.com%2fquestions%2f191873%2fhow-can-i-get-results-over-the-whole-domain-of-my-non-linear-differential-equati%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
$begingroup$
Please do not post images of your work. Please post your actual Mathematica code in the form of text that can be copied and pasted into a Mathematica notebook. Without such, it will be difficult to reproduce your problem and to experiment with possible solutions.
$endgroup$
– m_goldberg
Feb 20 at 6:19