Skip to content

Chapter2:Solutions of Equations in One variable

2.1 The Bisection Method

简单的二分法,重点是设置中止条件,不然有可能出现死循环。

那我们判断收敛就有相对误差与绝对误差,实际上是后者,但是为什么?

alt text

其实就是可以统一设定\(\epsilon\),而不用通过量级情形更改。

alt text

二分法的简单定理,其实就是要减小间隙,就增大\(n\)

alt text

2.2 Fixed-Point Iteration(不动点迭代)

比如求f(x) = 0那么我们改造x = g(x),左边是得到根,右边是得到不动点。

alt text

看起来是一个很简单的方法,就是不断for循环的把初始值代入,得出新的代入值,再代入。问题是不一定收敛。

alt text

我们简单的观察发现可能与函数的导数有关系(也就是陡峭还是平缓的)

不动点定理:总之就是要满足存在一个常数\(0< k <1\)使得\(|g'(x)| <= k\),同时注意前置条件的定义域与值域。

然后显然就是收敛速度的问题,收敛速度取决于\(k\)的大小,越小越好。

2.3 Newton's Method

基本思路:使用泰勒展开线性化一个非线性方程。

\(p_0\)是一个初始值且保证\(f(p_0) = 0\),那么对于我们实际想得到的值是有\(p_0\)的泰勒展开的,我们的想法就是泰勒展开来近似根\(p\)

alt text

最后计算得到了一个迭代公式\(p_n = p_{n-1} - \frac{f(p_{n-1})}{f'(p_{n-1})}\)

其重点在于在点的附近。

对于证明,我们发现它不再需要把值域放到对应的区间里了。

alt text

发现要求有二阶连续导函数,暂且不提。我们这个证明的叙述是求证存在一个区间,使得存在一个序列,使用牛顿法一定可以用这个序列\({p_n}\)收敛到我们的根\(p\)

证明的基本逻辑是往不动点迭代上去靠。我们实际就是对于\(g(x) = x -\frac{f(x)}{f'(x)}\)进行收敛的证明。

alt text

alt text

深刻利用了\(p\)点的局部性,因为这个区间很小,对于我们\(0< k< 1\)的证明就是认为总是能在这个区间里找到满足条件的\(k\)

如果我们初值设太远了那就不能"map to itself"。

2.4 Error Analysis for Iterative Methods

对迭代方法的误差分析,如何度量。

假设我们利用迭代法算出了一个迭代法收敛于根\(p\),定义\(\lim_{n->∞}\frac{|p_{n+1}-p|}{|p_n-p|^\alpha} = \lambda\)得到了常数\(\alpha\)\(\lambda\),我们可以注意到\(\alpha\)越大收敛越快。同时\(\lambda\)越小,同样的阶数,收敛速度更快。

alt text

但是这是对于根导数不是0,如果是0呢,比如牛顿法?

alt text

牛顿法是二次收敛,所以根附近,牛顿法是快于不动点迭代的。

alt text

这个定理叙述了\(\alpha\)次的收敛,模仿之前的操作就可以得出,泰勒就行。

alt text

这个定理进行了一个牛顿法重根的分析,对于我们有\(m\)次的重根p,就可以将原函数写作\(f(x) = (x-p)^mq(x)\)且有\(q(p)\)不为0。

alt text

伟大的许老师进行困难的推演.jpg。

我们可以发现,在有重根的情况下,牛顿法是收敛的但不是二次收敛的,因此我们需要进行加速。

我们注意到,\(u(x) = \frac{f(x)}{f'(x)}\),这样子\(f(x)\)的重根实际就只是\(u(x)\)的单根,再去对\(u(x)\)进行牛顿法。

\(g(x) = x - \frac{u(x)}{u'(x)} = x - \frac{f(x)f'(x)}{[f'(x)^2] - f(x)f''(x)}\)

2.5 Accelerating Convergence

Aiken's \(\delta^2\) Method

\(\hat{p} = p_n - \frac{(p_{n+1}-p_n)^2}{p_{n+2}-2p_{n+1}+p_n}\)

alt text

利用我们的一个\(\hat{p}\)来试图加快收敛速度。

所以我们研究一下其增长速度,定义了一个概念叫做前向差分:\(\triangle p_n = p_{n+1} - p_n\),我们再递归地定义高阶差分为\(\triangle^k p_n = \triangle(\triangle^{k-1}p_n)\)

定义这个差分符号实际就是为了简化,我们就可以表示\(\hat{p_n} = p_n - \frac{(\triangle p_n)^2}{\triangle^2 p_n}\)

alt text

就是\(g'(p)\)不为1的时候是有二阶收敛的。