Monocurl Essays
Series Download

Complex numbers: why multiplying by i is a quarter turn

No number on the line squares to -1. Read multiplication by -1 as a half turn and the missing number appears: a quarter turn, which needs a second axis.

21 min·High school·

AssumesWhy is a negative times a negative positive?The unit circle: sine and cosine as coordinates

Multiplying by $-1$ sends every point of the number line to the opposite side of 0: a half turn. Here the half turn is made in two equal steps. After the first step the point 1 is at a place off the line, called $i$; after the second it is at $-1$. The faint vertical line records where the number line stood after the first step.
Monocurl source
let O1 = [0, 0.05, 0]
let U1 = 0.82
let Turned = |th| {
    let p = |k| cpt(O1, U1, polar(k, th))
    var out = [
        Seg(p(-2.15), p(0), PLUM, 4.5),
        Seg(p(0), p(2.15), EMBER, 4.5)
    ]
    for (k in [-2, -1]) {
        out .= Pt(p(k), PLUM, 0.075)
    }
    out .= Pt(p(2), EMBER, 0.075)
    if (th > 0.03) {
        out .= ArcAt(O1, U1, 0, th, LEAF, 3.5)
    }
    out .= Pt(p(1), LEAF, 0.11)
    return out
}
mesh plane = CPlane(O1, U1, -4, 4, -2, 2)
mesh ghost = []
mesh line = Turned(th: 0)
mesh notes = []

slide "turn"
    play Wait(0.8)
    line.th = PI / 2
    play Lerp(2, [&line])
    ghost = [
        Seg(cpt(O1, U1, [0, -2.15]), O1, tint(PLUM, 0.4), 4),
        Seg(O1, cpt(O1, U1, [0, 2.15]), tint(EMBER, 0.4), 4),
        Ring(cpt(O1, U1, [0, 1]), LEAF, 0.1, 3)
    ]
    notes = [
        center{cpt(O1, U1, polar(1.5, 45 * DEG))} Math("\times i", 0.95, LEAF),
        center{cpt(O1, U1, [-0.3, 1.32])} Math("i", 1.0, LEAF)
    ]
    play Fade(0.4, [&ghost, &notes])
    play Wait(0.6)
    line.th = PI
    play Lerp(2, [&line])
    notes .= center{cpt(O1, U1, polar(1.5, 135 * DEG))} Math("\times i", 0.95, LEAF)
    notes .= center{cpt(O1, U1, [2.3, -1.25])} Math("i \times i = -1", 1.25, INK)
    play Fade(0.4, [&notes])
    play Wait(2)

Uses the shared definitions for this lesson's figures.

Square any number you know and the result is never negative. A positive number times itself is positive, a negative times a negative is positive, and $0^2 = 0$. So the equation $x^2 = -1$ has no solution, and a symbol $i$ with $i^2 = -1$ looks like a name for something that cannot exist.

Yet engineers compute with $i$ every day and get correct answers about real circuits and real waves. Either they are lucky, or “no number squares to $-1$” was only ever a statement about numbers on a line. This lesson shows that the second is the case, and it does so by answering a question that sounds unrelated: what does multiplying by $-1$ do to the number line?

Multiplication moves the number line

Take every number on the line and multiply it by 2. Each point moves to twice its distance from 0: the line is stretched, with 0 held fixed. Multiplying by $\frac12$ shrinks it. Multiplying by $-1$ does something of a different kind. It sends 1 to $-1$, 2 to $-2$ and $-3$ to 3: every point lands at its mirror image on the other side of 0. One way to carry the whole line to that position is to pin it at 0 and swing it through half a turn.

In this language, squaring a number means performing its motion twice, since $x^2 = x \cdot x \cdot 1$ is where 1 ends up after two applications. And $x^2 = -1$ asks:

Which motion, performed twice, is the half turn?

Run through the motions the real numbers offer. A stretch by 3 done twice is a stretch by 9. A flip done twice puts everything back. A flip with a stretch, like multiplying by $-3$, done twice is a stretch by 9 again, because the two flips cancel. No candidate works, and this is the old fact that squares are never negative, restated as a fact about motions.

Pause and try

Forget about numbers for a moment and think only about motions of a line pinned at 0, as in the animation above. What motion, done twice, is a half turn? Where does it put the point 1?

Show answerHide answer

A quarter turn. Two quarter turns make a half turn. A quarter turn (counterclockwise, say) carries the point 1 to a position one unit from 0 in the perpendicular direction, which is not on the number line at all.

So there is a motion whose square is the half turn, and it failed to show up among the real numbers for a simple reason: it carries the line off itself. If we want a number that produces this motion, it has to live at the place where the quarter turn puts 1, one unit above 0, and that requires a plane. We call that point $i$.

Numbers in the plane

Once one point off the line is a number, others follow. We should be able to multiply $i$ by 2, giving a point two units up, and to add 3 to that, moving three units to the right. The result, $3 + 2i$, is the point with coordinates $(3, 2)$. Every point $(a, b)$ of the plane gets a name $a + bi$ this way: go $a$ along the old number line and $b$ in the direction of $i$.

