5.27

牛顿迭代法

【题目描述】

编写程序,使用牛顿迭代法求方程在x附近的一个实根。

【源代码程序】

def newton_method(a, b, c, d, x0, tolerance=1e-6, max_iterations=100):

    # 定义方程及其导数

    def f(x):

        return a * x ** 3 + b * x ** 2 + c * x + d

 

    def f_prime(x):

        return 3 * a * x ** 2 + 2 * b * x + c

 

    # 开始迭代

    for _ in range(max_iterations):

        # 计算当前迭代值

        x1 = x0 - f(x0) / f_prime(x0)

        # 如果迭代值的变化小于容忍误差,则认为已经找到了根

        if abs(x1 - x0) < tolerance:

            return round(x1, 2)

        # 更新迭代值

        x0 = x1

 

    # 如果达到最大迭代次数仍未找到根,则返回None

    return None

 

 

# 输入方程系数a、b、c、d和实数x

a, b, c, d, x = map(float, input().split())

 

# 使用牛顿迭代法求方程的实根

root = newton_method(a, b, c, d, x)

 

# 输出结果

print(root)

【运行测试

 

posted on 2024-05-27 21:44  Daniel350  阅读(2)  评论(0编辑  收藏  举报