16. Volumes by cylindrical shells
§5.1's disks and washers slice a solid of revolution perpendicular to the axis of revolution. There's a second way to build the exact same solid: wrap it in thin cylindrical tubes parallel to the axis, like the growth rings of a tree. Both methods compute the same volume; the shell method just sometimes turns an ugly integral into an easy one.
The formula
Revolve the region under y=f(x), on [a,b] (with 0\le a), around the y-axis. Instead of slicing perpendicular to the axis, imagine peeling off a thin vertical strip at position x, of height f(x) and width dx, and spinning just that strip around the axis. It sweeps out a thin cylindrical shell — think of a soup-can label peeled off and laid flat: its area is (circumference) \times (height) =2\pi x\cdot f(x), and its volume once you give it thickness dx is
dV=2\pi x\,f(x)\,dx
Summing shells from a to b:
V=2\pi\int_a^bx\,f(x)\,dx
Every shell contributes its own radius x times its own height f(x) — compare this to the disk method, where every disk contributed its own radius squared. The extra factor of x (rather than x^2) is the shell method's fingerprint.
Why shells beat washers, sometimes
The disk/washer method needs the boundary written as a function of the integration variable perpendicular to slices — revolving around the y-axis with washers means solving for x in terms of y. If f isn't easy to invert, or if inverting it produces two branches that must be handled separately, that's real extra work.
The shell method sidesteps this entirely: it uses f(x) exactly as given, no inverting required, because the strip being spun is still vertical, still described by the original function of x. The rule of thumb: if the axis of revolution matches the natural variable of your boundary functions, use disks/washers; if it's perpendicular to it, shells usually save an inversion.
Shells for a washer-shaped region
Revolving the region between g(x)\le y\le f(x) around the y-axis, each shell's height is the strip's height, top minus bottom, same as §5.0:
V=2\pi\int_a^bx\big[f(x)-g(x)\big]\,dx
This is structurally identical to \int(\text{top}-\text{bottom}) from §5.0, just weighted by the shell radius x before integrating — the "radius times height" idea from the plain formula, generalized to a shell with a gap in it exactly the way washers generalized disks.
Doing it in Python
The same solid — y=x^2 on [0,2] revolved around the y-axis — computed by shells, and cross-checked against the washer method from §5.1 (which needs x=\sqrt y, the inverted function):
import sympy as sp
x, y = sp.symbols('x y')
V_shell = 2 * sp.pi * sp.integrate(x * x**2, (x, 0, 2))
print(f"shell method : {V_shell}")
# washer method needs the inverse x = sqrt(y), outer radius 2, y from 0 to 4
V_washer = sp.pi * sp.integrate(2**2 - (sp.sqrt(y))**2, (y, 0, 4))
print(f"washer method : {V_washer}")
print(f"agree: {sp.simplify(V_shell - V_washer) == 0}")
A region where shells are clearly the easier route — between y=x and y=x^2, revolved around the y-axis. The washer method would need x solved from both curves (x=y and x=\sqrt y) and split at the point where the branches swap; shells need none of that:
import sympy as sp
x = sp.Symbol('x')
top, bottom = x, x**2 # top - bottom is the strip height, straight from x
V = 2 * sp.pi * sp.integrate(x * (top - bottom), (x, 0, 1))
print(f"shell volume, between y=x and y=x^2, about the y-axis = {V}")
print("no inversion needed -- top(x) and bottom(x) used directly")
Shells around a shifted axis, x=k instead of the y-axis — the radius becomes |x-k| rather than x:
import sympy as sp
x = sp.Symbol('x')
f = x**2
k = -1 # revolve around the vertical line x = -1
radius = x - k # x ranges over [0,2], all to the right of x=-1
V = 2 * sp.pi * sp.integrate(radius * f, (x, 0, 2))
print(f"shell volume about x = {k}: {V}")
Worked example
Find the volume of the solid formed by revolving the region between y=x and y=x^2 around the y-axis, for x in [0,1].
Confirm the top/bottom order first: on (0,1), x>x^2 (checked in §5.0's worked example), so the strip height is x-x^2.
V=2\pi\int_0^1x(x-x^2)\,dx=2\pi\int_0^1(x^2-x^3)\,dx
=2\pi\left[\frac{x^3}3-\frac{x^4}4\right]_0^1=2\pi\left(\frac13-\frac14\right)=2\pi\cdot\frac{1}{12}=\boxed{\frac\pi6}
Sanity check. The whole region between the curves sits inside the unit square [0,1]\times[0,1], spun around an axis it touches along its left edge — a modest solid, and \frac\pi6\approx0.524 is a modest number. ✓ Try the same problem with washers as a check on the method, not just the answer: you'd need y=x\Rightarrow x=y and y=x^2\Rightarrow x=\sqrt y, two different inverse functions describing the same outer boundary depending on where y falls — extra bookkeeping the shell method never needed.
Your turn
1. Use shells to find the volume of revolving the region under y=x^3 on [0,1] around the y-axis.
2. The region under y=e^{-x} on [0,\infty) is revolved around the y-axis. Set up the shell integral (it's improper — connect to §4.10) and evaluate it.
3. True or false: for a region revolved around the y-axis, the shell method's integration variable is always x, regardless of how the boundary curves are most naturally described.
Solutions
1.
V=2\pi\int_0^1x\cdot x^3\,dx=2\pi\int_0^1x^4dx=2\pi\left[\frac{x^5}5\right]_0^1=\boxed{\frac{2\pi}5}
2.
V=2\pi\int_0^\infty xe^{-x}\,dx
An improper integral (§4.10), and integration by parts (§4.6) gives \int xe^{-x}dx=-xe^{-x}-e^{-x}+C. As x\to\infty, xe^{-x}\to0 (exponential decay beats linear growth — §1.6), so:
V=2\pi\Big[-xe^{-x}-e^{-x}\Big]_0^\infty=2\pi\big[(0-0)-(0-1)\big]=\boxed{2\pi}
A finite volume from a region of infinite horizontal extent — the same surprise as §4.10's finite areas under an infinite tail, one dimension up.
3. True. Revolving around the y-axis always uses vertical strips at position x with height f(x)-g(x) read directly off the original functions — that's precisely the feature that makes shells convenient when the boundary curves are naturally functions of x. (Revolving around a horizontal axis instead would flip this: shells there integrate against y, using the boundary curves solved for x(y).)
Check yourself in code
Using the shell method, compute the volume of revolving the region under y=x^2 on [0,2] around the y-axis, and the volume of revolving the region between y=x and y=x^2 on [0,1] around the y-axis.
Print exactly this:
shell volume, x^2 on [0,2] about y-axis = 8*pi
shell volume, x and x^2 on [0,1] about y-axis = pi/6
import sympy as sp
x = sp.Symbol('x')
V1 = 2 * sp.pi * sp.integrate(x * x**2, (x, 0, 2))
print("shell volume, x^2 on [0,2] about y-axis = ...")
V2 = 2 * sp.pi * sp.integrate(x * (x - x**2), (x, 0, 1))
print("shell volume, x and x^2 on [0,1] about y-axis = ...")
import sympy as sp
x = sp.Symbol('x')
V1 = 2 * sp.pi * sp.integrate(x * x**2, (x, 0, 2))
print(f"shell volume, x^2 on [0,2] about y-axis = {V1}")
V2 = 2 * sp.pi * sp.integrate(x * (x - x**2), (x, 0, 1))
print(f"shell volume, x and x^2 on [0,1] about y-axis = {V2}")
A cylindrical shell at position x has volume (circumference) \times (height) \times (thickness) =2\pi x\,f(x)\,dx, and summing shells gives V=2\pi\int x\,f(x)\,dx — the same solid the disk method builds, computed without inverting the boundary function. Disks square the radius; shells multiply radius by height instead, and that difference is exactly what makes shells the easier route whenever the axis of revolution runs perpendicular to how the boundaries are naturally written.
Next: pulling back from volume to a more basic geometric question — how long is a curve, exactly, once it's not a straight line?