High School Modules > Precalculus by Gregory A. Moore
Roots of Complex Numbers
This worksheet goes through the development of the concept of roots of complex numbers geometrically and algebraically.
[Directions : Execute the Code Resource section first. Although there will be no output immediately, these definitions are used later in this worksheet.]
0. Code
| > | restart; with(plots): |
Warning, the name changecoords has been redefined
| > | ComplexPlotY := proc() local k,Radial,Pt,c,c1,c2,shade,r,u,Lines; u:= 0; c1 := COLOR(RGB, .67, .54, .27 ); c2 := COLOR(RGB, .72,.6,.3 ); for k from 1 to nargs do shade := evalf(rand()/10^12,2)/4 + .3; c := COLOR(RGB, shade+.3,shade+.2, shade); Radial||k := complexplot( [0,args[k]], scaling = constrained, color = c1, thickness = 1); Lines||k := plot( [[ 0, Im(args[k])], [Re(args[k]), Im(args[k])], [Re(args[k]), 0]], color = c2, linestyle = 2); u := max( u, abs(Re(args[k])),abs(Im(args[k])) ); od; r := evalf(u/12,2); c := COLOR(RGB, .8, .66, .25 ); for k from 1 to nargs do Pt||k := plottools[disk]( [Re(args[k]), Im(args[k])],r, color = c ); od; display( [seq( Radial||k, k = 1..nargs), seq( Pt||k, k = 1..nargs), seq( Lines||k, k = 1..nargs)] ); end proc: |
| > | ComplexPlotB := proc() local k,A,Pt,c,cg,shade,r,u,Lines; u:= 0; cg := COLOR(RGB, .7,.7,.8); for k from 1 to nargs do shade := evalf(rand()/10^12,2)/4 + .3; c := COLOR(RGB, shade,shade, shade+2); A||k := complexplot( [0,args[k]], linestyle = 2, scaling = constrained, color = c); Lines||k := plot( [[ 0, Im(args[k])], [Re(args[k]), Im(args[k])], [Re(args[k]), 0]], color = cg); u := max( u, abs(Re(args[k])),abs(Im(args[k])) ); od; r := evalf(u/45,2); for k from 1 to nargs do shade := evalf(rand()/10^12,2)/5 + .1; c := COLOR(RGB, shade, shade, .7); Pt||k := plottools[rectangle]( [Re(args[k])-r, Im(args[k])+r],[Re(args[k])+r, Im(args[k])-r], color = c ); od; display( [seq( A||k, k = 1..nargs), seq( Pt||k, k = 1..nargs), seq( Lines||k, k = 1..nargs)] ); end proc: |
| > | UnityRootPlot := proc(n) local c; c := COLOR(RGB, .85, .65, .3 ); display( [ComplexPlotB( 1), ComplexPlotY( seq( cos(2*k*Pi/n) + I*sin(2*k*Pi/n), k = 1..n) ), seq( plottools[arc]( [0,0], .95-k*.045, 0..(2*k*Pi/n), color = c,thickness = 3 ), k = 1..(n-1)), plottools[circle]([0,0],1, color = gold)]); end proc: |
| > | UnityRoots := proc(n) local k,S; S := solve(z^n - 1= 0): for k from 1 to n do print(S[k]); od; end proc: |
| > | reset := proc() global a,b,w,z,R,theta, phi,n,k; a := 'a': b := 'b': z := 'z': theta := 'theta': R := 'R': w:='w': z:='z': phi := 'phi': n:= 'n': k:= 'k': return (a,b,z,w,R,n,k,theta, phi): end proc: |
1. The Idea of Complex Roots
As we know there are two square roots of every real number ...
| > | solve( x^2 = 9, x); |
| > | 3^2; (-3)^2; |
Or complex numbers ...
| > | solve( x^2 = -9 ); |
So it should not be surprising that there are three numbers which have same cube. In other words, 8 has three cube roots.
| > | z1 := 2; z2 := -1 + sqrt(3)*I; z3 := -1 - sqrt(3)*I; |
| > | z1^3: % = evalc(%); z2^3: % = evalc(%); z3^3: % = evalc(%); |
| > | display( ComplexPlotB(z1^3), ComplexPlotY( z1,z2,z3), polarplot( abs(z1), color = tan )); |
Nor should it be surprising that a number has four fourth roots.
| > | z1 := sqrt(2) + I*sqrt(2); z2 := sqrt(2) - I*sqrt(2); z3 := -sqrt(2) + I*sqrt(2); z4 := -sqrt(2) - I*sqrt(2); |
| > | z1^4: % = evalc(%); z2^4: % = evalc(%); z3^4: % = evalc(%); z4^4: % = evalc(%); |
| > | display( ComplexPlotB(z1^3), ComplexPlotY( z1,z2,z3,z4), polarplot( abs(z1), color = tan )); |
Even complex numbers have four 4th roots.
| > | z1 := .8 + 1.1*I; z2 := .8 - 1.1*I; z3 := - .8 + 1.1*I; z4 := - .8 - 1.1*I; |
| > | z1^4: % = evalc(%); z2^4: % = evalc(%); z3^4: % = evalc(%); z4^4: % = evalc(%); |
| > | display( ComplexPlotB(z1^3), ComplexPlotY( z1,z2,z3,z4), polarplot( abs(z1), color = tan )); |
There is clearly some pattern to these roots, which we will explore in some depth.
2. Expanding One Root of Unity into Many
Notice that the number 1 raised to the 7th power is 1. Thus, it is a 7th root of 1. We would like to find more numbers which are also 7th roots of 1. In fact, there are six more.
| > | phi := 2*Pi/7; |
| > | u := cos(phi) + I*sin(phi); u^7: % = round(evalf(%)); |
Given an angle like
, there is only one integer which can be multiplied to give
.
| > | phi*x = 2*Pi; solve(%,x); |
However, there are other angles, like
, that can be multiplied by 7 to give other even multiples of
- which are angularly equivalent to
.
| > | for k from 1 to 7 do `(7)`*k*'phi' = 7*k*phi; od; |
So there are 7 different angles that can be multiplied by 7 to give an angle equivalent to 0.
Now, if we recall one of the basic properties of DeMoivre's Theorem and apply it to a number u, which is on the unit circle, we have :
| > | u:='u': u = ( cos(theta) + I*sin(theta) ); u^n = ( cos(n*theta) + I*sin(n*theta) ); |
Now if we put these ideas together, we find 7 different complex numbers which give the same result when raised to the 7th power. Here are seven numbers.
| > | phi := 2*Pi/7: for k from 1 to 7 do phi||k := phi*k; od; |
But this list of numbers gives the same results, since 0 and
are equivalent angles.
| > | for k from 0 to 6 do phi||k := phi*k; od; |
If we convert these numbers to complex numbers having these angles as their arguments, we get :
| > | for k from 0 to 6 do cos(phi||k) + I*sin(phi||k); od; |
Here is a diagram showing these 7 numbers.
| > | UnityRootPlot(7); |
3. Complex Roots of Unity
Roots of unity are solutions to the equation(s) :
| > | z := 'z': z^n - 1 = 0; z^n = 0; |
These have a nice geometric interpretation - equally spaced spokes of a wheel - with the first spoke along the positive x axis.
| > | UnityRoots(3); UnityRootPlot(3); |
| > | UnityRoots(4); UnityRootPlot(4); |
| > | UnityRoots(5); UnityRootPlot(5); |
| > | UnityRoots(6); UnityRootPlot(6); |
| > | UnityRoots(13); UnityRootPlot(13); |
There is an algebraic interpretation to these complex roots. Notice that the equation z^n -1 can be factored.
| > | z^7 - 1: % = (z-1)*simplify( %/(z-1) ); |
| > | z^13 - 1: % = (z-1)*simplify( %/(z-1) ); |
So an equation with this kind of polynomial can be factored - showing that there is always a root of 1. However, there are six more roots of the resuling sixth degree polynomial - these are the six other roots we saw above!
| > | z^7 - 1 = 0; |
| > | (z-1)*simplify( lhs(%)/(z-1) ) = 0; |
| > | UnityRoots(7); |
| > | UnityRootPlot(7); |
| > | r6 := cos(2*Pi/7) - I*sin(2*Pi/7); |
| > | z^6+z^5+z^4+z^3+z^2+z+1; |
| > | subs( z= r6, %); |
| > | evalc(%): round(%); |
So the 6 roots (excluding 1) are roots of
both
of these equations.
| > | z^7 - 1 = 0; z^6+z^5+z^4+z^3+z^2+z+1 = 0; |
4. One Root Using DeMoivre's Theorem in Reverse
You might recall De Moivre's formula.
| > | demoivre := z^n = (r^n)*( cos(n*theta) + I*sin(n*theta) ); |
Now we want to use it in reverse - with some care. The opposite of an nth power is a nth root, and the opposite of multiplying by n is dividing by n.
Example
:
Find a 5th root of w = 24 + 10i.
Step 1
. Express w in polar form
| > | w := 24 + 10*I; |
| > | R := abs(w); theta := argument(w); evalf(theta); |
| > | w = R*'(cos(theta) + I*sin(theta))'; |
Step 2
. Find the 5th root of R. (The opposite of raising
the absolute value to the 5th power is to take the 5th root).
| > | r := R^(1/5); |
3. Divide the argument by 5
| > | phi := theta/5; |
4.
Construct the root using these new values.
| > | z := r*('cos'(phi) + I*'sin'(phi)); |
Indeed, if we raise this number to the 5th power, we get back to w.
| > | 'z'^5 = z^5; phi := evalf(theta/5): z := r*('cos'(phi) + I*'sin'(phi)): simplify(z^5); |
5. Expanding One Arbitrary Root into Many
We found one root, but we know there are others. Lets see how to find them.
Example 5.1 :
Find the 5th roots of -1
Lets start with a "complex" number, w = -1. We can express this number in polar form.
| > | w := -1; |
| > | R := abs(w); theta := argument(w); |
We can find a single 5th root by dividing the angle by 5. (since R = 1)
| > | z1 := cos(theta/5) + I*sin(theta/5); |
It's also apparent from the diagram that 5 times the angle of z1 is
.
| > | display(ComplexPlotY(z1), ComplexPlotB(w), plottools[circle]([0,0],1, color = gold), plottools[arc]([0,0],.8, 0..Pi/5, color = gold, thickness = 3), plottools[arc]([0,0],.9, 0..Pi, color = gold, thickness = 3) ); |
Now here is the key new idea. We need to find other angles, which when multiplied by 5, give theta plus even multiples of
. We can simply solve an equation like this. We solve all of these kinds of equations in the same way.
| > | theta + 3*2*Pi = 5*x; phi||3 := solve( %, x); |
| > | for k from 1 to 5 do theta + (k-1)*2*Pi = 5*x; phi||k := solve( %, x); z||k := cos(phi||k) + I*sin(phi||k); print(`-----------------------------------`); od; |
Let's see what it looks like.
| > | ComplexPlotY(z1,z2,z3,z4,z5); |
Indeed, if we raise any of these numbers to the 5th power, we get back w = -1.
| > | for k from 1 to 5 do z||k^5 = round(evalf(z||k^5)) ; od; |
Example 5.2 :
Find the 4th roots of i
Lets start with a "complex" number, w = i. And go through these same steps.
| > | w := I; |
| > | R := abs(w); theta := argument(w); |
We can find a single 4th root by dividing the angle by 5. (since R = 1)
| > | z1 := cos(theta/4) + I*sin(theta/4); |
It's also apparent from the diagram that 4 times the angle of z1 is
,
| > | display(ComplexPlotY(z1), ComplexPlotB(w), plottools[circle]([0,0],1, color = gold), plottools[arc]([0,0],.8, 0..Pi/8, color = gold, thickness = 3), plottools[arc]([0,0],.9, 0..Pi/2, color = gold, thickness = 3) ); |
Solve the equations which give the same resulting angle.
| > | for k from 1 to 4 do theta + (k-1)*2*Pi = 4*x; phi||k := solve( %, x); z||k := cos(phi||k) + I*sin(phi||k); print(`-----------------------------------`); od; |
Let's see what it looks like.
| > | display( ComplexPlotY(z1,z2,z3,z4), ComplexPlotB(w), plottools[circle]([0,0],1, color = gold)); |
Please take a moment to study this diagram because it illustrates the principle of complex roots. The blue square at i (0,1), is the original number. You can see the first 4th root at
/8 in the first quadrant - and we know that angle is exactly 1/4 of the angle of i. Now other three roots are spread around the circle - cutting the circle into four equal pieces - but starting at the first root - not at an angle of zero.
And as before, if we raise any of these numbers to the 4th power, we get back w = i.
| > | for k from 1 to 4 do z||k^5 = round(evalf(z||k^4)) ; od; |
6. Complete Set of Complex Roots
We have seen how we can use DeMoivre's formula in reverse to find a single root of a complex number. We have also seen how a single complex root can be expanded to n distinct complex roots. Now we sew this all up, and use these ideas to find the nth roots for any complex number.
Example : Find ALL of the 5th roots of w = 24 + 10i.
1
. Express w in polar form
| > | w := 24 + 10*I; |
| > | R := abs(w); theta := argument(w); evalf(theta); |
| > | w = R*'(cos(theta) + I*sin(theta))'; |
2
. Find the 5th root of R - which is never a problem since R is always non-negative. (The opposite of raising
the absolute value to the 5th power, is to take the 5th root).
| > | r := R^(1/5); |
3. Divide the argument by 5 (the opposite of multiplying by 5 is dividing by 5)
| > | phi := theta/5; |
4.
Construct the first root using these values.
| > | z||1 := r*('cos'(phi) + I*'sin'(phi)); |
5.
Construct the complete set of roots by adding multiples of
to theta, then divide by n.
| > | for k from 0 to 4 do z||k :=r*('cos'((theta + 2*Pi*k)/n) + I*'sin'((theta + 2*Pi*k)/n)); od; |
| > | for k from 0 to 4 do z||k :=r*( 'cos'(evalf( (theta + 2*Pi*k)/5 ) ) + I*'sin'(evalf( (theta + 2*Pi*k)/5 ) ) ); od; |
| > | for k from 0 to 4 do z||k := evalf( r*( 'cos'( (theta + 2*Pi*k)/5 ) + I*'sin'( (theta + 2*Pi*k)/5 ) )); od; |
If we raise any of these numbers to the 5th power, we get back to w!
| > | z0 := 1.912667497+.1513354546*I; 'z0^5' = round(simplify(z2^5)); |
| > | z1 := .4471181897+1.865820114*I; 'z1^5' = round(simplify(z2^5)); |
| > | z2 := -1.636333258+1.001804792*I; 'z2^5' = round(simplify(z2^5)); |
| > | z3 := -1.458427760-1.246670703*I; 'z3^5' = round(simplify(z2^5)); |
| > | z4 := .7349753320-1.772289659*I; 'z4^5' = round(simplify(z2^5)); |
7. A Geometric Representation of Complex Roots
Here are some geometric representations of complex roots.
| > | z := 'z': |
| > | w := 3 + 3*I; n := 3; roots_of_unity := solve( z^3 = w, z); |
| > | display( ComplexPlotB( w), ComplexPlotY( seq( roots_of_unity[k], k = 1..n) ), polarplot( abs(roots_of_unity[1]), color = gray )); |
| > |
| > | w := 1 + 3*I; n := 3; roots_of_unity := solve( z^3 = w, z); |
| > | display( ComplexPlotB( w), ComplexPlotY( seq( roots_of_unity[k], k = 1..n) ), polarplot( abs(roots_of_unity[1]), color = gray )); |
| > | display( ComplexPlotB( w), ComplexPlotY( seq( roots_of_unity[k], k = 1..n) ), polarplot( evalf( abs( roots_of_unity[1])), color = gray )); |
8. General Formula
Here is the formula for the powers of complex number in polar form.
| > | reset(); z^n = (r^n)*( cos(n*theta) + I*sin(n*theta) ); |
Here is the formula for the powers of complex number in polar form.
| > | w = R*('cos'(theta) + I*'sin'(theta)); |
| > | z = (R^(1/n))*( cos((theta + 2*Pi*k)/n) + I*sin((theta + 2*Pi*k)/n)); |
For example, for n = 7, we have ....
| > | for k from 0 to 6 do z||k = (R^(1/n))*( cos((theta + 2*Pi*k)/n) + I*sin((theta + 2*Pi*k)/n)); od; |
| > |
© 2002 Waterloo Maple Inc