增补博客 第二十二篇 python 牛顿迭代法

【题目描述】编写程序,使用牛顿迭代法求方程
图片1.png
在x附近的一个实根。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】请在一行中输入方程系数a、b、c、d和实数x,数据中间以空格为间隔。
【输出格式】对每一组输入的数据,输出牛顿迭代法求出的实根(格式为保留小数点后2位,四舍五入)。
【输入样例】1.0 2.0 3.0 4.0 1.0
【输出样例】-1.65

def solution(a, b, c, d):


    x = 1.5
    x0 = x  # 用所求得的x值代替x0原来的值
# f用来描述方程的值,fd用来描述方程求导之后的值
    f = a * x0 * x0 * x0 + b * x0 * x0 + c * x0 + d
    fd = 3 * a * x0 * x0 + 2 * b * x0 + c
    h = f / fd
    x = x0 - h  # 求得更接近方程根的x值
    while abs(x - x0) >= 1e-5:
        x0 = x
        f = a * x0 * x0 * x0 + b * x0 * x0 + c * x0 + d
        fd = 3 * a * x0 * x0 + 2 * b * x0 + c
        h = f / fd
        x = x0 - h  # 求得更接近方程根的x值
        return x
if __name__ == '__main__':
    print("请输入方程的系数:")
# a,b,c,d代表所求方程的系数
a, b, c, d = map(float, input().split())
print("方程的参数为:", a, b, c, d)
# x用来记录求得的方程根
x = solution(a, b, c, d)
print("所求方程的根为x=%.6f" % x)

  

posted @ 2024-06-14 12:41  财神给你送元宝  阅读(9)  评论(0编辑  收藏  举报