10. The classic: sin(x)/x → 1 as x → 0

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

Plug in x = 0 and you get \frac00. That doesn't mean the limit fails to exist — §1.0 was emphatic that \frac00 carries no information — it means the work is still ahead of you.

And here, unusually, no algebra will do it. There is no factor to cancel, no conjugate to multiply by, no fraction to combine. \sin x is not a polynomial and cannot be manipulated into one. This limit needs geometry.

It's worth the trouble because it is the foundation of all trigonometric calculus. Every derivative in §2's trig section, every trigonometric integral in §4, and the Taylor series in §8 rest on this one number being exactly 1.

What the graph shows

Plot f(x) = \frac{\sin x}{x} and it looks perfectly smooth everywhere — except at x = 0, where the function isn't defined at all. There's a hole. The question is what value would fill it seamlessly.

Numerically the answer is obvious and the proof is the point:

\frac{\sin(0.1)}{0.1} = 0.99833\ldots \qquad \frac{\sin(0.01)}{0.01} = 0.99998\ldots

But §1.2 showed what numerical evidence is worth on its own. We need the geometry.

The intuition in one picture

On a unit circle, the arc from angle 0 to angle \theta has length exactly \theta — that's the definition of a radian, and the reason §0.4 insisted on them.

Drop straight down from the end of that arc to the x-axis: that segment has length \sin\theta.

So the ratio \frac{\sin\theta}{\theta} is comparing a chord-ish straight drop to the curved arc. For large \theta the arc bends a lot and the straight drop is much shorter. As \theta shrinks, the arc straightens out, and the two lengths become indistinguishable.

That's the whole idea: a small enough piece of a circle is a straight line. Now let's make it a proof.

The proof, by areas

Work in the unit circle with 0 < \theta < \frac{\pi}{2}, and compare three nested regions.

Inner triangle. Vertices at the origin O, the point A = (1,0), and B = (\cos\theta, \sin\theta) on the circle. Base OA has length 1, height is B's y-coordinate:

\text{area} = \tfrac12 \cdot 1 \cdot \sin\theta = \tfrac{\sin\theta}{2}

The sector OAB, the pie slice. From §0.1, a sector of angle \theta in a unit circle has area

\tfrac12 r^2\theta = \tfrac{\theta}{2}

Outer triangle. Extend OB until it meets the vertical tangent line at x = 1. That meeting point is (1, \tan\theta), so this triangle has base 1 and height \tan\theta:

\text{area} = \tfrac{\tan\theta}{2}

Each region strictly contains the previous one, so:

\frac{\sin\theta}{2} < \frac{\theta}{2} < \frac{\tan\theta}{2} \implies \sin\theta < \theta < \tan\theta

Divide everything by \sin\theta, which is positive on (0, \pi/2) so the inequalities keep their direction:

1 < \frac{\theta}{\sin\theta} < \frac{1}{\cos\theta}

Take reciprocals, which flips the inequalities:

\cos\theta < \frac{\sin\theta}{\theta} < 1

Now squeeze. As \theta \to 0^+, \cos\theta \to 1 and the constant 1 is already there. Both bounds converge to 1, so

\lim_{\theta\to0^+}\frac{\sin\theta}{\theta} = 1

The other side is free. \frac{\sin\theta}{\theta} is even: replacing \theta by -\theta flips the sign of both numerator and denominator, leaving the ratio unchanged. So the left-hand limit equals the right-hand one, and the two-sided limit is 1. \blacksquare

Two things that proof used and could not do without: arc length = \theta (radians), and the sector area formula \frac12 r^2\theta (also radians). In degrees the same argument yields \frac{\pi}{180}.

The immediate payoff

Differentiate \sin x from the definition (properly done in §2.5):

\frac{\sin(x+h) - \sin x}{h} = \frac{\sin x\cos h + \cos x \sin h - \sin x}{h} = \sin x \cdot \frac{\cos h - 1}{h} + \cos x \cdot \frac{\sin h}{h}

using the angle-sum identity from §0.4. As h \to 0 the second fraction goes to 1 — this lesson — and the first goes to 0 — the next lesson. So

