python求方程式的根_python计算方程式根的方法

本文实例讲述了python计算方程式根的方法。分享给大家供大家参考。具体实现方法如下:

‘‘‘ roots = polyRoots(a).

Uses Laguerre‘s method to compute all the roots of

a[0] + a[1]*x + a[2]*x^2 +...+ a[n]*x^n = 0.

The roots are returned in the array ‘roots‘,

‘‘‘

from evalPoly import *

from numpy import zeros,complex

from cmath import sqrt

from random import random

def polyRoots(a,tol=1.0e-12):

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‘

def deflPoly(a,root): # Deflates a polynomial

n = len(a)-1

b = [(0.0 + 0.0j)]*n

b[n-1] = a[n]

for i in range(n-2,-1,-1):

b[i] = a[i+1] + root*b[i+1]

return b

n = len(a) - 1

roots = zeros((n),dtype=complex)

for i in range(n):

x = laguerre(a,tol)

if abs(x.imag) < tol: x = x.real

roots[i] = x

a = deflPoly(a,x)

return roots

raw_input("\nPress return to exit")

希望本文所述对大家的Python程序设计有所帮助。

原文:http://www.jb51.net/article/65627.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值