浅谈不动点法在数列中的应用
作者:互联网
浅谈不动点法在数列中的应用
不动点法(fixed point method)是解方程的一种一般方法,对研究方程解的存在性、唯一性和具体计算有重要的理论与实用价值。数学中的各种方程,诸如代数方程、微分方程和积分方程等等,均可改写成 \(x=f(x)\) 的形式。
不动点法在解释线性空间,动态规划以及其他领域的问题中都有很重要的应用。
压缩映射与巴拿赫不动点定理(仅限于了解,与文章内容无直接关联)
映射的图论理解
我们高中阶段学习的函数其实是数集 \(A\) 到数集 \(B\) 的映射,其中 \(\forall x\in A\) 有且仅有唯一的 \(y\in B\) 与之对应。
那么我们可以用一张有向二分图来表示这种映射关系:
这是一种一一对应的情况,例如其中 \(f(2)=7\)
不动点的概念与性质
对于函数 \(y=f(x)\),若 \(f(x_0)=x_0\),则称 \(x=x_0\) 是函数的一个一阶不动点。
类似地,如果有 \(f(f(x_0))=x_0\),则称 \(x=x_0\) 是函数的一个二阶不动点。
令 \(f^{(n)}(x)=\underbrace{f(f(f(\cdots f}_{n个f}(x))))\),并补充定义 \(f^{(0)}(x)=x\),那么如果有 \(f^{(n)}(x_0)=x_0\),则称 \(x=x_0\) 是函数的一个 \(n\) 阶不动点。
类似于零点和极值点,不动点不是点,而是一个横坐标。
利用图论来思考映射,我们不难得出:一个函数的不动点也是它的任意次迭代函数的不动点。
也就是说,\(x_0\to x_0\) 这个循环在一直进行下去,这也是不动点的不动之所在。
引例
已知数列 \(\{a_n\}\) 满足 \(a_{n+1}=2a_n+2,n\in \N^*\),求 \(\{a_n\}\) 的通项公式。
啪的一下,很快啊!
只需要 \(a_{n+1}+2=2(a_n+2)\),求解 \(b_{n+1}=2b_n\) 即可。
但是对于很多复杂递推公式来说,人类直接观察可解的题目是非常有限的,这其中要求我们了解不动点法的原理及其正确性。
递推数列与函数迭代
文章开头说过,利用不动点法在于求解 \(x=f(x)\) 类型的函数。
放在数列里,\(a_{n+1}=f(a_n)\) 。
引例中 \(f(a_n)=2a_n+2\)。
所谓函数迭代,其实就是一步步地去计算:
\[\begin{align} a_2&=f(a_1)\\ a_3&=f(a_2)=f(f(a_1))\\ a_4&=f(a_3)=f(f(a_2))=f(f(f(a_1)))\\ &\cdots \end{align} \]所以求解 \(a_n\) 的过程可以表示为 \(a_n=f^{(n-1)}(a_1)\),于是,求解数列通项的过程就转化为了求解数列迭代的过程。
换元法
引例中,我们其实是通过换元将递推公式复杂的数列 \(\{a_n\}\) 转化为了易于求解的数列 \(\{b_n\}\),进而反解得到 \(\{a_n\}\) 。
这启示我们要探究换元前和换元后两个函数间的关系。
对于一个函数 \(y=f(x)\),我们令 \(t=\varphi(x)\) 。
为了研究简便,我们不妨令 \(t=\varphi(x)\) 是一一对应的情况,这样 \(x=\varphi^{-1}(t)\) 。
在函数迭代的过程中,如果发生了 \(x\to f(x)\) 的变化,那么我们也需要找到一种 \(t\to g(t)\) 的变化方法,来满足数列 \(\{b_n\}\) 的迭代过程。
不难得出,\(g(t)=\varphi(f(x))=\varphi(f(\varphi^{-1}(t)))\),其中 \(f(x)\) 是下一个 \(x\) 对应的值。
可以得到,\(g^{(n)}(t)=\varphi(f^{(n)}(\varphi^{-1}(t)))\),也就是说,先让 \(x\) 迭代 \(n\) 次变为 \(f^{(n)}(x)\),再利用 \(g^{(n)}(t)=\varphi(f^{(n)}(x))=\varphi(f^{(n)}(\varphi^{-1}(t)))\) 求解。
最终我们得出结论:
\[g^{(n)}(t)=\varphi(f^{(n)}(\varphi^{-1}(t))) \]不动点法解决求数列通项问题
利用上面的结论,我们假设 \(x=x_0\) 是 \(f(x)\) 的一个一阶不动点,那么 \(t_0=\varphi(x_0)\) 也是 \(g(t)\) 的一个一阶不动点(\(x\) 不动了对应的 \(t\) 肯定也不动)。
所以我们就找到了函数 \(f(x)\) 和函数 \(g(t)\) 之间不动点的关系,它们在数值上表示为 \(t_0=\varphi(x_0)\) 。
我们回到数列中来,对于一个递推公式 \(a_{n+1}=f(a_n)\),在可以利用不动点法求解的情况下,一定会整理为 \(b_{n+1}=k\times b_n\) 的形式(等比形式)。
而对于引例中的 \(b_{n+1}=2b_n\) ,这个数列的不动点显然是 \(0\)。
推广到 \(b_{n+1}=k\times b_n\) 的形式,数列的不动点仍然是 \(0\)。
于是 \(t_0=\varphi(x_0)\) 可以改写为 \(\varphi(x_0)=0\),这意味着只要知道了 \(x_0\),我们就可以构造出一个 \(t=\varphi(x)\) 的映射,其中求解\(\varphi(x)\) 的过程就是求数列通项时的构造新数列的过程。
自此,我说明了不动点法求解通项公式的原理,让我们再次回到引例:
\[a_{n+1}=2a_n+2 \]求解不动点得 \(x_0=-2\),因为 \(t_0=\varphi(x_0)=0\),所以 \(\varphi(x)=x-x_0=x+2\) 。
这也是上数学课时要求的:
- 求解不动点 \(x_0\)
- 两边减去不动点 \(x_0\)
进而便可以得到等比数列形式的式子。
没有不动点的情况
这位老哥延申到了复数域的范围,超出了本文内容所讲述的范围,大家有兴趣的可以学习一下。
标签:函数,迭代,求解,varphi,法在,不动点,浅谈,数列 来源: https://www.cnblogs.com/Liang-sheng/p/16683935.html