Numbers as points of a plane. The number 3 + i is 3 units along the real axis and 1 unit in the direction of i. Adding two numbers adds the two parts separately, which places their arrows end to end: (3 + i) + (-2 + 2i) = 1 + 3i.
Numbers as points of a plane. The number $3 + i$ is 3 units along the real axis and 1 unit in the direction of $i$. Adding two numbers adds the two parts separately, which places their arrows end to end: $(3 + i) + (-2 + 2i) = 1 + 3i$.
Monocurl source
let O2 = [-0.55, -0.8, 0]
let U2 = 0.85
let p = |z| cpt(O2, U2, z)
mesh plane = CPlane(O2, U2, -3, 4, -1, 3)
mesh ghosts = [
    Dash(p([3, 1]), p([1, 3]), EMBER),
    Dash(p([-2, 2]), p([1, 3]), AZURE)
]
mesh arrows = [
    Tip(O2, p([3, 1]), AZURE, 4, 0.2),
    Tip(O2, p([-2, 2]), EMBER, 4, 0.2),
    Tip(O2, p([1, 3]), LEAF, 4, 0.2)
]
mesh names = [
    center{p([3.45, 1.42])} Math("3 + i", 0.9, AZURE),
    center{p([-2.4, 2.45])} Math("-2 + 2i", 0.9, EMBER),
    center{p([1.95, 2.55])} Math("1 + 3i", 0.9, LEAF)
]

Uses the shared definitions for this lesson's figures.

Addition is forced on us by the wish to keep ordinary algebra: $(a + bi) + (c + di) = (a + c) + (b + d)i$. Multiplication is forced in the same way. If the distributive law is to hold and $i \cdot i$ is to be $-1$, then

$$ (a + bi)(c + di) = ac + adi + bci + bd\,i^2 = (ac - bd) + (ad + bc)i. $$

Pause and try

Compute $(2 + i)(1 + i)$ by this rule. Then find the distance from 0 of each of the three points $2 + i$, $1 + i$ and the product, using the Pythagorean theorem. Do you see a relation among the three distances?

Show answerHide answer

$(2 + i)(1 + i) = 2 + 2i + i + i^2 = 1 + 3i$. The distances are $\sqrt{2^2 + 1^2} = \sqrt5$, $\sqrt{1 + 1} = \sqrt2$ and $\sqrt{1 + 9} = \sqrt{10}$. And $\sqrt5 \times \sqrt2 = \sqrt{10}$: the distances multiply. We will prove that this always happens.

In what sense does i exist?

So far we have reasoned from a wish: if there were a number $i$ with $i^2 = -1$ obeying the usual laws, it would behave like this. A skeptic can reply that wishing proves nothing, and that assuming a contradiction lets you derive anything. The reply to the skeptic, due to William Rowan Hamilton in 1833, is to build the numbers out of things nobody doubts and to make the formulas above into definitions.

Nothing in this definition is assumed to exist beyond real numbers and pairs of them. Now compute with the multiplication rule, taking $a = 0, b = 1, c = 0, d = 1$:

$$ i \cdot i = (0, 1)(0, 1) = (0 \cdot 0 - 1 \cdot 1,\ 0 \cdot 1 + 1 \cdot 0) = (-1, 0) = -1. $$

So $i^2 = -1$ is a calculation, with no more mystery in it than $(0,1)$ being a point of the plane. Three things need checking before we may call these pairs numbers, and all three are routine.

  • The pairs $(a, 0)$ behave exactly like the real numbers: $(a, 0) + (c, 0) = (a + c, 0)$ and $(a, 0)(c, 0) = (ac, 0)$. So the real numbers sit inside $\mathbb{C}$ as the horizontal axis, and nothing about them has changed.
  • Addition and multiplication are commutative and associative, and multiplication distributes over addition. Each law is verified by expanding both sides with the definition. Commutativity of multiplication, for instance, holds because $ac - bd$ and $ad + bc$ are unchanged when $(a, b)$ and $(c, d)$ are swapped.
  • Every complex number except 0 has a reciprocal (Problem 5 finds it), so division works.

That is the sense in which $i$ exists: as a point of the plane, in a number system that contains the real numbers and obeys the same laws of arithmetic. It is the same sense in which $-1$ or $\frac12$ exists. Each was once rejected as “not a real quantity”, and each is an addition to an older number system that keeps its rules and makes one more kind of equation solvable. The names “imaginary” and “real” are leftovers from the period of suspicion and carry no meaning now.

One thing was given up. The real numbers are ordered: of two different reals, one is larger. No ordering of the complex numbers is compatible with their arithmetic (Problem 7), so it makes no sense to ask whether $i$ is positive, or whether $2 + i$ is bigger than $1 + 3i$.

Multiplying by i is a quarter turn

We placed $i$ where a quarter turn puts 1. Now that multiplication is defined, we can check that multiplying by $i$ gives a quarter turn of everything. For any $a + bi$,

$$ i\,(a + bi) = ai + b\,i^2 = -b + ai. $$

So the point $(a, b)$ goes to $(-b, a)$. For example, $2 + i$ goes to $-1 + 2i$.

  1. Multiply by i. The number 1 goes to i, and 2 + i goes to -1 + 2i. Both have made a quarter turn about 0.
  2. Multiply by i again. Now 1 has reached -1, and 2 + i has reached -2 - i, its opposite: two quarter turns are a half turn.
  3. A third time: 1 is at -i, and 2 + i is at 1 - 2i.
  4. A fourth time, and both points are home. Four quarter turns are a full turn: i to the fourth power is 1.
