前言
上一篇文章,介绍了线性迭代法求解方程组的Jacobi迭代法和Gauss-Seidel迭代法,下面将介绍非线性方程组迭代法。
一、简单迭代法
对于非线性问题形如
,求解其根。初中高中阶段我们都学习过一次,二次,三次求解根的方法,但是阶数大于等于四之后,解析法很难求解到精确的根,因此这里提出了迭代法来求解非线性方程的根问题。
对于f(x)=0在区间[a,b]上,如果仅有一个根,则称[a,b]为单根区间,多个根称为多根区间。多根问题较为复杂,我们主要研究方程在单根区间上的求解方法。
简单迭代法是将f(x)=0转换为一个同解的方程
,通过迭代法求解
满足该等式。
简单迭代法
同样的称
迭代法收敛。迭代法的几何直观理解如下图所示,
实际上,我们很容易看出来
的构造方式很多,但是迭代法的收敛与发散,依赖于迭代函数的构造,那么迭代函数须满足什么条件,迭代法才能收敛呢?
迭代法收敛定理
显然图中箭头位置指向的[a, b]区间很难验证,具体多大无从得知,但是我们一般都只在根的附近区间来进行迭代法的运算,当区间足够小,就能通过迭代法确定解。因此我们要求在根
的附近满足
,则该迭代法局部收敛。(后续谈到的收敛如果不特殊指明都是局部收敛)。
有关L的推导公式需要借助于微分中值定理,
通过公式,我们还可以通过L,来确定迭代需要的步数。
虽然算法可以正常收敛,但是收敛速度并不相同。这里引入收敛速度的阶的概念,作为判断迭代法收敛速度的重要标准。
收敛阶
先给出迭代法收敛阶的定义,
上面结论的推导是借助于泰勒公式实现的,
因此,如果想要证明一种迭代法是至少平方收敛的,则只需要证明其一阶导函数等于零即可
。
二、Newton收敛法
首先定义牛顿爹迭代法迭代格式,
这种迭代格式是如何推导得到的呢?
令
,若要平方收敛,则满足
,因此求导得到
Newton法迭代格式由此得到。
牛顿法性质这么好,但是其实是有要求的:
- 牛顿法好处是收敛的很快,但坏处是局部收敛。
- 牛顿法要求不能有重根。
- 牛顿法要求有良好的初始点。
实际计算过程中,有时导数的计算我们并不喜欢,比如Newton中的
,因此我们提出割线法来替代求导,
需要注意的是割线法或弦截法的收敛阶只有1.618,是局部超线性收敛的。如果有好的初始点还是建议使用Newton法,收敛阶大于1的只有牛顿法和割线法两种。
从几何角度来看,Newton法是切线法,而割线法是一种以直代曲的方法。
还有单步弦截法,
三、多根区间上的逐次逼近法
上面探讨的都是单根区间的求解问题,我们不免要讨论多根区间的问题。
多根区间主要情况有两种,
我们主要采用二分法的策略来迭代计算求解,
二分法作用:
- 用于求方程的近似根,有根区间趋于零的速度较慢。
- 可用于求迭代法的初始值:从某个区间[ci,di]开始使用其他迭代法求解,将 或 作为迭代法的初始值。
- 是一种好的并行算法。
有重根的多根区间
如果是有重根的多根区间,
上面是改进后的Newton迭代法,将线性收敛重新变为至少平方收敛。
总结
以上内容是全部的非线性方程迭代法求解过程,对于数值求解方程根非常有用。之后将介绍幂法与反幂法的相关知识。