牛顿法求解n阶非线性方程

在数值计算的应用中,我们有时候会经常遇见需要求解非线性方程的情况。这里介绍牛顿求解法,来解决n次非线型方程求解的问题。

假设方程f(x) = a0 + a1*x + a2*x^2 + ... + an*x^n = 0 (其他非此形式的函数也可以泰勒展开成此形式,当然要能满足泰勒展开的条件。你不用担心做泰勒展开时会有太多系数,因为在迭代过程中,我们只需要用前2个系数即可)

牛顿求解法,也称为牛顿迭代法(有的地方只在牛顿求解法用在方程sqrt(x) - n = 0的求解时才称为牛顿迭代法)。 求解过程按如下步骤完成:

  1. 取一个初始值x0, 近似取f(x0 + d0) = f(x0) + d0*f'(x0)
  2. 令f(x0) + d0*f'(x0) = 0,求得d0 = -f(x0)/f'(x0)
  3. 再取x1 = x0 + d0, 并近似取f(x1 + d1) = f(x1) + d1*f'(x1)
  4. 不断重复2,3步骤,根据xn的值来求xn+1的值
  5. 直到|xn+1 - xn |足够小,或者满足其他指定条件时,停止迭代,并取xn+1为方程f(x)=0的解

初始值x0是比较影响求解答案的。一个不好的x0可能会导致迭代发散,而一个切当的x0可能会让问题很快收敛。在实际应用中如何取x0和如何判断收敛条件是算法应用的关键。

发表评论

邮箱地址不会被公开。 必填项已用*标注