What is the difference between RungeKuttaFehlberg method, and the RungeKutta4th order method?
Any information on RungeKuttaFehlberg would be appreciated.
RungeKuttaFehlberg
Page 1 of 12 Replies  9880 Views  Last Post: 07 May 2009  02:07 PM
Replies To: RungeKuttaFehlberg
#2
Re: RungeKuttaFehlberg
Posted 24 April 2009  07:30 PM
#6
Re: RungeKuttaFehlberg
Posted 07 May 2009  02:07 PM
The wikipedia link already posted is a good start, however it only describes the RungeKuttaFehlberg 4/5 method (which seems to be pretty commonly described on the web). There are also other higher order RKF methods, such as the RKF 7/8 which is actually what I was looking for info on when I came across this question. Since I've been fiddling around with this lately, I'll add a bit.
The common workhorse RungeKutta 4th order (RK4) method makes 4 evaluations of the derivative function per integration step. One at the start, to compute a first trial midpoint value, then an updated trial midpoint value, then the endpoint.
As described in the Wiki page, the RKF45 method makes 6 derivative evaluations per step and offers both a 4th and 5th order correct evaluation (and also can use the difference between these to estimate an "optimal" stepsize). As a result, you are doing more computations per step, but this allows you to take longer steps with less loss of accuracy; meaning you might be able to evaluate your complete integral with a net total of fewer derivative evaluations.
As an example of this accuracy difference (as part of work I'm doing anyway), I did a propagation of a basic 2body satellite orbit using both an RK4 and an RKF45 integrator with fixed stepsizes and compared the results to the "true" answer. The basic differential equation was the vector equation (16) here. I used several orbit geometries but a representative one was a Molniya orbit. Here are the initial values:
GM = 398600.4418 (km^3/sec^2)
r0 = (38.579423163318772, 3079.5067011131969, 6150.1153401116208) km
v0 = (10.043728537553161, .12582575425073264, 0.0) km/sec
This orbit has the following classical orbital elements:
Semimajor Axis = 26553.374572 km
Eccentricity = 0.74096938
Inclination = 63.4 degrees
Right Ascension of Ascending Node = 0.71775213 degrees
Arg of Periapsis = 270.0 degrees
True Anomaly (initial) = 0.0 degrees
After propagating forward 24 hours (86400 seconds), the "correct" position should be:
rf = (2700.5334624649154, 2972.8615768087243, 5868.6464836395999) km
vf=(9.6115971235305722, 0.874136859652542731, 1.9859125480560684)km/s
Propagating with a straight RK4 integrator with a 30 second stepsize gave me a final vector that was off from this by about 97 meters. Doing the same prop with the same stepsize with the RKF45 5th order accurate result gave a final error of about 4.4 meters. That's the difference. A higher order integrator would probably give an even lower error still with the same step size.
The common workhorse RungeKutta 4th order (RK4) method makes 4 evaluations of the derivative function per integration step. One at the start, to compute a first trial midpoint value, then an updated trial midpoint value, then the endpoint.
As described in the Wiki page, the RKF45 method makes 6 derivative evaluations per step and offers both a 4th and 5th order correct evaluation (and also can use the difference between these to estimate an "optimal" stepsize). As a result, you are doing more computations per step, but this allows you to take longer steps with less loss of accuracy; meaning you might be able to evaluate your complete integral with a net total of fewer derivative evaluations.
As an example of this accuracy difference (as part of work I'm doing anyway), I did a propagation of a basic 2body satellite orbit using both an RK4 and an RKF45 integrator with fixed stepsizes and compared the results to the "true" answer. The basic differential equation was the vector equation (16) here. I used several orbit geometries but a representative one was a Molniya orbit. Here are the initial values:
GM = 398600.4418 (km^3/sec^2)
r0 = (38.579423163318772, 3079.5067011131969, 6150.1153401116208) km
v0 = (10.043728537553161, .12582575425073264, 0.0) km/sec
This orbit has the following classical orbital elements:
Semimajor Axis = 26553.374572 km
Eccentricity = 0.74096938
Inclination = 63.4 degrees
Right Ascension of Ascending Node = 0.71775213 degrees
Arg of Periapsis = 270.0 degrees
True Anomaly (initial) = 0.0 degrees
After propagating forward 24 hours (86400 seconds), the "correct" position should be:
rf = (2700.5334624649154, 2972.8615768087243, 5868.6464836395999) km
vf=(9.6115971235305722, 0.874136859652542731, 1.9859125480560684)km/s
Propagating with a straight RK4 integrator with a 30 second stepsize gave me a final vector that was off from this by about 97 meters. Doing the same prop with the same stepsize with the RKF45 5th order accurate result gave a final error of about 4.4 meters. That's the difference. A higher order integrator would probably give an even lower error still with the same step size.
Page 1 of 1
