设有一个单变量的非线性方程f(x)=0f(x) = 0f(x)=0,往往这样的方程没有直接的求根公式,因此没有直接方法计算,只能使用迭代法来求数值解,二分法就是这样的一种方法,这里介绍一下其他的几种方法
不动点迭代法
我们可以将非线性方程f(x)=0f(x) = 0f(x)=0改写为x=ϕ(x)x = \phi(x)x=ϕ(x),满足这样式子的x称作ϕ(x)\phi(x)ϕ(x)的一个不动点,求f(x)f(x)f(x)的零点就等价于求ϕ(x)\phi(x)ϕ(x)的不动点,可以选定一个初始值x0x_0x0代入等式的右侧,然后一直以xk+1=ϕ(xk)x_{k+1} = \phi(x_k)xk+1=ϕ(xk)的方式迭代下去,这样可以获得一个序列,如果序列{
xk}\{x_k\}{
xk}有极限:limk−>∞xk=x∗\lim_{k->\infty}x_k = x^*k−>∞limxk=x∗则称该迭代法为不动点迭代法。
我们可以用几何图像来表达不动点迭代法的思想:
如图,选定了初始值x0x_0x0,然后计算出ϕ(x0)\phi(x_0)ϕ(x0)得到了P0P_0P0,然后再过(x0,P0)(x_0,P_0)(x0,P0)引一条与x轴平行的直线,它与直线y=xy=xy=x交于点Q1(P0,P0)Q_1(P_0,P_0)Q1(P0,P0),然令x1=P0x_1 = P_0x1=P0,沿着图上的路径继续走下去,可以发现最终点列{
Pk}\{P_k\}{
Pk}会收敛到P∗P^*P∗,也就是最终迭代的值xkx_kxk会收敛到想要的x∗x^*x∗。
尽管在这个图上最终的结果是收敛的,但是这并不意味着采用不动点迭代法一定是收敛的
例如在这个图上,用不动点迭代法就是不收敛的,点列{
Pk}\{P_k\}{
Pk}会一直往偏离P∗P^*P∗的方向移动。
不动点的存在性和迭代的收敛性
首先考虑ϕ(x)\phi(x)ϕ(x)在[a,b][a,b][a,b]上不动点的存在性和唯一性:
定理1:若ϕ(x)\phi(x)ϕ(x)在[a,b][a,b][a,b]上满足:
(1)对于任意的x∈C[a,b]x∈C[a,b]x∈C[a,b],都有a<=ϕ(x)<=ba<=\phi(x)<=ba<=ϕ(x)<=b
(2)存在正常数L<1L < 1L<1,使对任意的x,y∈[a,b]x,y∈[a,b]x,y∈[a,b],都有∣ϕ(x)−ϕ(y)∣<=L∣x−y∣|\phi(x)-\phi(y)|<=L|x-y|∣ϕ(x)−ϕ(y)∣<=L∣x−y∣
那么ϕ(x)\phi(x)ϕ(x)在[a,b][a,b][a,b]上存在唯一的不动点x∗x^*x∗
证:
若ϕ(a)=a\phi(a) = aϕ(a)=a或ϕ(b)=b\phi(b) = bϕ(b)=b 那么不动点显然存在
若ϕ(a)>a\phi(a) > aϕ(a)>a且ϕ(b)<b\phi(b) < bϕ(b)<b,则设函数f(x)=ϕ(x)−xf(x) = \phi(x) - xf(x)=ϕ(x)−x
由已知有f(a)=ϕ(a)−a>0f(a) = \phi(a) - a > 0f(a)=ϕ(a)−a>0,f(b)=ϕ(b)−b<0f(b) = \phi(b) - b < 0f(b)=ϕ(b)−b<0,由连续函数的性质可知,存在x∗∈(a,b)x^*∈(a,b)x∗∈(a,b)使得f(x∗)=0f(x^*) = 0f(x∗)=0
因此不动点一定存在,下面证其唯一性:
设x1∗,x2∗x_1^*,x_2^*x1∗,x2∗都是ϕ(x)\phi(x)ϕ(x)在(a,b)(a,b)(a,b)上的不动点,则由条件(2)可知:∣x1∗−x2∗∣=∣ϕ(x1∗)−ϕ(x2∗)∣<L∣x1∗−x2∗∣<∣x1∗−x2∗∣|x_1^*-x_2^*| = |\phi(x_1*) - \phi(x_2*)| < L|x_1^*-x_2^*| <|x_1^*-x_2^*|∣x1∗−x2∗∣=∣ϕ(x1∗)−ϕ(x2∗)∣<L∣x1∗−x2∗∣<∣x1∗−x2∗∣ ,矛盾
因此不动点唯一。
定理2:
设ϕ(x)∈C[a,b]\phi(x)∈C[a,b]ϕ(x)∈C[a,b]满足定理1中的两个条件,则对于任意选定的x0∈[a,b]x_0∈[a,b]x0∈[a,b],得到的迭代序列{
xk}\{x_k\}