Python查找函数f(x)=0根的解决方法

yipeiwu_com6年前Python基础

本文实例讲述了Python查找函数f(x)=0根的解决方法。分享给大家供大家参考。具体实现方法如下:

''' root = ridder(f,a,b,tol=1.0e-9).
  Finds a root of f(x) = 0 with Ridder's method.
  The root must be bracketed in (a,b).
'''
import error
from math import sqrt
def ridder(f,a,b,tol=1.0e-9):  
  fa = f(a)
  if fa == 0.0: return a
  fb = f(b)
  if fb == 0.0: return b
  if fa*fb > 0.0: error.err('Root is not bracketed')
  for i in range(30):
   # Compute the improved root x from Ridder's formula
    c = 0.5*(a + b); fc = f(c)
    s = sqrt(fc**2 - fa*fb)
    if s == 0.0: return None
    dx = (c - a)*fc/s
    if (fa - fb) < 0.0: dx = -dx
    x = c + dx; fx = f(x)
   # Test for convergence
    if i > 0:
      if abs(x - xOld) < tol*max(abs(x),1.0): return x
    xOld = x
   # Re-bracket the root as tightly as possible
    if fc*fx > 0.0:
      if fa*fx < 0.0: b = x; fb = fx
      else:      a = x; fa = fx
    else:
      a = c; b = x; fa = fc; fb = fx
  return None
  print 'Too many iterations'

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

相关文章

PyQt5每天必学之组合框

PyQt5每天必学之组合框

QComboBox 是一个允许用户从列表选项中选择一项的控件。 #!/usr/bin/python3 # -*- coding: utf-8 -*- """ PyQt5 教程 这...

widows下安装pycurl并利用pycurl请求https地址的方法

widows下安装pycurl并利用pycurl请求https地址的方法

步骤一:下载对应的CURL压缩包并在windows上配置好环境变量 进入CURL官网下载对应的windows压缩包。地址:点击打开链接 把下载好的压缩包解压到自己喜欢的一个目录下,我暂...

python实现端口转发器的方法

本文实例讲述了python实现端口转发器的方法。分享给大家供大家参考。具体如下: 下面的python代码实现端口转发器,支持udp端口转发 由于工作需要用到一个端口转发器,并且要求支持T...

python多线程http压力测试脚本

本文实例为大家分享了python多线程http压力测试的具体代码,供大家参考,具体内容如下 #coding=utf-8 import sys import time import...

python3+PyQt5实现自定义流体混合窗口部件

python3+PyQt5实现自定义流体混合窗口部件

本文通过Python3+PyQt5实现自定义部件–流体混合窗口部件。通过逻辑(窗口)坐标绘制而成。调用setWindow,所有的绘制工作都会根据逻辑坐标系发生。 #!/usr/bin...