python计算方程式根的方法
本文实例讲述了python计算方程式根的方法。分享给大家供大家参考。具体实现方法如下:
'''roots=polyRoots(a). UsesLaguerre'smethodtocomputealltherootsof a[0]+a[1]*x+a[2]*x^2+...+a[n]*x^n=0. Therootsarereturnedinthearray'roots', ''' fromevalPolyimport* fromnumpyimportzeros,complex fromcmathimportsqrt fromrandomimportrandom defpolyRoots(a,tol=1.0e-12): deflaguerre(a,tol): x=random() #Startingvalue(randomnumber) n=len(a)-1 foriinrange(30): p,dp,ddp=evalPoly(a,x) ifabs(p)<tol:returnx g=dp/p h=g*g-ddp/p f=sqrt((n-1)*(n*h-g*g)) ifabs(g+f)>abs(g-f):dx=n/(g+f) else:dx=n/(g-f) x=x-dx ifabs(dx)<tol:returnx print'Toomanyiterations' defdeflPoly(a,root):#Deflatesapolynomial n=len(a)-1 b=[(0.0+0.0j)]*n b[n-1]=a[n] foriinrange(n-2,-1,-1): b[i]=a[i+1]+root*b[i+1] returnb n=len(a)-1 roots=zeros((n),dtype=complex) foriinrange(n): x=laguerre(a,tol) ifabs(x.imag)<tol:x=x.real roots[i]=x a=deflPoly(a,x) returnroots raw_input("\nPressreturntoexit")
希望本文所述对大家的Python程序设计有所帮助。