求解x²-2=0(x>0)的近似解算法

问题:求解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))
二分法求方程近似解

 

posted @ 2019-10-17 22:19  walle_zhao  阅读(1397)  评论(0编辑  收藏  举报