python-牛顿迭代法

【题目描述】编写程序,使用牛顿迭代法求方程 图片1.png 在x附近的一个实根。

【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

【输入格式】请在一行中输入方程系数a、b、c、d和实数x,数据中间以空格为间隔。

【输出格式】对每一组输入的数据,输出牛顿迭代法求出的实根(格式为保留小数点后2位,四舍五入)。

【输入样例】1.0 2.0 3.0 4.0 1.0

【输出样例】-1.65

 

关于牛顿迭代法是什么,参考:如何通俗易懂地讲解牛顿迭代法求开方(数值分析)?

代码:

复制代码
num = input()
n1 = num.split(" ")
n = []
for i in n1[::]:
    if i == '':
        n1.remove(i)
for i in n1:
    n.append(float(i))


def f(x):
    return n[0] * pow(x, 3) + n[1] * pow(x, 2) + n[2] * pow(x, 1) + n[3]


def fd(x):
    return 3 * n[0] * pow(x, 2) + 2 * n[1] * pow(x, 1) + n[2]


def newtonMethod(assum):
    x = assum
    a = f(x)
    b = fd(x)
    if f(x) == 0.0:
        print(round(x, 2))
        return x
    else:
        next = x - a / b
        # print('next x = ' + str(next))  # 输出下一条切线的值
    if a - f(next) < 1e-6:
        print(round(next, 2))  # 设置跳出条件,同时输出满足f(x) = 0 的x的值
    else:
        return newtonMethod(next)  # 递归


newtonMethod(n[4])
复制代码

 

posted @   睡觉不困  阅读(1045)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示