python计算方程式根的方法

yipeiwu_com6年前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程序设计有所帮助。

相关文章

Python中GIL的使用详解

1、GIL简介 GIL的全称为Global Interpreter Lock,全局解释器锁。 1.1 GIL设计理念与限制 python的代码执行由python虚拟机(也叫解释器主循...

Caffe均值文件mean.binaryproto转mean.npy的方法

mean.binaryproto转mean.npy 使用Caffe的C++接口进行操作时,需要的图像均值文件是pb格式,例如常见的均值文件名为mean.binaryproto;但在使用p...

Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)

Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)

0. 我们如何通过邮件系统完成远程控制电脑(关机、重启等)? 实现思路: 需要有两个邮箱:接收指令邮箱(A)发送指令邮箱(B) 被控制的电脑(查看 A 邮箱): 1. 每隔指...

Django对models里的objects的使用详解

首先我们先熟悉下objects的大致概念. object是模型属性---用于模型对象和数据库交互 . objects = Manager() 是管理器类型的对象 ,是Model和数据库进...

Python字符串处理函数简明总结

返回被去除指定字符的字符串 默认去除空白字符 删除首尾字符:str.strip([char]) 删除首字符:str.lstrip([char]) 删除尾字符str.strip([ch...