閑來無事,看到高中的數學課本中有一節“用二分法求方程的近似解”,於是想着實現下:
# !/usr/bin/env python # -*- coding:utf-8 -*- import math def cal_val(fun, start, end, precision): s = fun(start) e = fun(end) if e*s > 0: print "No solution!" return False if s == 0: print "Solution is ",start return start if e == 0: print "Solution is ",end return end while abs(end - start) > precision: mid = (start + end)/2.0 m = fun(mid) if m == 0: print "Solution is ", mid return mid if s*m < 0: end = mid if m*e < 0: start = mid print "Solution is ",start return start def func(x): return 2*math.pow(x, 2) + 5*x - 20 if __name__ == "__main__": val = cal_val(func, 1, 100, 0.0001) print "Result is ",func(val)
雖然沒什么難度,但是多寫寫,總歸是有好處的。