[Tutor] Complex roots
Tim Peters
tim.peters at gmail.com
Thu Dec 9 16:41:52 CET 2004
[Dick Moores]
> VERY helpful, Matt. Thanks.
>
> One question: This seems to not compute accurately at all
> when the imaginary part of number=complex() is other than 0.
That's just because the math was wrong <wink>. Starting with theta =
0.0 *assumed* the imaginary part is 0, although I can't guess whether
that was by accident or design.
Try this instead:
def croots(c, n):
"""Return list of the n n'th roots of complex c."""
from math import sin, cos, atan2, pi
arg = abs(c)**(1.0/n)
theta = atan2(c.imag, c.real)
result = []
for i in range(n):
theta2 = (theta + 2*pi*i)/n
x = arg * cos(theta2)
y = arg * sin(theta2)
result.append(complex(x, y))
return result
More information about the Tutor
mailing list