Repeated multiplication by $i$, applied to the numbers 1 (green) and $2 + i$ (orange). Each multiplication turns both points a quarter of the way around 0, and four of them bring every point back to where it started.
Monocurl source
let O3 = [-0.9, 0, 0]
let U3 = 0.8
let Z0 = [2, 1]
let A0 = arctan(0.5)
let p = |z| cpt(O3, U3, z)
let Orbit = |th| {
    var out = [
        ArcAt(O3, U3, 0, max(th, 0.02), LEAF, 3),
        ArcAt(O3, U3 * sqrt(5), A0, A0 + max(th, 0.02), EMBER, 3),
        Seg(O3, p(rot(Z0, th)), tint(EMBER, 0.5), 2.5)
    ]
    for (k in range(0, 4)) {
        if (th >= k * PI / 2 - 0.001) {
            out .= Pt(p(rot([1, 0], k * PI / 2)), LEAF, 0.085)
            out .= Pt(p(rot(Z0, k * PI / 2)), EMBER, 0.085)
        }
    }
    out .= Pt(p(rot([1, 0], th)), LEAF, 0.11)
    out .= Pt(p(rot(Z0, th)), EMBER, 0.11)
    return out
}
let Line = |k, tex| center{[3.05, 1.35 - 0.7 * k, 0]} Math(tex, 0.95, INK)
mesh plane = CPlane(O3, U3, -3, 3, -2, 2)
mesh orbit = Orbit(th: 0)
mesh names = [center{p([2.55, 1.3])} Math("2 + i", 0.85, EMBER)]
mesh lines = [center{[3.05, 1.9, 0]} Note("where 1 goes", 0.72)]

slide "Multiply by i. The number 1 goes to i, and 2 + i goes to -1 + 2i. Both have made a quarter turn about 0."
    orbit.th = PI / 2
    play Lerp(1.6, [&orbit])
    names .= center{p([-1.6, 2.3])} Math("-1 + 2i", 0.85, EMBER)
    lines .= Line(0, "i^1 = i")
    play Fade(0.4, [&names, &lines])

slide "Multiply by i again. Now 1 has reached -1, and 2 + i has reached -2 - i, its opposite: two quarter turns are a half turn."
    orbit.th = PI
    play Lerp(1.6, [&orbit])
    names .= center{p([-2.5, -1.35])} Math("-2 - i", 0.85, EMBER)
    lines .= Line(1, "i^2 = -1")
    play Fade(0.4, [&names, &lines])

slide "A third time: 1 is at -i, and 2 + i is at 1 - 2i."
    orbit.th = 3 * PI / 2
    play Lerp(1.6, [&orbit])
    names .= center{p([2.35, -1.72])} Math("1 - 2i", 0.85, EMBER)
    lines .= Line(2, "i^3 = -i")
    play Fade(0.4, [&names, &lines])

slide "A fourth time, and both points are home. Four quarter turns are a full turn: i to the fourth power is 1."
    orbit.th = 2 * PI
    play Lerp(1.6, [&orbit])
    lines .= Line(3, "i^4 = 1")
    play Fade(0.4, [&lines])

Uses the shared definitions for this lesson's figures.

Two checks confirm that $(a, b) \mapsto (-b, a)$ is a quarter turn about 0. The distance from 0 is unchanged, since $(-b)^2 + a^2 = a^2 + b^2$. And the direction has turned through a right angle: when $a$ and $b$ are not zero, the line from 0 to $(a, b)$ has slope $\frac{b}{a}$ and the line from 0 to $(-b, a)$ has slope $-\frac{a}{b}$, and two lines whose slopes multiply to $-1$ are perpendicular (when $a$ or $b$ is zero the two points lie on different axes). The turn is counterclockwise because 1 goes to $i$, which is up. The theorem of the next section will contain all of this as a special case.

Pause and try

The powers of $i$ repeat with period 4. What is $i^{2026}$?

Show answerHide answer

$2026 = 4 \times 506 + 2$, so $i^{2026} = (i^4)^{506} \cdot i^2 = 1 \cdot (-1) = -1$. In terms of turns: 2026 quarter turns are 506 full turns and one half turn.

Multiplying by any complex number: turn and stretch

If multiplying by $i$ turns the plane, what does multiplying by $1 + i$ do? We saw one data point: it took $2 + i$, at distance $\sqrt5$ from 0, to $1 + 3i$, at distance $\sqrt{10}$. Here is a whole shape multiplied by $1 + i$, one point at a time.

Every point $z$ of the blue shape is multiplied by a number that moves from 1 to $1 + i$. The shape turns about 0 and grows, without changing its proportions. The green point is where the number 1 goes, which is the multiplier itself; at the end the turn is $45^\circ$ and the stretch is $\sqrt2 \approx 1.41$.
Monocurl source
let O4 = [-1.52, -0.89, 0]
let U4 = 0.66
let FPTS = [[0.6, 0], [1.1, 0], [1.1, 0.8], [1.8, 0.8], [1.8, 1.2], [1.1, 1.2], [1.1, 1.6], [2.2, 1.6], [2.2, 2], [0.6, 2]]
let Mul = |t| {
    let w = [1, t]
    return [
        Shape(map(FPTS, |z| cpt(O4, U4, cmul(z, w))), EMBER, 0.3, 3),
        Seg(O4, cpt(O4, U4, w), LEAF, 3.5),
        Pt(cpt(O4, U4, w), LEAF, 0.1),
        center{[2.95, 1.2, 0]} scale{1.1} color{LEAF} Number(t, 2),
        center{[2.75, 0.1, 0]} scale{1.3} color{EMBER} Number(arctan(t) / DEG, 0),
        center{[2.75, -1.1, 0]} scale{1.3} color{EMBER} Number(sqrt(1 + t * t), 2)
    ]
}
mesh plane = CPlane(O4, U4, -3, 3, -1, 4)
mesh base = [
    Shape(map(FPTS, |z| cpt(O4, U4, z)), AZURE, 0.22, 2.5),
    center{[2.75, 1.75, 0]} Note("multiplier", 0.74),
    center{[2.3, 1.2, 0]} Math("1 \ +", 0.9, LEAF),
    center{[3.5, 1.2, 0]} Math("i", 0.9, LEAF),
    center{[2.75, 0.62, 0]} Note("turn, in degrees", 0.74),
    center{[2.75, -0.58, 0]} Note("stretch factor", 0.74)
]
mesh moved = Mul(t: 0)

