After writing the previous post, I wondered where else you might be able to use *r*-means to create accurate approximations. I thought maybe this would apply to the surface area of an ellipsoid, and a little searching around showed that Knud Thomsen thought of this in 2004.

The general equation for the surface of an ellipsoid is

If two of the denominators {*a*, *b*, *c*} are equal then there are formulas for the area in terms of elementary functions. But in general, the area requires special functions known as “incomplete elliptic integrals.” For more details, see this post.

Here I want to focus on Knud Thomsen’s approximation for the surface area and its connection to the previous post.

The previous post reported that the perimeter of an ellipse is 2π*r* where *r* is the *effective radius*. An ellipse doesn’t have a *radius* unless it’s a circle, but we can define something that acts like a radius by defining it to be the perimeter over 2π. It turns out that

makes a very good approximation for the effective radius where *x* = (*a*, *b*).

Here

using the notation of Hardy, Littlewood, and Pólya.

This suggests we define an effective radius for an ellipsoid and look for an approximation to the effective radius in terms of an *r*-mean. The area of a sphere is 4π*r*², so we define the effective radius of an ellipsoid as the square root of its surface area divided by 4π. So the effective radius of a sphere is its radius.

Thomsen found that

where *x* = (*ab*, *bc*, *ac*) and *p* = 1.6. More explicitly,

Note that it’s the *square* of the effective radius that is an *r*-mean, and that the argument to the mean is not simply (*a*, *b*, *c*). I would have naively tried looking for a value of *p* so that the *r*-mean of (*a*, *b*, *c*) gives a good approximation to the effective radius. In hindsight, it makes sense in terms of dimensional analysis that the inputs to the mean have units of area, and so the output has units of area.

The maximum relative error in Thomsen’s approximation is 1.178% with *p* = 1.6. You can tweak the value of *p* to reduce the worst-case error, but the value of 1.6 is optimal for approximately spherical ellipsoids.

For an example, let’s compute the surface area of Saturn, the planet with the largest equatorial bulge in our solar system. Saturn is an oblate spheroid with equatorial diameter about 11% greater than its polar diameter.

Assuming Saturn is a perfect ellipsoid, Thomsen’s approximation over-estimates its surface area by about 4 parts per million. By comparison, approximating Saturn as a sphere under-estimates its area by 2 parts per thousand. The code for these calculations, based on the code here, is given at the bottom of the post.

## Related posts

## Appendix: Python code

from numpy import pi, sin, cos, arccos from scipy.special import ellipkinc, ellipeinc # Saturn in km equatorial_radius = 60268 polar_radius = 54364 a = b = equatorial_radius c = polar_radius phi = arccos(c/a) m = 1 temp = ellipeinc(phi, m)*sin(phi)**2 + ellipkinc(phi, m)*cos(phi)**2 ellipsoid_area = 2*pi*(c**2 + a*b*temp/sin(phi)) def rmean(r, x): n = len(x) return (sum(t**r for t in x)/n)**(1/r) approx_ellipsoid_area = 4*pi*rmean(1.6, (a*b, b*c, a*c)) r = (a*b*c)**(1/3) sphere_area = 4*pi*r**2 def rel_error(exact, approx): return (exact-approx)/approx print( rel_error(ellipsoid_area, sphere_area) ) print( rel_error(ellipsoid_area, approx_ellipsoid_area) )

Let m = (a*math.sqrt(b**2-c**2)/(b*math.sqrt(a**2-c**2)))**2 and you’ll get better (exact) answer, much closer to your approximation.