Is there a simpler way of finding the circumference of an ellipse?

1k Views Asked by At

I found this formula for the circumference of an ellipse:

$$4aE(e)$$

where

$$e = \sqrt{1-\frac{b^2}{a^2}}$$

and

$$E(x) = \int_{0}^{\pi/2}\sqrt{1-x^2\sin^2\theta}\;d\theta$$

$a$ is the semi-major axis (or, in other words, the maximum radius), and $b$ is the semi-minor axis (minimum radius).

Now somehow, this is related to $2\pi r$ for the circumference of a circle.

Is there an easier way to find the circumference of an ellipse than to do this integral? Because I can't do integrals yet.

I can do square roots, but not integrals; and square roots in integrals are even harder than integrals themselves. Okay, so, technically, I can do integrals, but only the antiderivative kind of integral.

In other words I could do this:

$$\int x = x^2$$

But a definite integral is one of the kinds I can't do.

So, is there a way that I can more easily find the circumference of an ellipse? Would I need to know the circle it could have come from and that circumference and then scale that circle circumference by whatever factor made the circle an ellipse?

2

There are 2 best solutions below

3
On

If $a$ and $b$ are positive real numbers, the perimeter of the ellipse $$ \frac{x^{2}}{a^{2}} + \frac{y^{2}}{b^{2}} = 1 $$ can be expressed (in multiple forms) as an arc length integral, such as $$ P(a, b) = \int_{0}^{2\pi} \sqrt{a^{2} \cos^{2} t + b^{2} \sin^{2} t}\, dt. \tag{1} $$ If $a = b$, the ellipse is a circle, of perimeter $2\pi a$.

If $a \neq b$, the elliptic integral (1) is not an elementary function of $a$ and $b$. Loosely, there is no closed-form algebraic expression for the perimeter of a non-circular ellipse in terms of arithmetic operations, radicals, exponentials and logs, or circular functions.

1
On

You say you can't do integrals. Perhaps you just need the right tools. With Python and mpmath, for example, you can do

def E(x):
    return quad(lambda θ: sqrt(1 - x ** 2 * sin(θ) ** 2), [0, pi / 2])

a = 10
b = 5
e = sqrt(1 - b ** 2 / a ** 2)
print(4 * a * E(e))

which prints 48.4422411027384.