slide "multiply"
    play Wait(0.8)
    moved.t = 1
    play Lerp(4, [&moved])
    play Wait(2)

Uses the shared definitions for this lesson's figures.

The shape has turned through $45^\circ$ and grown by a factor of about $1.41$, and those are the direction and the distance of the point $1 + i$ itself. To state what is going on we need names for the distance and the direction of a complex number.

Recall from the unit circle that $(\cos\theta, \sin\theta)$ is the point reached by turning $(1, 0)$ about the origin through the angle $\theta$, counterclockwise. The definition says that $z$ lies in that direction, at distance $|z|$. An argument always exists, because $\left(\frac{a}{|z|}, \frac{b}{|z|}\right)$ is at distance 1 from 0 and every point of the unit circle is $(\cos\theta, \sin\theta)$ for some $\theta$. It is not unique: adding $360^\circ$ gives another argument of the same number. Those are the only other arguments, because two angles give the same point of the unit circle only when they differ by a whole number of full turns. We write $\arg z$ for an argument of $z$, so a statement such as $\arg z = 30^\circ$ is to be read up to multiples of $360^\circ$. The number 0 has modulus 0 and no argument, since it has no direction.

The number z = 2 + 1.5i described in two ways: by its real and imaginary parts, and by its modulus r = 2.5 and argument \theta \approx 36.9^\circ. The two descriptions are tied together by a = r\cos\theta and b = r\sin\theta.
The number $z = 2 + 1.5i$ described in two ways: by its real and imaginary parts, and by its modulus $r = 2.5$ and argument $\theta \approx 36.9^\circ$. The two descriptions are tied together by $a = r\cos\theta$ and $b = r\sin\theta$.
Monocurl source
let O5 = [-2.2, -0.75, 0]
let U5 = 1.0
let ZP = [2, 1.5]
let R5 = sqrt(ZP[0] ^ 2 + ZP[1] ^ 2)
let TH5 = arctan(ZP[1] / ZP[0])
let p = |z| cpt(O5, U5, z)
mesh plane = CPlane(O5, U5, -1, 3, -1, 2)
mesh legs = [
    Seg(O5, p([2, 0]), AZURE, 4.5),
    Seg(p([2, 0]), p(ZP), PLUM, 4.5),
    ArcAt(O5, 0.62, 0, TH5, LEAF, 3.5)
]
mesh arrow = [Tip(O5, p(ZP), EMBER, 4, 0.2), Pt(p(ZP), EMBER, 0.09)]
mesh names = [
    center{p([2.25, 1.78])} Math("z", 0.95, EMBER),
    center{p([0.78, 1.0])} Math("r", 0.95, EMBER),
    center{p([0.95, 0.27])} Math("\theta", 0.85, LEAF),
    center{p([1.15, -0.33])} Math("r\cos\theta", 0.8, AZURE),
    center{p([2.6, 0.72])} Math("r\sin\theta", 0.8, PLUM)
]
mesh facts = [
    center{[2.55, 1.5, 0]} Math("z = 2 + 1.5\,i", 0.9, EMBER),
    center{[2.55, 0.75, 0]} Math(str_join(["r = \sqrt{2^2 + 1.5^2} = ", to_string(R5, 1)]), 0.82, INK),
    center{[2.55, 0.0, 0]} Math(str_join(["\theta \approx ", to_string(TH5 / DEG, 1), "^\circ"]), 0.85, LEAF),
    center{[2.55, -0.75, 0]} Math(str_join([to_string(R5, 1), "\cos\theta = ", to_string(R5 * cos(TH5), 1)]), 0.82, AZURE),
    center{[2.55, -1.4, 0]} Math(str_join([to_string(R5, 1), "\sin\theta = ", to_string(R5 * sin(TH5), 1)]), 0.82, PLUM)
]

Uses the shared definitions for this lesson's figures.

With these words the observation about $1 + i$ becomes a theorem about all complex numbers.

Part 1 is proved completely. Part 2 rests on the angle addition formulas, which are theorems of trigonometry, valid for all angles, that we are citing and not proving. The lesson on angle addition proves them from the fact that a rotation preserves distances, an argument that makes no use of complex numbers, so nothing circular is going on. They are also believable on their face: they say what the coordinates of a point on the unit circle become after it is turned through a further angle.

