Solving the Three Body Problem With Python

Rhett Allain
9 min readMar 10, 2023
Image: Rhett Allain. Stable 3 Body Motion

Yes, it’s time for the famous Three Body Problem. How do you model the motion of three objects interacting gravitational (those are the 3 bodies)? Well, let’s jump back for a second. How do you model just TWO objects with a gravitational interaction?

The Two Body Problem

Here are two planets (or stars — it doesn’t matter, you pick).

With the vector from planet A to B (r_AB), I can calculate the gravitational force on B as:

Just to be clear, I’m using notation that F_AB is the force ON B due to A. With that, the force on A (due to B) is just the negative of this vector. Now, let’s say that we break this planet motion into “short” time intervals (Δt) — and by “short” I mean that it’s short enough that we can approximate the forces as being constant during this time. Depending on the initial conditions this time interval could be as short as a minute or maybe as long as an hour (or more even).

Suppose planet B starts with a momentum p_B1. Since we know the force acting on it (and assuming this force is constant) we can use the momentum principle to find the momentum at the end of the time…



Rhett Allain

Physics faculty, science blogger of all things geek. Technical Consultant for CBS MacGyver and MythBusters. WIRED blogger.