\frac{d}{dx}\sin x = \cos x

That clean result exists because this limit is exactly 1. Had it been \frac{\pi}{180}, every trigonometric derivative in mathematics would carry that factor.

Variations

Once you have the base case, everything reduces to it by making the denominator match the argument:

\lim_{x\to0}\frac{\sin 5x}{x} = \lim_{x\to0} 5\cdot\frac{\sin 5x}{5x} = 5 \cdot 1 = 5

\lim_{x\to0}\frac{\sin 3x}{\sin 7x} = \lim_{x\to0}\frac{\frac{\sin3x}{3x}\cdot 3x}{\frac{\sin7x}{7x}\cdot7x} = \frac{1 \cdot 3}{1 \cdot 7} = \frac37

\lim_{x\to0}\frac{\tan x}{x} = \lim_{x\to0}\frac{\sin x}{x}\cdot\frac{1}{\cos x} = 1 \cdot 1 = 1

The pattern: multiply and divide by whatever makes the inside of the sine match the bottom, then read off the leftover constant.

Doing it in Python

The convergence, and the squeeze that proves it:

from math import sin, cos

print(f"{'theta':>10} {'cos(theta)':>14} {'sin/theta':>14} {'upper':>8}")
for t in (1.0, 0.5, 0.1, 0.01, 0.001):
    print(f"{t:>10} {cos(t):>14.10f} {sin(t)/t:>14.10f} {1:>8}")

print("\ntrapped between cos(theta) and 1, and cos(theta) -> 1")

The three areas, verified:

from math import sin, tan

print(f"{'theta':>8} {'triangle':>12} {'sector':>12} {'big triangle':>14} {'nested':>8}")
for t in (1.2, 0.8, 0.4, 0.1, 0.01):
    inner, sector, outer = sin(t) / 2, t / 2, tan(t) / 2
    print(f"{t:>8} {inner:>12.8f} {sector:>12.8f} {outer:>14.8f} "
          f"{inner < sector < outer!s:>8}")

print("\narea(triangle) < area(sector) < area(big triangle), always")

The variations, checked against the algebra:

from math import sin, tan

cases = [
    ("sin(5x)/x", lambda x: sin(5 * x) / x, 5),
    ("sin(3x)/sin(7x)", lambda x: sin(3 * x) / sin(7 * x), 3 / 7),
    ("tan(x)/x", lambda x: tan(x) / x, 1),
    ("sin(x)/(3x)", lambda x: sin(x) / (3 * x), 1 / 3),
]

x = 1e-6
for name, f, expected in cases:
    print(f"{name:<18} numeric {f(x):<12.8f} algebra {expected:.8f}")

And a reminder about where numerics stop working:

from math import sin

print("push x down to machine precision and it collapses:")
for k in (6, 10, 14, 16, 17, 18):
    x = 10.0 ** -k
    try:
        print(f"  x=1e-{k:<3} sin(x)/x = {sin(x)/x:.12f}")
    except ZeroDivisionError:
        print(f"  x=1e-{k:<3} sin(x)/x = ZeroDivisionError -- x underflowed to 0")

print("\nthe proof does not care. floating point does.")

Worked example

Find \lim_{x\to0}\dfrac{\sin 3x}{5x}.

The denominator is 5x but the sine's argument is 3x — they don't match, so the base limit doesn't apply directly. Force the match by multiplying and dividing by 3:

\frac{\sin3x}{5x} = \frac{\sin 3x}{3x}\cdot\frac{3x}{5x} = \frac{\sin3x}{3x}\cdot\frac35

As x \to 0, the substitution u = 3x also sends u \to 0, so the first factor is exactly the base limit and goes to 1:

\lim_{x\to0}\frac{\sin3x}{5x} = 1 \cdot \frac35 = \boxed{\frac35}

A harder one, worth seeing:

\lim_{x\to0}\frac{x}{\sin(4x)}

Flip it in your head — this is the reciprocal of \frac{\sin4x}{x}, which by the same method is 4. So the answer is \frac14. Reciprocals are legal here because the limit of the denominator, 4, is nonzero.

