问题:求解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))