Two numbers $z$ and $w$ and their product. First $w$ swings around while keeping its length, and the direction of $zw$ follows; then $w$ shrinks, and $zw$ shrinks with it. The lengths always multiply and the angles always add.
Monocurl source
let O6 = [0, -0.4, 0]
let U6 = 1.0
let ZR = 1.5
let ZA = 30 * DEG
let p = |z| cpt(O6, U6, z)
let Arrow = |r, a, col, name, off| [
    Tip(O6, p(polar(r, a)), col, 4, 0.2),
    center{p(polar(r + off, a))} Math(name, 0.9, col)
]
let Scene = |wr, wa| [
    ArcAt(O6, 0.42, 0, ZA, AZURE, 3.5),
    ArcAt(O6, 0.58, 0, wa, EMBER, 3.5),
    ArcAt(O6, 0.78, 0, ZA, AZURE, 3.5),
    ArcAt(O6, 0.78, ZA, ZA + wa, EMBER, 3.5),
    Arrow(ZR, ZA, AZURE, "z", 0.22),
    Arrow(wr, wa, EMBER, "w", 0.22),
    Arrow(ZR * wr, ZA + wa, LEAF, "zw", 0.3),
    center{[-2.85, 0.2, 0]} color{EMBER} Number(wr, 2),
    center{[-2.85, -0.9, 0]} color{LEAF} Number(ZR * wr, 2),
    center{[3.55, 0.2, 0]} color{EMBER} Number(wa / DEG, 0),
    center{[3.55, -0.9, 0]} color{LEAF} Number((ZA + wa) / DEG, 0)
]
mesh plane = CPlane(O6, U6, -2, 2, -1, 2)
mesh heads = [
    center{[-3.2, 1.85, 0]} Note("lengths", 0.74),
    center{[-3.5, 1.3, 0]} Math("|z|", 0.85, AZURE),
    center{[-2.85, 1.3, 0]} color{AZURE} Number(ZR, 2),
    center{[-3.2, 0.75, 0]} Math("\times", 0.85, INK),
    center{[-3.5, 0.2, 0]} Math("|w|", 0.85, EMBER),
    center{[-3.2, -0.35, 0]} Math("=", 0.85, INK),
    center{[-3.55, -0.9, 0]} Math("|zw|", 0.85, LEAF),
    center{[3.2, 1.85, 0]} Note("angles (deg)", 0.74),
    center{[2.85, 1.3, 0]} Math("\arg z", 0.8, AZURE),
    center{[3.55, 1.3, 0]} color{AZURE} Number(ZA / DEG, 0),
    center{[3.2, 0.75, 0]} Math("+", 0.85, INK),
    center{[2.85, 0.2, 0]} Math("\arg w", 0.8, EMBER),
    center{[3.2, -0.35, 0]} Math("=", 0.85, INK),
    center{[2.8, -0.9, 0]} Math("\arg zw", 0.8, LEAF)
]
mesh scene = Scene(wr: 1.2, wa: 20 * DEG)

slide "multiply"
    play Wait(0.8)
    scene.wa = 110 * DEG
    play Lerp(3, [&scene])
    play Wait(0.8)
    scene.wr = 0.7
    play Lerp(2.2, [&scene])
    play Wait(1.8)

Uses the shared definitions for this lesson's figures.

Division undoes multiplication, so it divides moduli and subtracts arguments. To see this, let $z \neq 0$ and let $q = \frac{w}{z}$, the number with $qz = w$ (it exists because $z$ has a reciprocal, found in Problem 5). Part 1 gives $|q|\,|z| = |w|$, so $|q| = \frac{|w|}{|z|}$. If $w \neq 0$ and $\gamma$ is an argument of $q$, part 2 says $\gamma + \alpha$ is an argument of $w$, so it differs from $\beta$ by full turns, and therefore $\beta - \alpha$ is an argument of $q$.

Re-read the opening in this light. The number $i$ has modulus 1 and argument $90^\circ$, so multiplying by it stretches by 1 and turns by $90^\circ$: a quarter turn. Then $i^2$ has modulus $1 \times 1$ and argument $90^\circ + 90^\circ = 180^\circ$, and the number of modulus 1 at $180^\circ$ is $-1$. A negative real number has argument $180^\circ$, and “negative times negative is positive” is the statement $180^\circ + 180^\circ = 360^\circ$.

Worked examples

The two square roots of i. Each has modulus 1. Doubling the argument 45^\circ gives 90^\circ, and doubling 225^\circ gives 450^\circ, which is one full turn more than 90^\circ; both land on i.
The two square roots of $i$. Each has modulus 1. Doubling the argument $45^\circ$ gives $90^\circ$, and doubling $225^\circ$ gives $450^\circ$, which is one full turn more than $90^\circ$; both land on $i$.
Monocurl source
let O7 = [-0.85, 0, 0]
let U7 = 1.2
let p = |z| cpt(O7, U7, z)
mesh plane = CPlane(O7, U7, -2, 2, -1, 1)
mesh circle = stroke{SLATE, 2} dashed{[0.1, 0.08]} Polyline(map(sample(0, TAU, 96), |t| p(polar(1, t))))
mesh arcs = [
    ArcAt(O7, 0.42, 0, 45 * DEG, LEAF, 3.5),
    ArcAt(O7, 0.7, 0, 225 * DEG, PLUM, 3.5)
]
mesh arrows = [
    Tip(O7, p(polar(1, 45 * DEG)), LEAF, 4, 0.2),
    Tip(O7, p(polar(1, 225 * DEG)), PLUM, 4, 0.2),
    Pt(p([0, 1]), EMBER, 0.11)
]
mesh names = [
    center{p([-0.22, 1.2])} Math("i", 0.95, EMBER),
    center{p([1.32, 0.75])} Math("\frac{1 + i}{\sqrt2}", 0.85, LEAF),
    center{p([-1.42, -0.62])} Math("-\frac{1 + i}{\sqrt2}", 0.85, PLUM)
]
mesh sums = [
    center{[2.95, 1.05, 0]} Math("45^\circ + 45^\circ = 90^\circ", 0.74, LEAF),
    center{[2.95, 0.45, 0]} Math("225^\circ + 225^\circ = 450^\circ", 0.74, PLUM),
    center{[2.95, -0.55, 0]} Math("450^\circ - 360^\circ = 90^\circ", 0.74, INK)
]

Uses the shared definitions for this lesson's figures.

The last two examples are instances of a theorem far beyond this lesson, the fundamental theorem of algebra: every polynomial equation of degree at least 1 with complex coefficients has a solution in $\mathbb{C}$. It was first proved, in several ways, in the early nineteenth century by Gauss and Argand among others, and we only cite it; the lesson on polynomials and their roots says what it implies. It means that the step from the line to the plane never has to be repeated.

Pause and try

A number $z$ has modulus 2 and argument $60^\circ$. Predict the modulus and argument of $z^2$, write $z^2$ in the form $a + bi$, and then check by squaring $z = 1 + \sqrt3\,i$ directly.

Show answerHide answer

