30. Zeno's paradoxes, resolved
Around 450 BCE, the Greek philosopher Zeno of Elea proposed a handful of arguments claiming that motion is logically impossible — and for over two thousand years, nobody had the mathematical tools to say precisely what was wrong with them. §7.3's geometric series is exactly that tool. This lesson is a short, satisfying payoff for the machinery just built: two of Zeno's most famous paradoxes, resolved completely.
The dichotomy paradox
Zeno's argument: to walk from your front door to the street, you must first walk half the distance. But before that, you must walk half of that — a quarter of the total. And before that, an eighth. And before that, a sixteenth. The journey requires completing infinitely many sub-journeys before it can even begin. How can infinitely many steps be completed in finite time? Zeno concluded motion cannot start at all.
The resolution. Suppose the total distance is D, walked at constant speed v. The sub-journeys have distances \frac D2,\frac D4,\frac D8,\ldots, each taking time \frac{D/2^n}v. The total time is exactly §7.3's geometric series:
T=\sum_{n=1}^\infty\frac{D/2^n}v=\frac Dv\sum_{n=1}^\infty\frac1{2^n}=\frac Dv\cdot1=\frac Dv
using §7.2's very first computed series sum. Infinitely many steps, each with a positive duration, sum to a perfectly ordinary, finite time — exactly the time you'd compute without thinking about the subdivisions at all, \text{distance}/\text{speed}. Zeno's error was the unstated assumption that summing infinitely many positive numbers must produce infinity. §7.2 already showed that's false.
Achilles and the tortoise
Zeno's argument: Achilles, a fast runner, races a tortoise that gets a head start. By the time Achilles reaches the tortoise's starting point, the tortoise has crawled a little further ahead. By the time Achilles reaches that point, the tortoise has advanced a little further still. Achilles must complete infinitely many such catch-up steps, so he can never actually catch the tortoise — despite obviously being faster.
The resolution, with concrete numbers: Achilles runs at v_A=2 m/s, the tortoise crawls at v_T=1 m/s, and the tortoise starts d=10 m ahead.
Step 1: Achilles runs to the tortoise's starting point, 10 m, taking t_1=\frac{10}2=5 s. In that time the tortoise advances 1\cdot5=5 m further.
Step 2: Achilles closes that 5 m gap, taking t_2=\frac52=2.5 s. The tortoise advances another 2.5 m.
Each step's time is exactly half the previous step's time — the gap shrinks by a factor of \frac{v_T}{v_A}=\frac12 every round, since the tortoise covers half the ground Achilles does in the same time. This is a geometric series with a=t_1=5 and r=\frac{v_T}{v_A}=\frac12:
T=\sum_{n=1}^\infty t_1r^{n-1}=\frac{t_1}{1-r}=\frac5{1-1/2}=10\text{ s}
Direct kinematic check: Achilles' position is x_A=2t; the tortoise's is x_T=10+t. They meet when 2t=10+t\Rightarrow t=10 s — the identical answer, computed without any infinite subdivision at all. Achilles catches the tortoise at exactly t=10 seconds, after covering 20 m — the infinitely many "catch-up steps" are real, but they consume a finite total time, so they all finish before t=10 s, not instead of it.
What was actually wrong with Zeno's reasoning
Zeno's arguments are logically valid in one sense — motion genuinely does involve infinitely many sub-events under this kind of analysis. The flawed step is assuming an infinite process must take infinite time (or can never complete). §7.2's central definition — a series converges when its partial sums approach a finite limit — is precisely the missing piece: an infinite number of events can still fit inside a finite duration, as long as those events' durations shrink fast enough for their series to converge. Zeno had no concept of a convergent infinite series; calculus supplies exactly that concept, twenty-two centuries later.
Doing it in Python
The Achilles and tortoise problem, comparing the geometric-series total to the direct kinematic answer:
from fractions import Fraction
vA, vT, d = Fraction(2), Fraction(1), Fraction(10)
# geometric series route
t1 = d / vA
r = vT / vA
T_series = t1 / (1 - r)
print(f"first catch-up step takes t1 = {t1} s")
print(f"each step is r = {r} times the last")
print(f"total time (infinite sum) = {T_series} s")
# direct kinematics: 2t = 10 + t
T_direct = d / (vA - vT)
print(f"total time (direct) = {T_direct} s")
Watching the individual catch-up steps shrink and confirming they sum to the same total, term by term:
from fractions import Fraction
t1, r = Fraction(5), Fraction(1, 2)
steps = [t1 * r**n for n in range(10)]
running_total = Fraction(0)
print(f"{'step':>5} {'duration':>10} {'running total':>15}")
for i, t in enumerate(steps, start=1):
running_total += t
print(f"{i:>5} {float(t):>10.4f} {float(running_total):>15.6f}")
print(f"\napproaching 10 s -- matches the direct kinematic answer")
The dichotomy paradox, confirming the halved-distance series sums to the whole distance:
D, v = 100, 10 # meters, m/s
total_time = sum((D / 2**n) / v for n in range(1, 30))
print(f"summed over 29 halvings: {total_time:.10f} s")
print(f"direct D/v: {D/v:.10f} s")
print("already indistinguishable after under 30 terms")
Worked example
A second tortoise race: Achilles runs at 3 m/s, the tortoise at 1 m/s, with a 12 m head start. Using the geometric-series method, find when Achilles catches up.
Step 1: Achilles covers the initial 12 m gap in t_1=\frac{12}3=4 s. During those 4 s, the tortoise advances 1\cdot4=4 m.
Each round, the gap shrinks by the ratio r=\frac{v_T}{v_A}=\frac13 (the tortoise's speed as a fraction of Achilles'), so step times form a geometric series with a=4, r=\frac13:
T=\frac a{1-r}=\frac4{1-1/3}=\frac4{2/3}=\boxed{6\text{ s}}
Sanity check. Direct kinematics: x_A=3t, x_T=12+t, meeting when 3t=12+t\Rightarrow t=6 — matches exactly. ✓ And it's sensible that this race resolves faster than the 10-second one worked above — though not for the reason you might reach for first. The head start here is larger (12 m against 10 m). What decides it is the closing speed: 3-1=2 m/s here against 2-1=1 m/s there. Catch-up time is head start divided by closing speed, so \frac{12}2=6 beats \frac{10}1=10 despite the bigger gap. Raw pace is not the quantity that matters; the difference in pace is.
Your turn
1. Using the dichotomy-paradox formula T=\frac Dv, find how long it takes to walk D=60 m at v=1.5 m/s — then verify this matches summing the infinite halved-distance series directly (you don't need to compute the full infinite sum by hand; just confirm the formula \frac Dv is what the series total collapses to).
2. A third race: Achilles at 4 m/s, tortoise at 2 m/s, head start 20 m. Find the common ratio r of the catch-up-step series, and the total time, both via the geometric series and via direct kinematics.
3. True or false: Zeno's paradoxes show that infinite processes are impossible to complete.
Solutions
1. T=\frac{60}{1.5}=40 s directly. Via the series: each halving step takes half as long as the previous (exactly §7.3's \sum\frac1{2^n} structure scaled by \frac Dv), so the geometric series has a=\frac{D/2}v and r=\frac12, giving T=\frac{a}{1-r}=\frac{D/2/v}{1/2}=\frac Dv — the series formula reduces to exactly the direct formula, as it must, since D/v was never actually in question; the series argument was only ever re-deriving the obvious answer through more steps.
2. r=\frac{v_T}{v_A}=\frac24=\frac12. First step: t_1=\frac{20}4=5 s. Total: T=\frac{5}{1-1/2}=\boxed{10\text{ s}}. Direct check: 4t=20+2t\Rightarrow2t=20\Rightarrow t=\boxed{10\text{ s}} — matches.
3. False — this is the whole point of the lesson. Zeno's paradoxes show the opposite: infinitely many sub-events can complete within a finite span, precisely because their durations can form a convergent series. What Zeno's arguments actually disprove is the assumption that an infinite process must take infinite time — a false premise, not a fact about motion.
Check yourself in code
For the original Achilles and tortoise setup (v_A=2, v_T=1, head start d=10), compute the total catch-up time using both the geometric-series formula and direct kinematics.
Print exactly this:
geometric series total = 10
direct kinematics total = 10
from fractions import Fraction
vA, vT, d = Fraction(2), Fraction(1), Fraction(10)
t1 = d / vA
r = vT / vA
T_series = t1 / (1 - r)
print("geometric series total = ...")
T_direct = d / (vA - vT)
print("direct kinematics total = ...")
from fractions import Fraction
vA, vT, d = Fraction(2), Fraction(1), Fraction(10)
t1 = d / vA
r = vT / vA
T_series = t1 / (1 - r)
print(f"geometric series total = {T_series}")
T_direct = d / (vA - vT)
print(f"direct kinematics total = {T_direct}")
Both of Zeno's paradoxes rest on the same hidden assumption — that summing infinitely many positive quantities must give infinity — and both dissolve the instant §7.2's actual definition of series convergence is applied: a geometric series with ratio r<1 converges to a finite total, so infinitely many sub-journeys or catch-up steps can complete within an ordinary, finite span of time. It took over two thousand years for the mathematics to catch up with the question; the resolution, once you have §7.3's formula in hand, is three lines of algebra.
Next: back to the general theory, with a simple test for when a series cannot possibly converge — and the harmonic series' famous divergence, proven at last.