Being able to take a reciprocal only when the limit is nonzero is the quotient law's condition from §1.1 doing its job. Had the inner limit been 0, flipping would have produced an infinite limit instead.

Your turn

1. \lim_{x\to0}\dfrac{\sin 7x}{x}

2. \lim_{x\to0}\dfrac{\sin^2 x}{x^2}

3. \lim_{x\to0}\dfrac{\sin(x^2)}{x}

4. Why does the area proof fail if \theta is measured in degrees?

Solutions

1. Match the denominator to the argument:

\frac{\sin7x}{x} = 7\cdot\frac{\sin7x}{7x} \longrightarrow 7 \cdot 1 = \boxed{7}

2. It's the square of the base limit:

\frac{\sin^2x}{x^2} = \left(\frac{\sin x}{x}\right)^2 \longrightarrow 1^2 = \boxed{1}

The power law from §1.1 licenses moving the limit inside the square, because the inner limit exists.

3. Match the argument, which is x^2:

\frac{\sin(x^2)}{x} = \frac{\sin(x^2)}{x^2}\cdot x

The first factor \to 1 (substituting u = x^2 \to 0), and the second \to 0. So the limit is 1 \cdot 0 = \boxed{0}.

This one catches people who pattern-match to "1" without checking what's left over. The rule isn't "sine over something gives 1" — it's that \frac{\sin u}{u} \to 1, and you must account for everything else separately.

4. Because two of the three areas were computed with radian formulas.

The sector area \frac12 r^2\theta is only valid in radians; in degrees it's \frac{\pi r^2\theta}{360}. The triangles are unaffected — \sin and \tan of an angle don't care what unit you name it in.

Redoing the sandwich in degrees gives

\sin\theta° < \frac{\pi\theta}{180} < \tan\theta°

and dividing through leads to

\lim_{\theta\to0}\frac{\sin\theta°}{\theta} = \frac{\pi}{180} \approx 0.01745

The geometry is identical; only the bookkeeping of "how many units per turn" changed. Radians are the choice that makes the constant 1.

Check yourself in code

Verify the squeeze \cos\theta < \frac{\sin\theta}{\theta} < 1.

For \theta = 0.5, 0.1, 0.01, 0.001, print \cos\theta, the ratio \frac{\sin\theta}{\theta} (both to 10 decimals) and whether the sandwich holds. Then print the gap 1 - \frac{\sin\theta}{\theta} for the smallest \theta in scientific notation with 2 decimals.

Print exactly this:

theta=0.5    cos=0.8775825619  ratio=0.9588510772  ok=True
theta=0.1    cos=0.9950041653  ratio=0.9983341665  ok=True
theta=0.01   cos=0.9999500004  ratio=0.9999833334  ok=True
theta=0.001  cos=0.9999995000  ratio=0.9999998333  ok=True
gap at 0.001: 1.67e-07
from math import sin, cos

for t in (0.5, 0.1, 0.01, 0.001):
    ratio = sin(t) / t
    # print cos(t), the ratio, and whether cos(t) < ratio < 1
    print(f"theta={t:<6} ...")

# then the gap 1 - ratio at theta = 0.001
from math import sin, cos

for t in (0.5, 0.1, 0.01, 0.001):
    ratio = sin(t) / t
    print(f"theta={t:<6} cos={cos(t):.10f}  ratio={ratio:.10f}  "
          f"ok={cos(t) < ratio < 1}")

t = 0.001
print(f"gap at {t}: {1 - sin(t) / t:.2e}")

\frac{\sin x}{x} has a removable hole at 0, and the value that fills it is exactly 1. The proof compares a triangle, a sector, and a bigger triangle, producing \sin\theta < \theta < \tan\theta, which rearranges into a squeeze between \cos\theta and 1. It works only in radians, and it is why \frac{d}{dx}\sin x = \cos x has no stray constant.

Next: the companion limit \frac{1-\cos x}{x}, which the derivative of sine also needs — and which turns out to be 0, for a reason worth understanding.