Modulus $2 \times 2 = 4$ and argument $60^\circ + 60^\circ = 120^\circ$, so $z^2 = 4(\cos 120^\circ + i \sin 120^\circ) = -2 + 2\sqrt3\,i$. Directly: $(1 + \sqrt3\,i)^2 = 1 + 2\sqrt3\,i + 3i^2 = -2 + 2\sqrt3\,i$.

Where care is needed

Two limits of the theorem are worth stating. First, it concerns multiplication only. Moduli do not add when numbers are added: $|1 + i| = \sqrt2$, while $|1| + |i| = 2$. Second, “arguments add” is a statement about angles, which are only determined up to full turns. The numbers at $200^\circ$ and $250^\circ$ on the unit circle have a product at $450^\circ$, which is the same direction as $90^\circ$.

Stepping back: the hard part was to stop asking which number on the line squares to $-1$ and to ask instead what multiplication by $-1$ does. Once multiplication is seen as a motion, a quarter turn is an obvious thing to want, the plane is the obvious place to find it, and Hamilton’s pairs show that the wish can be granted without assuming anything. The idea to keep is that a complex number is a stretch together with a turn. In the next lesson that idea meets the number $e$, and explains why $e^{i\pi} = -1$.

Check yourself

The number $z$ has modulus 2 and argument $100^\circ$, and $w$ has modulus 3 and argument $50^\circ$. What are the modulus and an argument of $zw$?

Problems

Work these on paper, plotting the numbers as you go, before opening the solutions. The first three repeat the lesson’s moves, the next three combine them, and the last two go further.

Problem 1

Let $z = 3 + 2i$ and $w = 1 - 5i$. Compute $z + w$, $zw$, and $iz$. Plot $z$ and $iz$ and confirm the quarter turn.

Show solutionHide solution

$z + w = 4 - 3i$. $zw = 3 - 15i + 2i - 10i^2 = 3 - 13i + 10 = 13 - 13i$. $iz = 3i + 2i^2 = -2 + 3i$. The points $(3, 2)$ and $(-2, 3)$ are both at distance $\sqrt{13}$ from 0, and the slopes $\frac23$ and $-\frac32$ multiply to $-1$, so the directions are perpendicular.

Problem 2

Find $|3 - 4i|$ and $|1 + 2i|$. Multiply the two numbers and verify that $|zw| = |z||w|$.

Show solutionHide solution

$|3 - 4i| = \sqrt{9 + 16} = 5$ and $|1 + 2i| = \sqrt5$. The product is $(3 - 4i)(1 + 2i) = 3 + 6i - 4i - 8i^2 = 11 + 2i$, with modulus $\sqrt{121 + 4} = \sqrt{125} = 5\sqrt5$, which is $5 \times \sqrt5$.

Problem 3

Simplify $i^{7}$, $i^{100}$ and $i + i^2 + i^3 + i^4$.

Show solutionHide solution

Powers of $i$ repeat every 4. $7 = 4 + 3$, so $i^7 = i^3 = -i$. $100 = 4 \times 25$, so $i^{100} = 1$. The sum is $i + (-1) + (-i) + 1 = 0$: the four points are the corners of a square centered at 0, and they balance.

Problem 4

Solve $x^2 - 4x + 13 = 0$ and check one of your solutions by substitution.

Show solutionHide solution

Complete the square: $x^2 - 4x + 4 = -9$, so $(x - 2)^2 = -9$. The numbers whose square is $-9$ are $\pm 3i$, so $x = 2 + 3i$ or $x = 2 - 3i$. Check $x = 2 + 3i$: $x^2 = 4 + 12i + 9i^2 = -5 + 12i$, and $-5 + 12i - 4(2 + 3i) + 13 = -5 + 12i - 8 - 12i + 13 = 0$.

Problem 5

For $z = a + bi$, the conjugate of $z$ is $\bar z = a - bi$. (a) Show that $z\bar z = |z|^2$. (b) Deduce that every $z \neq 0$ has a reciprocal, and find it. (c) Use this to compute $\dfrac{5 + 5i}{1 + 2i}$, and check by multiplying back.

Show solutionHide solution

(a) $(a + bi)(a - bi) = a^2 - abi + abi - b^2i^2 = a^2 + b^2 = |z|^2$. (b) If $z \neq 0$ then $|z|^2 > 0$, and dividing (a) by it gives $z \cdot \frac{\bar z}{|z|^2} = 1$. So $\frac1z = \frac{a - bi}{a^2 + b^2}$. (c) Multiply numerator and denominator by the conjugate of the denominator: $\frac{(5 + 5i)(1 - 2i)}{(1 + 2i)(1 - 2i)} = \frac{5 - 10i + 5i - 10i^2}{5} = \frac{15 - 5i}{5} = 3 - i$. Check: $(3 - i)(1 + 2i) = 3 + 6i - i - 2i^2 = 5 + 5i$.

Problem 6

Compute $(1 + i)^8$ in two ways: with moduli and arguments, and by repeated squaring.

Show solutionHide solution

$1 + i$ has modulus $\sqrt2$ and argument $45^\circ$. So $(1 + i)^8$ has modulus $(\sqrt2)^8 = 2^4 = 16$ and argument $8 \times 45^\circ = 360^\circ$, which is the direction of the positive real axis: $(1 + i)^8 = 16$. By squaring: $(1 + i)^2 = 1 + 2i + i^2 = 2i$; then $(2i)^2 = -4$; then $(-4)^2 = 16$.

Problem 7

Suppose the nonzero complex numbers could be divided into “positive” and “negative” ones so that (i) for every $z \neq 0$ exactly one of $z$ and $-z$ is positive, and (ii) the product of two positive numbers is positive. Show that this is impossible. (These two properties hold for the real numbers and are the basis of all work with inequalities.)

