Solving the Pendulum Problem with RK4 Method

  • Context: Undergrad 
  • Thread starter Thread starter MASH4077
  • Start date Start date
  • Tags Tags
    Pendulum
Click For Summary
SUMMARY

The discussion centers on solving the Pendulum Problem using the RK4 method in a C++ simulator. The initial implementation incorrectly calculated acceleration as -(g/L) * theta, leading to unrealistic simulation behavior. The correct approach involves using sin(theta) for accurate results, particularly for larger angles. After addressing the calculation of acceleration based on initial conditions, the simulation stabilized and functioned as intended.

PREREQUISITES
  • Understanding of second-order differential equations
  • Familiarity with numerical integration methods, specifically RK4
  • Proficiency in C++ programming
  • Knowledge of trigonometric functions and their approximations
NEXT STEPS
  • Implement and analyze the RK4 method for other physical systems
  • Explore the effects of using sin(theta) versus theta in simulations
  • Learn about error analysis in numerical methods
  • Investigate alternative numerical integration techniques, such as Euler's method
USEFUL FOR

Developers and researchers in physics simulations, particularly those working with numerical methods and C++ programming, will benefit from this discussion.

MASH4077
Messages
12
Reaction score
0
Pendulum Problem...

Hi all,

I've written a little simulator (in C++) that demonstrates a simple pendulum swinging from right to left and back again. To simulate the motion I'm using the simple second order differential equation:

accelaration = -(g/L) * theta

and numerically integrating this using the RK4 method. However I'm having a problem in that the simulation is escaping really quickly. I just want to ask under what conditions would this happen?. I think I'm starting off the simulation with reasonable values and they are outlined below:

angle = 22.5, start angular_vel = 0.0f, init accel = calculated using above formula.

Any advice on why the simulation could be breaking so quickly is much appreciated.

Thanks.
 
Physics news on Phys.org


I am not saying that this is the problem with your program but the
acceleration cannot be g/L *theta. Maybe g*theta.
 


I may not understand the simulation, but I do have something that may be of interest. The expression you have, "acclereration = -(g/L)*theta" is an approximation. The true differential equation should have a sin(theta) rather than theta. The approximation only holds for small angles. Could this be the source of your "escaping"?

It would seem to me, that you are providing an acceleration that is greater than what nature would provide, and the larger the angle, the more inaccurate the model. Also, the approximation that sin(theta) ~ theta is only accurate if theta is given in radians. You're model therefore assumes you are using radians. Try a reasonable number for angle like 0.3 and see what you get. Or, you could change to sin(theta) and keep your numbers.
 


Yeah, Nasu is right too, but that L shouldn't really affect anything qualitatively.
 


jdog said:
It would seem to me, that you are providing an acceleration that is greater than what nature would provide, and the larger the angle, the more inaccurate the model.
Yup. I think that that is the problem for the simulation escaping. I realized this when I actually took another look at the implementation. I wasn't calculating the acceleration of the pendulum based on the initial conditions provided to the simulation, but rather I was just "feeding in" a value. I've just re-written that particular part to ensure that given the initial conditions, the correct value is assigned to the acceleration variable. Everything is now behaving as it should do.

Many Thanks.

:)
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
10K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 5 ·
Replies
5
Views
5K
  • · Replies 35 ·
2
Replies
35
Views
4K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 65 ·
3
Replies
65
Views
8K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 4 ·
Replies
4
Views
17K