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

457次阅读  |  发布于5年以前

本文实例讲述了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程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8