python计算方程式根的方法


Posted in Python onMay 07, 2015

本文实例讲述了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 相关文章推荐
python递归计算N!的方法
May 05 Python
详解Python编程中time模块的使用
Nov 20 Python
使用Python编写简单的画图板程序的示例教程
Dec 08 Python
Python排序算法之选择排序定义与用法示例
Apr 29 Python
python 提取key 为中文的json 串方法
Dec 31 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
Python如何把十进制数转换成ip地址
May 25 Python
python如何求100以内的素数
May 27 Python
python计算牛顿迭代多项式实例分析
May 07 #Python
用C++封装MySQL的API的教程
May 06 #Python
使用wxPython获取系统剪贴板中的数据的教程
May 06 #Python
用Python遍历C盘dll文件的方法
May 06 #Python
使用Python压缩和解压缩zip文件的教程
May 06 #Python
Python发送以整个文件夹的内容为附件的邮件的教程
May 06 #Python
在Linux中通过Python脚本访问mdb数据库的方法
May 06 #Python
You might like
收集的php编写大型网站问题集
2007/03/06 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
JavaScript 调试器简介
2009/02/21 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python使用心得之获得github代码库列表
2014/06/25 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
python之array赋值技巧分享
2019/11/28 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
护士个人自我鉴定
2014/03/24 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
交通安全学习心得体会
2016/01/18 职场文书
关于做家务的心得体会
2016/01/23 职场文书