Show solutionHide solution

By (i), either $i$ or $-i$ is positive. If $i$ is positive, then by (ii) $i \cdot i = -1$ is positive. If $-i$ is positive, then $(-i)(-i) = i^2 = -1$ is positive. Either way $-1$ is positive. Applying (ii) again, $(-1)(-1) = 1$ is positive. Now both $1$ and $-1$ are positive, which contradicts (i). So no such division exists, and there is no ordering of $\mathbb{C}$ that works with multiplication the way the ordering of the real numbers does.

Problem 8

Find all complex numbers $z$ with $z^3 = 1$, using moduli and arguments. Write them in the form $a + bi$ and verify one of the non-real ones by algebra.

Show solutionHide solution

If $z^3 = 1$ then $|z|^3 = 1$, and $|z|$ is a nonnegative real number, so $|z| = 1$. If $\theta$ is an argument of $z$, then $3\theta$ is an argument of 1, so $3\theta$ is a multiple of $360^\circ$ and $\theta$ is a multiple of $120^\circ$. That gives three different points on the unit circle, at $0^\circ$, $120^\circ$ and $240^\circ$ (the next, $360^\circ$, is the first again):

$$ 1, \qquad -\frac12 + \frac{\sqrt3}{2}i, \qquad -\frac12 - \frac{\sqrt3}{2}i. $$

Conversely each of these has modulus 1 and an argument whose triple is a multiple of $360^\circ$, so its cube is 1. Check the second by algebra: its square is $\frac14 - \frac{\sqrt3}{2}i + \frac34 i^2 = -\frac12 - \frac{\sqrt3}{2}i$, and multiplying by $-\frac12 + \frac{\sqrt3}{2}i$ gives $\frac14 - \frac34 i^2 = \frac14 + \frac34 = 1$. The three cube roots of 1 are the corners of an equilateral triangle.

Shared definitions used by this lesson's figures
# house kit: prepended to every essay figure after the std imports

# palette. AZURE and EMBER are the two actors, LEAF marks an answer, ROSE a problem
let PAPER = [1, 1, 1, 1]
let INK = [0.08, 0.09, 0.11, 1]
let SLATE = [0.40, 0.44, 0.50, 1]
let MIST = [0.85, 0.86, 0.88, 1]
let AZURE = [0.13, 0.42, 0.68, 1]
let EMBER = [0.89, 0.42, 0.12, 1]
let LEAF = [0.13, 0.55, 0.36, 1]
let ROSE = [0.78, 0.22, 0.24, 1]
let PLUM = [0.47, 0.30, 0.66, 1]
let GOLD = [0.85, 0.62, 0.08, 1]

background = PAPER

# an opaque pastel of col; use for fills so overlaps do not darken
let tint = |col, amount = 0.18| [
    1 - (1 - col[0]) * amount,
    1 - (1 - col[1]) * amount,
    1 - (1 - col[2]) * amount,
    1
]

# text: Cap for labels, Note for quiet labels, Math for typeset maths
let Cap = |txt, size = 0.75, col = INK| color{col} Text(txt, size, "Charter")
let Note = |txt, size = 0.65| color{SLATE} Text(txt, size, "Charter")
let Math = |tex, size = 0.9, col = INK| color{col} Tex(tex, size)

# a paper rectangle to sit behind text that crosses lines
let Plate = |pos, size| center{pos} fill{PAPER} stroke{alpha{0} PAPER, 0} Rect(size)

# shapes with fill and stroke both set, so no stray black appears
let Pt = |pos, col = INK, r = 0.075| center{pos} fill{col} stroke{col, 1} Circle(r, 48)
let Ring = |pos, col = INK, r = 0.1, w = 3| center{pos} fill{PAPER} stroke{col, w} Circle(r, 48)
let Seg = |a, b, col = INK, w = 3| stroke{col, w} Line(a, b)
let Path = |pts, col = INK, w = 3| stroke{col, w} Polyline(pts)
let Region = |pts, col| fill{col} stroke{alpha{0} col, 0} Polygon(pts)
let Outline = |pts, col = INK, w = 3| fill{alpha{0} PAPER} stroke{col, w} Polygon(pts)
let Shape = |pts, col, amount = 0.18, w = 3| fill{tint(col, amount)} stroke{col, w} Polygon(pts)
let Disc = |pos, r, col, amount = 0.18, w = 3| center{pos} fill{tint(col, amount)} stroke{col, w} Circle(r, 96)
let Box = |pos, size, col, amount = 0.18, w = 3| center{pos} fill{tint(col, amount)} stroke{col, w} Rect(size)
# a line from a to b ending in a small solid arrowhead
let Tip = |a, b, col = INK, w = 3, head = 0.17| {
    let d = normalize([b[0] - a[0], b[1] - a[1], 0])
    let n = [-d[1], d[0], 0]
    let base = [b[0] - d[0] * head, b[1] - d[1] * head, 0]
    return [
        stroke{col, w} Line(a, base),
        fill{col} stroke{col, 1} Polygon([
            b,
            [base[0] + n[0] * head * 0.42, base[1] + n[1] * head * 0.42, 0],
            [base[0] - n[0] * head * 0.42, base[1] - n[1] * head * 0.42, 0]
        ])
    ]
}

# plots. a frame is [x0, x1, y0, y1, centre, width, height]: a data window and the scene box it fills
let Frame = |x0, x1, y0, y1, c = [0, 0, 0], w = 6.4, h = 3.6| [x0, x1, y0, y1, c, w, h]
let fx = |fr, x| fr[4][0] + (x - (fr[0] + fr[1]) / 2) * fr[5] / (fr[1] - fr[0])
let fy = |fr, y| fr[4][1] + (y - (fr[2] + fr[3]) / 2) * fr[6] / (fr[3] - fr[2])
let at = |fr, x, y| [fx(fr, x), fy(fr, y), 0]

