問題:求解x²-2=0(x>0)的近似解算法
算法分析:利用二分法來求。基本思想是:把函數f(x)的零點區間[a,b]“一分為二”(也就是滿足f(a)*f(b)<0),這樣就得到[a,m]和[m,b],然后再判斷f(a)*f(m)<0是否成立,取出零點所在的區間[a,m]或[m,b],然后重復上述步驟,直到區間范圍足夠小。就可以得到方程的近似解。

def equation(x): return x ** 2 - 2 def get_num(a, b, n): """ :param a: 要求解定義域的前區間 :param b: 要求解定義域的后區間 :param n: 要進行二分循環的次數 :return: 如果在這個區間內有接,返回一個更加精確的區間。否則返回原區間。 """ i = 0 while equation(a) * equation(b) < 0 and i <= n: m = (a + b) / 2 if equation(a) * equation(m) < 0: b = m else: a = m i += 1 return a, b print(get_num(1, 2, 10))