增补博客 第二十二篇 python 牛顿迭代法
【题目描述】编写程序,使用牛顿迭代法求方程
在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)