[Tutor] Complex roots
Dick Moores
rdmoores at gmail.com
Thu Dec 9 14:42:09 CET 2004
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. For example,
number=complex(5,5):
With
number=complex(5,5)
n=float(4)
the code produces
{0: (1.631, 0.0), 1: (0.0, 1.631), 2: (-1.631, 0.0), 3: (0.0, -1.631)}
And testing:
>>> (0.0 + 1.631j)**4
(7.0764565459210003+0j)
If that's the case, why the line
size=math.sqrt((number.real**2)+(number.imag**2)) ?
Dick
On Thu, 09 Dec 2004 11:52:15 +0000, Matt Williams
<matthew.williams at cancer.org.uk> wrote:
> Further to my previous post, please find some code below:
>
> Hope this helps,
> Matt
>
> #Complex number Roots
> #Matt Williams 9.12.04
>
> import math
>
> number=complex(0.5,0)
> n=float(3)
>
> size=math.sqrt((number.real**2)+(number.imag**2))
>
> arg=math.radians(360/n)
>
> root=1/n
>
> modulus=size**root
>
> theta=float(0)
> roots={}
> i=0
> while i<n:
> y=round(modulus*(math.sin(theta)),3)
> x=round(modulus*(math.cos(theta)),3)
> roots[i]=(x,y)
> theta=theta+arg
> i=i+1
>
> print roots
>
More information about the Tutor
mailing list