# [Tutor] How to find complex roots

Matt Williams matthew.williams at cancer.org.uk
Thu Dec 9 12:21:20 CET 2004

```Dick Mores wrote:
<snip>
My trusty \$10 Casio calculator tells me that the 3 cube roots of 1 are:
1, (-.5 +0.866025403j), and (-.5 -0.866025403j), or thereabouts. Is
there
a way to do this in Python?

<snip>

I think the neatest approach might be to consider that the n-complex
roots form at equal angle around the origin on an Argand diagram
(basically a cartesian plane) - here the points (in "standard")
cartesian notation are at (1,0), (-0.5, 0.86) and (-0.5, -0.86). The
whole effect looks a bit like a Mercedes-Benz symbol rotated clockwise
by 90 degrees. The points, in this case, lie on the unit circle.

As a result, I think you could just divide 360 by n (for the n-roots),
set the 1st root at (1,0) and then position the others around the
circle, incrementing by the required number of degrees.

If I've remembered correctly, for c where |c| <>1, the argument is the
same, but you need to take the nth root of the absolute value of c (this
can be ignored when we're doing it for 1, as of course the nth root of 1
is 1).

Obviously I haven't included any code....but I hope this helps a bit.

Matt

P.S. Thrilled to be able to answer something on the tutor list, instead