python-牛顿迭代法
【题目描述】编写程序,使用牛顿迭代法求方程 在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])