牛顿迭代法
最优化方法
迭代法
\(x\ 为不动点 \iff f(x) = x\)
求解非线性方程 $$f(x)=0$$,可将其改写为具有解为不动点形式的另一个函数 \(g(x)\),使得 \(\forall x[f(x)=0\leftrightarrow g(x)=x]\)。取任意初始值 \(x_0\) 和相应的迭代结果 \(x_n=g(x_{n-1})=(\underbrace{g\circ\cdots\circ g}_{n})(x_0)\),得到序列 \(\lbrace x_0,x_1,\dots,x_n\rbrace\),若 \(\lim_{n\to\infty}x_n\to x_c\),由于 \(\lim_{n\to\infty}g(x_n)=\lim_{n\to\infty}x_{n+1}\to x_c\),故 \(x_c=g(x_c)\) 则 \(x_c\) 为原方程 \(f(x)\) 的一个解。称这一迭代法得到的序列收敛,也称这一迭代法本身收敛;否则发散。
由于构造的 \(g(x)\) 和选择的 \(x_0\) 不同,不同迭代法的收敛性和收敛过程也不同。
压缩映像原理
\(g(x)\ 为区间\ [a,b]\ 上的压缩映像\iff \forall x\in[a,b](g(x)\in[a,b])\text{ and }\exists L_c\in(0,1),\forall x,y\in[a,b](\vert g(x)-g(y)\vert\le L_c\vert x-y\vert)\)
若 \(g(x)\ 为区间\ [a,b]\ 上的压缩映像\),则
- \(g(x)\text{ 在区间 }[a,b]\text{ 上存在 }g(x)=x\text{ 的唯一解 }x_c\)
- \(\forall x_0\in[a,b](\lim_n x_n\to x_c)\)
- 迭代 \(k\) 次后的误差:先验估计误差 \({L_c^k\over1-L_c}\vert g(x_0)-x_0\vert\),后验估计误差 \({L_c\over1-L_c}\vert x_n-x_{n-1}\vert\)
\(L_c\) 代表了压缩比例。由误差公式可知,\(L_c\) 越小,误差越小,收敛速度越快。在比较小的一个区间内,\(L_c\) 近似为函数的导数的绝对值,\(L_c\approx\vert g^\prime(x_c)\vert\),故此绝对值越小,局部收敛速度越快。
加速方法
参数法 \(x_{n+1}={g(x_n)-\theta x_n\over1-\theta}\)
选择适当的 \(\theta\),令 \(\vert h^\prime\vert\) 尽可能小。
松弛法 \(\begin{cases}\omega_n=\frac1{1-g^\prime(x_n)},\\x_{n+1}=(1-\omega_n)x_n+\omega_ng(x_n).\end{cases}\)
Altken 方法 \(\begin{cases}x_{n1}=g(x_n),\\[0.1cm]x_{n2}=g(x_{n1}),\\x_{n+1}=x_{n2}-{(x_{n2}-x_{n1})^2\over x_{n2}-2x_{n1}+x_n}.\end{cases}\)
取参数法的参数 \(\theta_n={g(g(x_n))-g(x_n)\over g(x_n)-x_n}={x_{n2}-x_{n1}\over x_{n1}-x_n}\),在参数法中能够令 \(h^\prime(x)\approx0\)。
牛顿迭代法
迭代法是利用函数的收敛性计算非线性方程的解的一种方法,关键是要保证选择的迭代函数的收敛性。牛顿迭代法如下。
求单调函数 \(f(x) = 0\) 的解
- 选择一个接近零点的数 \(x_0\);
- \(x_{n+1} = g(x_n) = x_n-{f(x_n)\over f^\prime(x_n)}\);
- \(x_n\) 收敛到不动点。
该方法几种不同理解(获得方式):
从图像上看,这一过程实际上是在求解方程 \(x_{n+1}f^\prime(x_n)+f(x_n)-x_nf^\prime(x_n)=0\),这是一个过点 \((x_n,f(x_n))\) 且斜率为 \(f^\prime(x_n)\) 的直线。这条直线来源于原函数的泰勒展开,忽略二阶及以上的项,\(f(x)\approx f(x_0)+f^\prime(x_0)(x-x_0)\)。变形后得到迭代函数 \(g(x)\)。
收敛速度:由压缩映像原理一节可知,\(x_c\) 周围的迭代函数导数绝对值越小,收敛速度越快,若 \(f^\prime(x_c)\ne0\),由于 \(f(x_c)=0\),\(g^\prime(x_c)=1-{{f^\prime}^2(x_c)\over{f^\prime}^2(x_c)}=0\),具有较快的收敛速度。
参数法中,选择迭代函数 \(g(x)=x+f(x)\)。获得速度优化后的新迭代函数 \(h(x)={g(x)-\theta x\over1-\theta},h^\prime(x)={g^\prime(x)-\theta\over1-\theta}={1+f^\prime(x)-\theta\over1-\theta}\),令 \(h^\prime(x)=0\) 得 \(\theta=1+f^\prime(x)=g^\prime(x)\),最终 \(h(x)={g(x)-\theta x\over1-\theta}=x-{f(x)\over f^\prime(x)}\)。但函数名还是被改为 \(g(x)\),即 \(g(x)\leftarrow h(x)\)。
证明牛顿迭代法的收敛性
再由压缩映像原理得出函数收敛性。
由于收敛性关乎 \(\delta\) 的选择,\(\delta\) 应当尽可能小,即 \(x_0\) 尽可能接近 \(x_c\),否则可能无法收敛。以下几个条件可以在区间 \([a,b]\) 建立收敛条件:
- 根存在:\(f(a)f(b)<0\);
- 单调:\(\forall x\in[a,b][f^\prime(x)\ne0]\);
- 导数单调:\(\forall x,y\in[a,b][f^{\prime\prime}(x)f^{\prime\prime}(y)\ge0]\);
- 迭代函数为闭函数:\(\forall x\in[a,b][f(x)f^{\prime\prime}(x)>0]\)。