I'm aware of Newton's Shell Theorem, which states that inside of a thin ring of uniform density, the gravitational force exerted on a point mass should be zero.

I wrote a quick field simulation to demonstrate this, but am getting a force inside the ring. The potential (-GM/r) is zero, but the force on a test mass (-GM/r^2) is non-zero.

I'll post the relevant segments of my code below and a few screenshots. Any ideas what's going on?

Each point in the field accumulates the felt gravitational force from all masses comprising the ring (which is a large set of very closely spaced point masses):

void accumulateForce(Mass m){
    //Vector from test point towards individual ring mass
    double dx = m.x-x;   
    double dy = m.y-y;

    double lenSqd = dx*dx + dy*dy;
    double len = Math.sqrt(lenSqd);

    //Normalized direction of gravitational force
    double nx = dx/len;
    double ny = dy/len;

    //These variables accumulate the force from all ring masses
    fxAccum += nx*bigG*m.m/lenSqd;
    fyAccum += ny*bigG*m.m/lenSqd;

After this function has been executed for each point mass in the ring, the felt force at that location in the gravitational field is visualized.

Here's what the above code looks like: enter image description here

When I change the last 2 lines of code to:

fxAccum += nx*bigG*m.m/len;
fyAccum += ny*bigG*m.m/len;

The result is zero potential inside the ring, as expected:

enter image description here

Am I misinterpreting something here? A test mass inside of the ring will be pulled towards the edge. I thought Newton's shell method described zero gravitational force inside of the ring.

  • 4
    $\begingroup$ A ring is not a shell. $\endgroup$
    – Jon Custer
    Dec 16, 2015 at 0:54

1 Answer 1


Newton's shell theorem relies on Gauss's law, which in $d$ spatial dimensions implies a $r^{1-d}$ force law. Since $d=2$, the force should fall off as $1/r$.

This explains why OP's first plot (with an $1/r^2$ code) fails to produce a vanishing interior force, while OP's second plot (with an $1/r$ code) produces a vanishing interior force.

(Btw, the second plot should not be interpreted as potential energy. For starters, recall that potential energy is a scalar, not a vector.)


Not the answer you're looking for? Browse other questions tagged or ask your own question.