严格写就太累了,这个就当是随手的笔记得了。大概看看原理,不求甚解。
Fixpoint Theorem
定义函数 \(f\) 的不动点 \(r\) 为满足 \(f(r)=r\) 的所有取值
考虑函数 \(f\),定义不动点迭代算法如下:
- 任取 \(X\in D(f)\)
- 计算 \(X=f(X)\)
- 重复步骤2 \(k\) 次
记出现的所有 \(X\) 按顺序构成数列 \(\left\{x_n\right\}\),定理如下
若 \(f\) 是连续函数,且 \(\lim\limits_{n\rightarrow \infty}x_n=r\),那么 \(f(r)=r\)
证明:
\(f(r)=f\left(\lim\limits_{n\rightarrow\infty}x_n\right)=\lim\limits_{n\rightarrow\infty}f(x_n)=\lim\limits_{n\rightarrow\infty}x_{n+1}=r\)
根据定义,\(r\) 是一个不动点
具体解释就是,当 \(k\) 充分大的时候,我们会得到一个充分接近 \(r\) 的近似解(极限的定义)
Convergence Theorem
不动点定理说的是:如果迭代收敛,那么收敛到不动点
收敛定理则给出了迭代收敛的一个充分条件,也就是挑出了一类特殊的可以收敛的函数,给了一个判别条件。
定义 \(e_n=\left|x_n-r\right|\),若 \(\lim\limits_{n\rightarrow\infty}\frac{e_{n+1}}{e_{n}}=S<1\),那么称这个迭代是线性收敛的,收敛率为 \(S\)
若函数 \(f\) 连续可导,并且 \(r\) 是 \(f\) 的一个不动点,那么由 \(|f'(r)|<1\) 可以推出 \(f\) 在以一个足够接近 \(r\) 的初值开始迭代时线性收敛,收敛率为 \(S\)
这句话很难理解,但是结合证明就不太难了:
考虑 \(x_{n+1}=f(x_n)\),那么有 \(\frac{e_{n+1}}{e_n}=\left|\frac{f(x_n)-r}{x_n-r}\right|=\left|\frac{f(x_n)-f(r)}{x_n-r}\right|=\left|f'(\xi)\right|\),其中 \(\xi\in(x_n,r)\),最后一个等号是微分中值定理
取极限就得到了一个 \(x=r\) 处的导数,根据条件有这个极限的绝对值小于 \(1\)
又因为 \(f\) 连续可导,所以 \(f'\) 连续,所以存在邻域 \(U=(r-\delta,r+\delta)\) 使得 \(\forall x\in(r-\delta,r+\delta)\) 都有 \(|f'(x)|<1\)
结合比值就知道,在 \(U\) 内任取一个元素作为初值开始迭代,每次的误差会严格递减。又因为误差单调有下界,所以收敛,并且收敛率就是 \(|f'(r)|<1\) 的
我们把这类收敛称为局部收敛
具体解释就是,如果函数连续可导并且不动点处的导数比较好,那么存在一个区间 \(U\),如果我们在 \(U\) 内开始迭代时,就能线性收敛到不动点,并且收敛率是不动点处的导数。
但是定理反过来不成立,意思是一个并非局部收敛的函数可能在别的地方收敛到此,这是完全可行的。
这个定理可以是后验的,即先算出一个收敛的点,然后求导验证是否满足定理前提。