# Do the planets really orbit the Sun?

We often say that the planets orbit the Sun, which is usually a reasonable approximation. But in reality both Sun and the planets orbit the center-of-mass/center-of-gravity of the whole solar system, not the center of the sun.

The Sun is by far the most massive body in the solar system, so it's plausible that the center-of-gravity lies within it. On the other hand Jupiter is rather massive as well and pretty far from the Sun. Thus the center-of-mass might not actually be inside the Sun, only near it. The influence of Saturn might not be negligible either.

• Of course, in the N-body problem (with N>2), " orbits" are an approximation. The solar system apparently is quite stable; Earth is unlikely to be ejected in our lifetimes. – MSalters Jun 5 '15 at 10:36
• Yes - the planets really do orbit the sun - in accordance with the law of universal attraction (which means they each exert a force on each other which can distort a circular orbit.) – Tracy Cramer Jun 5 '15 at 21:34
• Since the Earth and other smaller planets are orbiting a barycenter which is moving about somewhat chaotically, wouldn't that have a tendency to destabilize their orbits, or induce significant long-term changes, or make them difficult/impossible to model accurately? Or have the orbits all found stable "homes"? – Anthony X Jun 6 '15 at 22:49
• I think that the assumptions in the question or the top-voted answer are quite misleading. See this question on physics.SE: physics.stackexchange.com/questions/188650/… – Cedric H. Jun 10 '15 at 12:35

You are correct, the centre of the Sun is not the Solar System's centre of gravity.

A diagram (courtesy Wikimedia Commons), showing how the barycentre of the Solar System has changed over time.

The Sun is affected by the gravity of all planets in the Solar System, but you are right, it is most affected by the two most massive ones; Jupiter and Saturn. You can see in this animation (a representation, not a simulation), how two bodies affect each other in a normal orbit like that between the Earth and the Sun:

Courtesy Wikimedia

Apply this relation to every body in the Solar System (adjusting for mass and distance of course) and you get a rough idea of how the Sun is affected by the rest of the Solar System.

Due to this somewhat chaotic dance the centre of mass of the Solar System continuously moves around, sometimes under the Sun's surface and sometimes outside it. The further away from the centre of the Sun this barycentre is, the more the Sun appears to oscillate.

Another example of this phenomenon is the Pluto-Charon system:

Courtesy Wikimedia.

Charon is about one-tenth the mass of Pluto (thank you for the correction @Hobbes), and yet exerts a significant gravitational pull on Pluto. Hence they both orbit around the centre-of-gravity of their system, well outside the surface of Pluto.

Bonus: We use this phenomenon to find planets outside the Solar System! If a distant star is observed to 'wobble' or oscillate about it's mean position, we can use that data to infer the presence of one or more exoplanets, and calculate their mass.

• That first diagram, of how the barycenter moves relative to the sun, is pretty cool. While I read that it's sometimes inside and sometimes outside the sun, I didn't expect it to vary that much. – CodesInChaos Jun 5 '15 at 7:54
• I can't verify the scale of the diagram @CodesInChaos, but the variation is quite significant :) – Vedant Chandra Jun 5 '15 at 8:14
• Can the wobbling of a distant star really be measured directly? At the multiple light years distances we are talking about, I'd expect the movement across the sky to be too small a fraction of a degree to be measurable. I recall being told that the wobbling is measured indirectly through the Doppler shift. – kasperd Jun 6 '15 at 9:33
• @kasperd Exactly, it's still a rough measurement though. – Vedant Chandra Jun 6 '15 at 10:32
• Solar System Live shows where the planets were on a given date. On June 1 1990 all the outer planets except Jupiter were within 15 degrees of each other on one side of the sun, with Jupiter directly across from them. Result: the barycenter was almost dead center inside the sun on that date. – kim holder Jun 6 '15 at 15:26

Using the approximation

$$\Delta \mathrm{center}=\frac{m_p}{m_\odot}\cdot\frac{\mathrm{dist}_p}{r_\odot}$$

Name       Distance   Mass/[kg]  Mass       Distance   ΔCenter
/km        /kg        /sun mass  /sun radius
--------------------------------------------------------------
Sun        0.00E+000  1.99E+030  1.00E+000  0.00E+000  0.00000
Mercury    5.79E+007  3.30E+023  1.66E-007  8.32E+001  0.00001
Venus      1.08E+008  4.87E+024  2.45E-006  1.55E+002  0.00038
Earth      1.50E+008  5.97E+024  3.00E-006  2.15E+002  0.00065
Mars       2.28E+008  6.42E+023  3.23E-007  3.27E+002  0.00011
Jupiter    7.78E+008  1.90E+027  9.55E-004  1.12E+003  1.06735
Saturn     1.43E+009  5.69E+026  2.86E-004  2.05E+003  0.58576
Uranus     2.87E+009  8.68E+025  4.37E-005  4.12E+003  0.18007
Neptune    4.50E+009  1.02E+026  5.15E-005  6.46E+003  0.33278


Which sums to a shift of 2.17 sun radii if all planets were aligned. Jupiter clearly dominates (about half of the total effect) and would be enough to move the center-of-gravity outside the sun. Only the heavy outer planets (Jupiter, Saturn, Uranus, Neptune) have a non negligible influence.

C# source code for reproducibility:

void Main()
{
// http://en.wikipedia.org/wiki/List_of_gravitationally_rounded_objects_of_the_Solar_System
Body[] planets={
new Body{Name="Mercury",Distance=57909175,Mass=3.302E23},
new Body{Name="Venus",Distance=108208930,Mass=4.8690E24},
new Body{Name="Earth",Distance=149597890,Mass=5.9742E24},
new Body{Name="Mars",Distance=227936640,Mass=6.4191E23},
new Body{Name="Jupiter",Distance=778412010,Mass=1.8987E27},
new Body{Name="Saturn",Distance=1426725400,Mass=5.6851E26},
new Body{Name="Uranus",Distance=2870972200,Mass=8.6849E25},
new Body{Name="Neptune",Distance=4498252900,Mass=1.0244E26},
};
var bodies=new[]{Sun}.Concat(planets);
bodies.Select(planet=>new{
Name=planet.Name,
Distance=planet.Distance.ToString("E2"),
Mass=planet.Mass.ToString("E2"),
MassInSuns=planet.MassInSuns.ToString("E2"),
CenterOfGravityShift=planet.CenterOfGravityShift.ToString("n5")
}).Dump();
}

static Body Sun=new Body{Name="Sun",Distance=0,Mass=1.98855E30};

class Body
{
public string Name{get;set;}
public double Distance{get;set;}// in km
public double Mass{get;set;}// in kg

public double MassInSuns{get{return Mass/Sun.Mass;}}