下面內容段是關於python計算函數 f(x) = 0的根的內容,應該是對你們也有用。
''' root = bisection(f,x1,x2,switch=0,tol=1.0e-9). Finds a root of f(x) = 0 by bisection. The root must be bracketed in (x1,x2). Setting switch = 1 returns root = None if f(x) increases upon bisection. '''
from math import log,ceil
import error
def bisection(f,x1,x2,switch=1,tol=1.0e-9):
f1 = f(x1)
if f1 == 0.0: return x1
f2 = f(x2)
if f2 == 0.0: return x2
n = ceil(log(abs(x2 - x1)/tol)/log(2.0))
for i in range(n):
if (switch == 1) and (abs(f3) > abs(f1))
and (abs(f3) > abs(f2)):
return None
if f3 == 0.0: return x3
else: x2 = x3; f2 = f3
return (x1 + x2)/2.0 複製代碼