Beispiel #1
0
 def laguerre(a,tol):
     x = random()   # Starting value (random number)
     n = len(a) - 1
     for i in range(30):
         p,dp,ddp = evalPoly(a,x)
         if abs(p) < tol: return x
         g = dp/p
         h = g*g - ddp/p
         f = cmath.sqrt((n - 1)*(n*h - g*g))
         if abs(g + f) > abs(g - f): dx = n/(g + f)
         else: dx = n/(g - f)
         x = x - dx
         if abs(dx) < tol: return x
     print("Too many iterations")
Beispiel #2
0
 def laguerre(a,tol):
     x = random()   # Starting value (random number)
     n = len(a) - 1
     for i in range(30):
         p,dp,ddp = evalPoly(a,x)
         if abs(p) < tol: return x
         g = dp/p
         h = g*g - ddp/p
         f = sqrt((n - 1)*(n*h - g*g))
         if abs(g + f) > abs(g - f): dx = n/(g + f)
         else: dx = n/(g - f)
         x = x - dx
         if abs(dx) < tol: return x
     print 'Too many iterations'