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

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

Posted in 未分类