@@samsaraAI2025 Your time integration is not conservative. The numerical discretisation is "leaking" energy. Use a 4th-order Runge-Kutta or a time-implicit method like backwards-Euler.
I've recently started simulating double and triple pendula. I use Maxima to generate the necessary ODEs from the Lagrangian and then feed them to the rk(RK4 iterator) function. That way I can avoid coding the haywire ODE directly. I check the mechanical energy drift to see if the calculation is dissipative.
i think video would reach wider audience if there was something about constraints and rope/cloth in the title. Most people aren't interested particularly in pendula
This is fascinating. I've written a 2D gas flow simulator which was relatively easy, and it exhibits patterns you'd see if you were watching water flowing flowing through a similar shape where the height of the water is analogous to the pressure of the gas at any given point. One thing interests me greatly though: From the path of the end point, what method would you use for working out the structure of the pendulum? ie, how many links and which weights? I have a reason for wanting to know how to do that. It's essentially reverse engineering a chaotic pattern which of course has multiple applications, preferably without doing a brute force method.
I made the same algorithm using c#. It works but I can see a global dumping of the energy even with a single pendulum. What could be the reason? Thanks!
You can measure the energy loss and add it evenly to the particles. However, objects are typically highly damped so instead of pumping energy into the system, extra damping terms are added to the equations in general.
@@TenMinutePhysics That's not a good advice. Compensating energy errors by arbitrarily modifying the energy will generate errors - it is not symplectic, it is not time reversible and it will not exhibit a correct behavior in phase space. Masking numerical errors with damping effects is not really an option if your system is supposed to be energy-preserving To conserve energy with less time steps, you'll obviously want to use higher order symplectic integrators.
@@Zymplectic Yes, that is not really physically correct. Some people have done it in graphics. However, as I said, the real strength of PBD is not energy conservation but robust handling of zero-compliance constraints and simplicity. In the real world, nearly energy conserving systems are rare. In contrast, most objects are highly damped which is the reason why additional damping terms are used significantly higher than the numerical damping introduced by implicit integrators. In contrast, stretchy cloth looks really bad - if not intended :-)
@@TenMinutePhysics It wasn't a critique of the video which is on point, but merely to the "out of context"-point of arbitrarily adding energy to compensate for dissipative numerical errors. The real world being "inaccurate" does not prevent us from making accurate energy-preserving simulations though. I'd agree that energy conservation is typically not what you want for cloth simulations. Unless the cloth is floating in space...
In code you subtract the actual distance *from* the rest distance (L0 - L), but in the mathematical equation you show subtracting the rest distance *from* the actual distance (L - L0). This is quite confusing.
When I first implemented a double pendulum (using analytical equations) I thought I'm "stimulating" it. But that wasn't true of course. At least if we don't consider the integration part. I then tested Euler method vs RK4, to see which is more stable. It would be interesting to see which is faster (amount of operations vs. substeps)
Damn... So, there's no analytic solution to the derivative of a 2 pendulum problem. I feel sad when I see you're sim diverge from the analytic path. I wish we could simulate reality a bit more accurately for personal reasons. I understand for games and practical applications, the accuracy is good enough with numerical methods.
Great explanation :)
There is a small typo in the equation at 2:37 though, weights should be divided by w1+ w2, not w1 + w1.
I think it would be good to plot the total energy of the system in time. This would help us understand whether the solution is dissipative or not.
I am loosing energy, even with a single pendulum what could be the reason?
@@samsaraAI2025 Your time integration is not conservative. The numerical discretisation is "leaking" energy.
Use a 4th-order Runge-Kutta or a time-implicit method like backwards-Euler.
@@samsaraAI2025 Euler integrations are approximations for non-infinitesimal dt.
Thank you for this great tutorial.
Thank you for this great tutorial. Seeing that match of the trajectory with the analytic method is amazing.
You are my lord and saviour Matthias!!!
May the physics be with you ;-)
I've recently started simulating double and triple pendula. I use Maxima to generate the necessary ODEs from the Lagrangian and then feed them to the rk(RK4 iterator) function. That way I can avoid coding the haywire ODE directly. I check the mechanical energy drift to see if the calculation is dissipative.
Super cool video, got it working great in python too - thanks very much.
i think video would reach wider audience if there was something about constraints and rope/cloth in the title. Most people aren't interested particularly in pendula
Merci, guets tutorial.
You should be able to estimate the error by solving with two different step sizes.
That works for any number of links.
wonderful :)
This is fascinating. I've written a 2D gas flow simulator which was relatively easy, and it exhibits patterns you'd see if you were watching water flowing flowing through a similar shape where the height of the water is analogous to the pressure of the gas at any given point. One thing interests me greatly though: From the path of the end point, what method would you use for working out the structure of the pendulum? ie, how many links and which weights? I have a reason for wanting to know how to do that. It's essentially reverse engineering a chaotic pattern which of course has multiple applications, preferably without doing a brute force method.
I made the same algorithm using c#. It works but I can see a global dumping of the energy even with a single pendulum. What could be the reason? Thanks!
This is beautiful. Are there any books to learn this stuff? Could you enumerate some, please? Thanks in advance
Awesome!
Thanks !! subscribed
Is there a simple way to make sure energy is conserved, even with less steps?
You can measure the energy loss and add it evenly to the particles. However, objects are typically highly damped so instead of pumping energy into the system, extra damping terms are added to the equations in general.
@@TenMinutePhysics That's not a good advice. Compensating energy errors by arbitrarily modifying the energy will generate errors - it is not symplectic, it is not time reversible and it will not exhibit a correct behavior in phase space.
Masking numerical errors with damping effects is not really an option if your system is supposed to be energy-preserving
To conserve energy with less time steps, you'll obviously want to use higher order symplectic integrators.
@@Zymplectic Yes, that is not really physically correct. Some people have done it in graphics. However, as I said, the real strength of PBD is not energy conservation but robust handling of zero-compliance constraints and simplicity. In the real world, nearly energy conserving systems are rare. In contrast, most objects are highly damped which is the reason why additional damping terms are used significantly higher than the numerical damping introduced by implicit integrators. In contrast, stretchy cloth looks really bad - if not intended :-)
@@TenMinutePhysics It wasn't a critique of the video which is on point, but merely to the "out of context"-point of arbitrarily adding energy to compensate for dissipative numerical errors.
The real world being "inaccurate" does not prevent us from making accurate energy-preserving simulations though. I'd agree that energy conservation is typically not what you want for cloth simulations. Unless the cloth is floating in space...
In code you subtract the actual distance *from* the rest distance (L0 - L), but in the mathematical equation you show subtracting the rest distance *from* the actual distance (L - L0). This is quite confusing.
Your hard constraint of position method does not conserve angular momentum. You should adjust the tangential velocities as you move the particles.
When I first implemented a double pendulum (using analytical equations) I thought I'm "stimulating" it. But that wasn't true of course.
At least if we don't consider the integration part.
I then tested Euler method vs RK4, to see which is more stable.
It would be interesting to see which is faster (amount of operations vs. substeps)
Damn... So, there's no analytic solution to the derivative of a 2 pendulum problem. I feel sad when I see you're sim diverge from the analytic path. I wish we could simulate reality a bit more accurately for personal reasons. I understand for games and practical applications, the accuracy is good enough with numerical methods.
good but you shoud delete the video, because i'm about to do so much better