17. Arc length and surfaces of revolution

📖 Reading · 9 min
💡 Every code box below is live — edit it and hit Run.

Every application so far has measured area or volume. This lesson measures something more basic: the length of a curve that isn't a straight line. The technique — approximate with straight pieces, then take a limit — is the same Riemann-sum pattern from §4.1, applied to the Pythagorean theorem instead of to a rectangle's area.

Building the formula

Approximate the curve y=f(x) on [a,b] with a polygon: chop [a,b] into n pieces and connect (x_{i-1},f(x_{i-1})) to (x_i,f(x_i)) with a straight segment. Each segment has horizontal run \Delta x and vertical rise \Delta y_i\approx f'(x_i)\Delta x (§3.1's linear approximation), so by the Pythagorean theorem its length is

\sqrt{(\Delta x)^2+(\Delta y_i)^2}\approx\sqrt{1+\big[f'(x_i)\big]^2}\,\Delta x

Summing all n segments and refining (n\to\infty, exactly as in §4.1) turns the sum into an integral:

L=\int_a^b\sqrt{1+\big[f'(x)\big]^2}\,dx

This is a Riemann sum for arc length, in precisely the sense §4.1's rectangles were a Riemann sum for area — polygon segments in place of rectangles, the Pythagorean theorem in place of base-times-height.

Why these integrals are usually ugly

Even simple-looking functions produce arc-length integrands with no elementary antiderivative — \sqrt{1+4x^2} for y=x^2 needs a trig substitution (§4.8) and still ends up moderately unpleasant, and \sqrt{1+\cos^2x} for y=\sin x has no elementary antiderivative at all. This is normal, not a sign of doing something wrong: arc length is one of the most common places numerical integration (§4.11) gets used in practice, precisely because the exact formula so rarely simplifies.

Surface area of revolution

Take the arc-length idea and spin each tiny segment around the x-axis instead of just measuring it. A segment of length ds=\sqrt{1+[f'(x)]^2}\,dx revolved around the axis sweeps out a thin band — a frustum — with circumference 2\pi f(x) (§5.1's radius, one more time) and width ds:

S=2\pi\int_a^bf(x)\sqrt{1+\big[f'(x)\big]^2}\,dx

This combines §5.1's "circumference times something" from the shell method with the arc-length integrand above — the surface-area formula is what you get by weighting each infinitesimal arc-length piece by the circle it sweeps out.

Doing it in Python

Arc length of y=\frac23x^{3/2} on [0,3] — one of the rare cases with a clean closed form:

import sympy as sp

x = sp.Symbol('x')
f = sp.Rational(2, 3) * x**sp.Rational(3, 2)
fp = sp.diff(f, x)

L = sp.integrate(sp.sqrt(1 + fp**2), (x, 0, 3))
print(f"f'(x) = {fp}")
print(f"arc length = {L}")

An arc-length integral with no elementary antiderivative — y=\sin x on [0,\pi] — solved numerically, since §4.11's tools exist for exactly this:

from scipy import integrate
from math import sqrt, cos, pi

integrand = lambda x: sqrt(1 + cos(x)**2)
L, _ = integrate.quad(integrand, 0, pi)
print(f"arc length of sin(x) on [0, pi] = {L:.6f}")
print("no elementary antiderivative exists -- numerical is the only route")

The classic check: revolving a semicircle around its diameter must reproduce the sphere's surface area formula S=4\pi r^2:

import sympy as sp

x, r = sp.symbols('x r', positive=True)
f = sp.sqrt(r**2 - x**2)
fp = sp.diff(f, x)

integrand = 2 * sp.pi * f * sp.sqrt(1 + fp**2)
S = sp.integrate(sp.simplify(integrand), (x, -r, r))
print(f"surface of revolution of a semicircle = {sp.simplify(S)}")
print("matches the sphere formula from solid geometry: S = 4 pi r^2")

Worked example

Find the arc length of y=\frac23x^{3/2} on [0,3].

f'(x)=x^{1/2},\qquad 1+[f'(x)]^2=1+x

L=\int_0^3\sqrt{1+x}\,dx

Substitute u=1+x, du=dx; limits become u=1 to u=4:

L=\int_1^4u^{1/2}du=\left[\frac23u^{3/2}\right]_1^4=\frac23\big(4^{3/2}-1^{3/2}\big)=\frac23(8-1)=\boxed{\frac{14}3}

Sanity check. The straight-line distance between the endpoints (0,0) and \big(3,\frac23\cdot3^{3/2}\big)=(3,2\sqrt3)\approx(3,3.46) is \sqrt{3^2+3.46^2}\approx4.58 — a lower bound, since a straight line is always the shortest path between two points. \frac{14}3\approx4.67 is just above that lower bound. ✓ It's a small margin above, which makes sense: this curve is only mildly bent over the interval.

Your turn

1. Find the arc length of y=\frac{x^2}2 from x=0 to x=\sqrt3 (the integral simplifies nicely with the substitution 1+x^2=u... or push through the \sqrt{1+x^2} integral directly with trig substitution, §4.8).

2. Set up (don't evaluate) the surface-area-of-revolution integral for y=x^3 on [0,1] revolved around the x-axis.

3. True or false: if f'(x)=0 everywhere on [a,b] (a horizontal line), the arc length formula reduces to b-a.

Solutions

1. f'(x)=x, so 1+[f'(x)]^2=1+x^2:

L=\int_0^{\sqrt3}\sqrt{1+x^2}\,dx

Using the standard result \int\sqrt{1+x^2}dx=\frac x2\sqrt{1+x^2}+\frac12\ln\left|x+\sqrt{1+x^2}\right|+C (§4.8's x=\tan\theta substitution):

L=\left[\frac x2\sqrt{1+x^2}+\frac12\ln\left(x+\sqrt{1+x^2}\right)\right]_0^{\sqrt3}=\frac{\sqrt3}2\cdot2+\frac12\ln(\sqrt3+2)=\boxed{\sqrt3+\frac12\ln(2+\sqrt3)}

2. f'(x)=3x^2:

S=2\pi\int_0^1x^3\sqrt{1+9x^4}\,dx

3. True. If f'(x)=0, \sqrt{1+[f'(x)]^2}=\sqrt{1+0}=1, so L=\int_a^b1\,dx=b-a — the formula correctly falls back to ordinary distance when the curve is flat, exactly as a good generalization should.

Check yourself in code

Compute two quantities with SymPy: the arc length of y=\frac23x^{3/2} on [0,3], and the surface area from revolving y=\sqrt{4-x^2} (a semicircle of radius 2) around the x-axis on [-2,2].

Print exactly this:

arc length, (2/3)x^(3/2) on [0,3]        = 14/3
surface area, semicircle r=2 about x-axis = 16*pi
import sympy as sp

x = sp.Symbol('x')

f = sp.Rational(2, 3) * x**sp.Rational(3, 2)
fp = sp.diff(f, x)
L = sp.integrate(sp.sqrt(1 + fp**2), (x, 0, 3))
print("arc length, (2/3)x^(3/2) on [0,3]        = ...")

g = sp.sqrt(4 - x**2)
gp = sp.diff(g, x)
S = sp.integrate(sp.simplify(2 * sp.pi * g * sp.sqrt(1 + gp**2)), (x, -2, 2))
print("surface area, semicircle r=2 about x-axis = ...")
import sympy as sp

x = sp.Symbol('x')

f = sp.Rational(2, 3) * x**sp.Rational(3, 2)
fp = sp.diff(f, x)
L = sp.integrate(sp.sqrt(1 + fp**2), (x, 0, 3))
print(f"arc length, (2/3)x^(3/2) on [0,3]        = {L}")

g = sp.sqrt(4 - x**2)
gp = sp.diff(g, x)
S = sp.integrate(sp.simplify(2 * sp.pi * g * sp.sqrt(1 + gp**2)), (x, -2, 2))
print(f"surface area, semicircle r=2 about x-axis = {S}")

Arc length sums Pythagorean-theorem approximations of tiny straight segments, L=\int\sqrt{1+[f'(x)]^2}\,dx — the same limiting process that built area and volume, just applied to distance. Weight each segment by the circle it sweeps out under revolution, 2\pi f(x), and the same integrand gives surface area instead. Both integrals are notorious for having no elementary antiderivative even for simple-looking curves, which is exactly why §4.11's numerical methods exist.

Next: three more physical quantities — work, force, and pressure — that integrate the same way length just did, by summing infinitesimal contributions across a continuum.