4 基本数值算法
4.3 非线性方程组
4.3.1 非线性方程的特性
存在性和唯一性
非线性方程解存在性和唯一性的情形,要比线性方程复杂得多
一个非线性方程的解,可能的情形有很多种
如果f是闭区间
上的连续函数,且有
,则在区间
内一定有一维非线性方程
的解,但这个有根判别准则很难推广到n维空间。
如果
但是
,则
是非线性方程的m重根。
敏感性和变态性
非线性方程
,
是方程的近似解,可能有两种描述:
说明残差很小
近似解与真解的接近程度,前向误差(更为准确)
只有在问题良态的条件下,残差小才意味着解是精确的。
方程
的绝对条件数为
,函数求值
的绝对条件数为
,因为
,所以不能用相对条件数。
非线性方程
,如果在解
处的切线接近水平,则求根问题是病态的,所以具有重根的问题是病态的。
4.3.2 非线性方程的求解
二分法、不动点迭代、牛顿法、割线法、反插
两大类方法,第一类需要知道根所在的区间,但求解过程相对简单,收敛性能保证;另一类从某个初值出发进行迭代,求解过程相对复杂,而且收敛性不能保证,和初值的选取很有关系。
第一类的代表方法是二分法;第二类方法包括牛顿法、割线法等。
二分法:每次确定解在某一半区间内
迭代法的讨论:设方程的真解为
,第k步得到的近似解为
,则相应的误差为
,如果满足下式(C为大于零的常数),称迭代法的收敛速度为r
若r=1且C<1,收敛是线性的;若r>1,收敛是超线性的;若r=2,收敛是平方的。
二分法的收敛速度是线性的。
线性收敛和超线性收敛,差别在于每次迭代后,近似解的有效数字增加是否是一个常数。
解是否足够好,还需要关注问题的病态性和残差
。
不动点迭代:
若对于函数
,存在x满足
,则称x为g的不动点。记
,则g的不动点就是方程
的根。
不动点迭代就是利用迭代式
,求解方程
。
有很多不动点函数,但是不同的不动点函数,迭代求解的效果完全不同。
不动点迭代的收敛性:
,对于不动点迭代
,
是前向误差,而
是后向误差,因此函数g在
的绝对条件数为
。因此当不动点迭代线性收敛时,条件数
正好是收敛速度。而
,则表明不动点迭代的收敛速度是超线性的。
设
为g的不动点:
如果
,存在一个包含
的区间,如果初值落在这个区间内,则不动点迭代是收敛的;
如果
,不动点迭代是发散的;
如果
,不动点收敛的速度是线性的;
如果
,不动点收敛的速度至少是超线性的。
牛顿法
按照这个迭代公式求解非线性方程
的方法叫牛顿法:
令
,则符合不动点迭代的形式
。
牛顿法至少是超线性收敛的。
经过一通暴算得到:
,
,所以牛顿法是平方收敛的。
需要注意:初值的选取很重要,必须接近方程的根,并且
举一个例子:
求解
,导数
。
牛顿迭代法公式:
取
,迭代求解的过程如下:
多重根
如果
是非线性方程
的m重根,
,则:
牛顿迭代公式:
,
对多重根的迭代收敛速度退化为线性。
割线法:
是一种准牛顿法,采用迭代过程前面两个点
和
形成的割线来拟合切线:
割线法的迭代公式为:
反插:
割线法利用前两次的迭代值决定一条直线,用这条直线与x轴的交点作为下一次的迭代值。
可以通过高阶的多项式拟合来提高收敛速度,但如果
与x轴没有交点,迭代就会失败。
因此,拟合二次多项式
,
与x轴的交点为下一次的迭代值,这样的插值方法被称为反二次插值,收敛速度是超线性的。
保护法:综合二分法的安全和牛顿法的超线性收敛,在一个较小的有根区间外采用安全的二分法,在区间内采用高效的迭代方法。