Runge-Kutta fourth order with negative stepsize
I am solving an ODE using the Runge-Kutta method 4th order and the integration is backward i.e step size ($h$) is negative. All the references that I have seen consider the positive step size.
Is it ok to change $h$ to $-h$ in Runge-Kutta method or is there any change in sign in $K$ values?
differential-equations numerical-methods runge-kutta-methods
add a comment |
I am solving an ODE using the Runge-Kutta method 4th order and the integration is backward i.e step size ($h$) is negative. All the references that I have seen consider the positive step size.
Is it ok to change $h$ to $-h$ in Runge-Kutta method or is there any change in sign in $K$ values?
differential-equations numerical-methods runge-kutta-methods
No, if you do it consistently, then there should be no change. Also check your loop conditions, going backwards is not as intuitive as going forward.
– LutzL
Nov 24 at 12:18
You mean there is no change in equations and I can use -h instead of h. Can you give me any references.
– mageshwaran T
Nov 24 at 13:39
I do not know where this is explicitly stated, Hairer-Norsett-Wanner is always a good reference to look into. If you have a procedurey_next = rk4step(f,t,y,h)
that works correctly for positiveh
, then it works also correctly for negativeh
. Remember that the time step remainst_next = t+h
.
– LutzL
Nov 24 at 13:42
add a comment |
I am solving an ODE using the Runge-Kutta method 4th order and the integration is backward i.e step size ($h$) is negative. All the references that I have seen consider the positive step size.
Is it ok to change $h$ to $-h$ in Runge-Kutta method or is there any change in sign in $K$ values?
differential-equations numerical-methods runge-kutta-methods
I am solving an ODE using the Runge-Kutta method 4th order and the integration is backward i.e step size ($h$) is negative. All the references that I have seen consider the positive step size.
Is it ok to change $h$ to $-h$ in Runge-Kutta method or is there any change in sign in $K$ values?
differential-equations numerical-methods runge-kutta-methods
differential-equations numerical-methods runge-kutta-methods
edited Nov 24 at 12:20
LutzL
55.4k42053
55.4k42053
asked Nov 24 at 11:41
mageshwaran T
91
91
No, if you do it consistently, then there should be no change. Also check your loop conditions, going backwards is not as intuitive as going forward.
– LutzL
Nov 24 at 12:18
You mean there is no change in equations and I can use -h instead of h. Can you give me any references.
– mageshwaran T
Nov 24 at 13:39
I do not know where this is explicitly stated, Hairer-Norsett-Wanner is always a good reference to look into. If you have a procedurey_next = rk4step(f,t,y,h)
that works correctly for positiveh
, then it works also correctly for negativeh
. Remember that the time step remainst_next = t+h
.
– LutzL
Nov 24 at 13:42
add a comment |
No, if you do it consistently, then there should be no change. Also check your loop conditions, going backwards is not as intuitive as going forward.
– LutzL
Nov 24 at 12:18
You mean there is no change in equations and I can use -h instead of h. Can you give me any references.
– mageshwaran T
Nov 24 at 13:39
I do not know where this is explicitly stated, Hairer-Norsett-Wanner is always a good reference to look into. If you have a procedurey_next = rk4step(f,t,y,h)
that works correctly for positiveh
, then it works also correctly for negativeh
. Remember that the time step remainst_next = t+h
.
– LutzL
Nov 24 at 13:42
No, if you do it consistently, then there should be no change. Also check your loop conditions, going backwards is not as intuitive as going forward.
– LutzL
Nov 24 at 12:18
No, if you do it consistently, then there should be no change. Also check your loop conditions, going backwards is not as intuitive as going forward.
– LutzL
Nov 24 at 12:18
You mean there is no change in equations and I can use -h instead of h. Can you give me any references.
– mageshwaran T
Nov 24 at 13:39
You mean there is no change in equations and I can use -h instead of h. Can you give me any references.
– mageshwaran T
Nov 24 at 13:39
I do not know where this is explicitly stated, Hairer-Norsett-Wanner is always a good reference to look into. If you have a procedure
y_next = rk4step(f,t,y,h)
that works correctly for positive h
, then it works also correctly for negative h
. Remember that the time step remains t_next = t+h
.– LutzL
Nov 24 at 13:42
I do not know where this is explicitly stated, Hairer-Norsett-Wanner is always a good reference to look into. If you have a procedure
y_next = rk4step(f,t,y,h)
that works correctly for positive h
, then it works also correctly for negative h
. Remember that the time step remains t_next = t+h
.– LutzL
Nov 24 at 13:42
add a comment |
1 Answer
1
active
oldest
votes
If you have a procedure
y_next = rk4step(f,t,y,h)
that works correctly for positive h
, then this same procedure also works correctly for negative h
. Remember that the time step remains
t_next = t+h
The only problem that may arise is the control of the loop. If the sampling times are given as array, then the loop
for k in range(1,len(t)):
y[k] = rk4step(f,t[k-1],y[k-1], t[k]-t[k-1])
will work independent of the direction of the time sample points.
If the loop control is based on the end time, then while t < tf
works for positive h
, for negative h
one has to switch the sign or include h
as in while 0<(tf-t)*h
.
Thanks for the answer. My only worry is the signs within K's . Is h needs to be multiplied to all K's or just at the end while calculating y_next.
– mageshwaran T
Nov 24 at 14:14
As I said, you use the same sequence of computations as for positive $h$, the RK4 step does not depend on the sign of $h$. If you usek.. = h*f(..)
or shift the multiplication withh
to the combinations of thek
,y_next = y + h*(k...)
does not matter, as long as you use only one variant of these.
– LutzL
Nov 24 at 14:37
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%2f3011452%2frunge-kutta-fourth-order-with-negative-stepsize%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
If you have a procedure
y_next = rk4step(f,t,y,h)
that works correctly for positive h
, then this same procedure also works correctly for negative h
. Remember that the time step remains
t_next = t+h
The only problem that may arise is the control of the loop. If the sampling times are given as array, then the loop
for k in range(1,len(t)):
y[k] = rk4step(f,t[k-1],y[k-1], t[k]-t[k-1])
will work independent of the direction of the time sample points.
If the loop control is based on the end time, then while t < tf
works for positive h
, for negative h
one has to switch the sign or include h
as in while 0<(tf-t)*h
.
Thanks for the answer. My only worry is the signs within K's . Is h needs to be multiplied to all K's or just at the end while calculating y_next.
– mageshwaran T
Nov 24 at 14:14
As I said, you use the same sequence of computations as for positive $h$, the RK4 step does not depend on the sign of $h$. If you usek.. = h*f(..)
or shift the multiplication withh
to the combinations of thek
,y_next = y + h*(k...)
does not matter, as long as you use only one variant of these.
– LutzL
Nov 24 at 14:37
add a comment |
If you have a procedure
y_next = rk4step(f,t,y,h)
that works correctly for positive h
, then this same procedure also works correctly for negative h
. Remember that the time step remains
t_next = t+h
The only problem that may arise is the control of the loop. If the sampling times are given as array, then the loop
for k in range(1,len(t)):
y[k] = rk4step(f,t[k-1],y[k-1], t[k]-t[k-1])
will work independent of the direction of the time sample points.
If the loop control is based on the end time, then while t < tf
works for positive h
, for negative h
one has to switch the sign or include h
as in while 0<(tf-t)*h
.
Thanks for the answer. My only worry is the signs within K's . Is h needs to be multiplied to all K's or just at the end while calculating y_next.
– mageshwaran T
Nov 24 at 14:14
As I said, you use the same sequence of computations as for positive $h$, the RK4 step does not depend on the sign of $h$. If you usek.. = h*f(..)
or shift the multiplication withh
to the combinations of thek
,y_next = y + h*(k...)
does not matter, as long as you use only one variant of these.
– LutzL
Nov 24 at 14:37
add a comment |
If you have a procedure
y_next = rk4step(f,t,y,h)
that works correctly for positive h
, then this same procedure also works correctly for negative h
. Remember that the time step remains
t_next = t+h
The only problem that may arise is the control of the loop. If the sampling times are given as array, then the loop
for k in range(1,len(t)):
y[k] = rk4step(f,t[k-1],y[k-1], t[k]-t[k-1])
will work independent of the direction of the time sample points.
If the loop control is based on the end time, then while t < tf
works for positive h
, for negative h
one has to switch the sign or include h
as in while 0<(tf-t)*h
.
If you have a procedure
y_next = rk4step(f,t,y,h)
that works correctly for positive h
, then this same procedure also works correctly for negative h
. Remember that the time step remains
t_next = t+h
The only problem that may arise is the control of the loop. If the sampling times are given as array, then the loop
for k in range(1,len(t)):
y[k] = rk4step(f,t[k-1],y[k-1], t[k]-t[k-1])
will work independent of the direction of the time sample points.
If the loop control is based on the end time, then while t < tf
works for positive h
, for negative h
one has to switch the sign or include h
as in while 0<(tf-t)*h
.
answered Nov 24 at 13:50
LutzL
55.4k42053
55.4k42053
Thanks for the answer. My only worry is the signs within K's . Is h needs to be multiplied to all K's or just at the end while calculating y_next.
– mageshwaran T
Nov 24 at 14:14
As I said, you use the same sequence of computations as for positive $h$, the RK4 step does not depend on the sign of $h$. If you usek.. = h*f(..)
or shift the multiplication withh
to the combinations of thek
,y_next = y + h*(k...)
does not matter, as long as you use only one variant of these.
– LutzL
Nov 24 at 14:37
add a comment |
Thanks for the answer. My only worry is the signs within K's . Is h needs to be multiplied to all K's or just at the end while calculating y_next.
– mageshwaran T
Nov 24 at 14:14
As I said, you use the same sequence of computations as for positive $h$, the RK4 step does not depend on the sign of $h$. If you usek.. = h*f(..)
or shift the multiplication withh
to the combinations of thek
,y_next = y + h*(k...)
does not matter, as long as you use only one variant of these.
– LutzL
Nov 24 at 14:37
Thanks for the answer. My only worry is the signs within K's . Is h needs to be multiplied to all K's or just at the end while calculating y_next.
– mageshwaran T
Nov 24 at 14:14
Thanks for the answer. My only worry is the signs within K's . Is h needs to be multiplied to all K's or just at the end while calculating y_next.
– mageshwaran T
Nov 24 at 14:14
As I said, you use the same sequence of computations as for positive $h$, the RK4 step does not depend on the sign of $h$. If you use
k.. = h*f(..)
or shift the multiplication with h
to the combinations of the k
, y_next = y + h*(k...)
does not matter, as long as you use only one variant of these.– LutzL
Nov 24 at 14:37
As I said, you use the same sequence of computations as for positive $h$, the RK4 step does not depend on the sign of $h$. If you use
k.. = h*f(..)
or shift the multiplication with h
to the combinations of the k
, y_next = y + h*(k...)
does not matter, as long as you use only one variant of these.– LutzL
Nov 24 at 14:37
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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.
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%2f3011452%2frunge-kutta-fourth-order-with-negative-stepsize%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
No, if you do it consistently, then there should be no change. Also check your loop conditions, going backwards is not as intuitive as going forward.
– LutzL
Nov 24 at 12:18
You mean there is no change in equations and I can use -h instead of h. Can you give me any references.
– mageshwaran T
Nov 24 at 13:39
I do not know where this is explicitly stated, Hairer-Norsett-Wanner is always a good reference to look into. If you have a procedure
y_next = rk4step(f,t,y,h)
that works correctly for positiveh
, then it works also correctly for negativeh
. Remember that the time step remainst_next = t+h
.– LutzL
Nov 24 at 13:42