浅谈不动点法在数列中的应用

浅谈不动点法在数列中的应用

不动点法(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\)

这也是上数学课时要求的:

  1. 求解不动点 \(x_0\)
  2. 两边减去不动点 \(x_0\)

进而便可以得到等比数列形式的式子。


没有不动点的情况

这位老哥延申到了复数域的范围,超出了本文内容所讲述的范围,大家有兴趣的可以学习一下。

浅谈“不动点”求数列通项的方法

posted @ 2022-09-11 14:21  ¶凉笙  阅读(2103)  评论(0编辑  收藏  举报