# axes through the data origin (or the nearest edge of the window), with optional names
let Axes = |fr, x_name = "", y_name = "", col = SLATE| {
    let ox = clamp(fr[0], 0, fr[1])
    let oy = clamp(fr[2], 0, fr[3])
    var parts = [
        Tip(at(fr, fr[0], oy), [fx(fr, fr[1]) + 0.25, fy(fr, oy), 0], col, 2.5, 0.15),
        Tip(at(fr, ox, fr[2]), [fx(fr, ox), fy(fr, fr[3]) + 0.25, 0], col, 2.5, 0.15)
    ]
    if (x_name != "") {
        parts .= center{[fx(fr, fr[1]) + 0.5, fy(fr, oy), 0]} Math(x_name, 0.8, col)
    }
    if (y_name != "") {
        parts .= center{[fx(fr, ox), fy(fr, fr[3]) + 0.5, 0]} Math(y_name, 0.8, col)
    }
    return parts
}

# tick marks with numbers at the listed data values
let XTicks = |fr, xs, col = SLATE, places = 0| block {
    let oy = fy(fr, clamp(fr[2], 0, fr[3]))
    for (x in xs) {
        . Seg([fx(fr, x), oy - 0.07, 0], [fx(fr, x), oy + 0.07, 0], col, 2)
        . center{[fx(fr, x), oy - 0.33, 0]} Math(to_string(x, places), 0.72, col)
    }
}
let YTicks = |fr, ys, col = SLATE, places = 0| block {
    let ox = fx(fr, clamp(fr[0], 0, fr[1]))
    for (y in ys) {
        . Seg([ox - 0.07, fy(fr, y), 0], [ox + 0.07, fy(fr, y), 0], col, 2)
        . center{[ox - 0.36, fy(fr, y), 0]} Math(to_string(y, places), 0.72, col)
    }
}

# faint grid lines at the listed data values
let GridLines = |fr, xs, ys, col = MIST| block {
    for (x in xs) {
        . Seg(at(fr, x, fr[2]), at(fr, x, fr[3]), col, 1.5)
    }
    for (y in ys) {
        . Seg(at(fr, fr[0], y), at(fr, fr[1], y), col, 1.5)
    }
}

# the graph of f over [a, b], drawn in the frame. values are clamped to the window
let Graph = |fr, f, a, b, col = AZURE, w = 4, n = 160|
    stroke{col, w} Polyline(map(sample(a, b, n), |x| at(fr, x, clamp(fr[2], f(x), fr[3]))))

# the region between the graph of f and the x axis over [a, b]
let AreaUnder = |fr, f, a, b, col = AZURE, amount = 0.2, n = 80| {
    var pts = [at(fr, a, 0)]
    for (x in sample(a, b, n)) {
        pts .= at(fr, x, clamp(fr[2], f(x), fr[3]))
    }
    pts .= at(fr, b, 0)
    return fill{tint(col, amount)} stroke{alpha{0} col, 0} Polygon(pts)
}

# complex numbers are pairs [a, b]; a plane has an origin o (scene point) and a unit length u
let cpt = |o, u, z| [o[0] + u * z[0], o[1] + u * z[1], 0]
let cmul = |z, w| [z[0] * w[0] - z[1] * w[1], z[0] * w[1] + z[1] * w[0]]
let polar = |r, th| [r * cos(th), r * sin(th)]
let rot = |z, th| cmul(z, polar(1, th))
let DEG = PI / 180
# grid over whole numbers x0..x1 and y0..y1, both axes, numbers along the bottom and left edges
let CPlane = |o, u, x0, x1, y0, y1| {
    var out = []
    for (x in range(x0, x1 + 1)) {
        out .= Seg(cpt(o, u, [x, y0]), cpt(o, u, [x, y1]), MIST, 1.5)
        out .= center{[o[0] + u * x, o[1] + u * y0 - 0.27, 0]} Math(to_string(x), 0.72, SLATE)
    }
    for (y in range(y0, y1 + 1)) {
        out .= Seg(cpt(o, u, [x0, y]), cpt(o, u, [x1, y]), MIST, 1.5)
        var name = str_join([to_string(y), "i"])
        if (y == 1) {
            name = "i"
        }
        if (y == -1) {
            name = "-i"
        }
        if (y != 0) {
            out .= center{[o[0] + u * x0 - 0.36, o[1] + u * y, 0]} Math(name, 0.72, SLATE)
        }
    }
    out .= Tip(cpt(o, u, [x0, 0]), [o[0] + u * x1 + 0.28, o[1], 0], SLATE, 2.5, 0.15)
    out .= Tip(cpt(o, u, [0, y0]), [o[0], o[1] + u * y1 + 0.28, 0], SLATE, 2.5, 0.15)
    out .= center{[o[0] + u * x1 - 0.22, o[1] - 0.26, 0]} Note("real", 0.72)
    out .= center{[o[0] + 0.85, o[1] + u * y1 + 0.2, 0]} Note("imaginary", 0.72)
    return out
}
# an arc about the scene point c from angle a0 to a1 (radians), radius r in scene units
let ArcAt = |c, r, a0, a1, col, w = 3| {
    let n = to_int(max(2, ceil(abs(a1 - a0) * 16)))
    return stroke{col, w} Polyline(map(sample(a0, a1, n), |t| [c[0] + r * cos(t), c[1] + r * sin(t), 0]))
}
let Dash = |a, b, col = SLATE, w = 2.5| stroke{col, w} dashed{[0.1, 0.08]} Line(a, b)