牛顿法迭代法

发布于:2023-01-16 ⋅ 阅读:(349) ⋅ 点赞:(0)

   一道mo平台的python练习题,用到了牛顿迭代法

#本题要求使用牛顿法求解一元二次方程
#1 2x^2+3x-2  4*x+3  输出样式 0.0 2x^20+3x-2
#程序样式 x**2+x=1 f(x)=x**2+x-1
ini_root = int(input())
f = input()
f_ = input()
f = (ini_root) - (2*(ini_root)**2+3*(ini_root)-2)/(4*(ini_root)+3)
while abs(f-(ini_root))>1e-6:
    ini_root = f
    f = (ini_root) - (2*(ini_root)**2+3*(ini_root)-2)/(4*(ini_root)+3)
print(format(f, '.1f'))

查阅了相关资料:(百度搜索) 

   多数方程不存在求根公式,因此求精确根非常困难,甚至不可解,从而寻找方程的近似根就显得特别重要。方法使用函数的泰勒级数的前面几项来寻找方程的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。

  利用迭代算法解决问题,需要做好以下三个方面的工作:

一、确定迭代变量

在可以用迭代算法解决的问题中,至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式

所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制

在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析得出可用来结束迭代过程的条件。