其实“不动点”是一个非常有意思的概念,现在高考题一般不会涉及,但是我现在写的东西比较随心所欲~
这篇文章和竞赛书上的内容相比,介绍的东西相对比较简单。
一、不动点的概念与性质
对于函数
![]()
,若存在实数
![]()
,使得
![]()
,则称
![]()
是函数
![]()
的(一阶)不动点。
同样地,若
![]()
,则称
![]()
是函数
![]()
的二阶不动点。容易发现,对于一阶不动点
![]()
,有
![]()
,因此一阶不动点必然是二阶不动点。
在几何上,曲线
![]()
与曲线
![]()
的交点的横坐标即为函数
![]()
的不动点。
一般地,数列
![]()
的递推式可以由公式
![]()
给出,因此可以定义递推数列的不动点:对于递推数列
![]()
,若其递推式为
![]()
,且存在实数
![]()
,使得
![]()
,则称
![]()
是数列
![]()
的不动点。
数列的不动点有什么性质呢?若从某一项
![]()
开始,数列的取值即为
![]()
,也即
![]()
,则
![]()
,
![]()
,以此类推,根据数学归纳法,可以得到当
![]()
时,
![]()
,也即数列
![]()
在
![]()
之后“不动”了。
有时候,数列
![]()
中的值可能无法取到
![]()
,但是会“接近”
![]()
,也即收敛于
![]()
。所谓“收敛”是指当
![]()
充分大时,数列
![]()
趋向于某个值
![]()
,也即
![]()
,代入递推式即可得到
![]()
。
值得注意的是,不动点也可能不存在(或者说为复数)。文章的最后将会给出一个非常有意思的例子。
二、一阶线性递推数列
所谓“一阶线性递推数列”非常常见,是指下面的这种数列:若数列
![]()
满足
![]()
,其中
![]()
,
![]()
是给定的实数,求数列
![]()
的通项公式。
一般来说,当
![]()
时,原数列即为公差为
![]()
的等差数列,故
![]()
。
当
![]()
时,我们可以通过待定系数法构造一个公比为
![]()
的等比数列:假设存在实数
![]()
,使得
![]()
,展开得到
![]()
,解得
![]()
。
因此数列
![]()
是等比数列,累乘得
![]()
,移项后即可得到通项公式为
![]()
,其中
![]()
。
事实上,上面得到的
![]()
非常特殊:可以发现
![]()
满足方程
![]()
,也即
![]()
是数列
![]()
的不动点。这便可以给我们启发:形如
![]()
的递推数列,在处理的时候可以分以下两种情况:
(1)
![]()
,可以求出它的不动点
![]()
,之后
![]()
为等比数列;
(2)
![]()
,此时不动点不存在,
![]()
是等差数列。
并且由上面的例子得到启发,在数列的递推式两边减去不动点,可以得到较为特殊的结构。
接下来来看一个比较简单的例子:
例1 设数列
![]()
满足
![]()
,
![]()
,求数列
![]()
的通项公式。
解 令
![]()
,解得不动点
![]()
,因此变形得到
![]()
。
也即
![]()
是等比数列,且
![]()
,累乘得
![]()
,因此
![]()
。
由此看来,不动点法虽然可以说是“花里胡哨”的方法,但是在解决问题时比待定系数法直接得多。
三、分式递推数列
接下来我们来看分式递推数列,这也是不动点法主要应用的范围。所谓分式递推数列是指以下类型:若数列
![]()
满足
![]()
,其中
![]()
,
![]()
,
![]()
,
![]()
是给定的实数,求数列
![]()
的通项公式。
这时候要求它的不动点,考虑方程
![]()
,得到了一个二次方程!情况就比上面的题目复杂得多了。我们从几个例子出发:
例2 设数列
![]()
满足
![]()
,
![]()
,求数列
![]()
的通项公式。
考虑方程
![]()
,故
![]()
是数列
![]()
的不动点,根据上面的思路,尝试在递推式两边同时减去
![]()
,得到
![]()
。
注意到左右两边分别出现了
![]()
和
![]()
这样相似的结构,并且都是在分母,我们可以尝试构造新数列
![]()
,当然也可以直接变形:
也即
![]()
,因此数列
![]()
是首项为
![]()
,公差为
![]()
的等差数列,累加得
![]()
,因此
![]()
。
例3 设数列
![]()
满足
![]()
,
![]()
,求数列
![]()
的通项公式。
同样地,考虑方程
![]()
,这时候数列
![]()
有两个不动点
![]()
和
![]()
,分别在递推式两边减去
![]()
和
![]()
后,可以得到:
![]()
,
![]()
。
两式相除得
![]()
,因此数列
![]()
是首项为
![]()
,公比为
![]()
的等比数列,累乘得
![]()
,因此
![]()
。
做一个小小的总结:形如
![]()
的递推数列,处理时也可以分两种情况:
(1)若其有一个不动点
![]()
,则
![]()
是等差数列;
(2)若其有两个不动点
![]()
,
![]()
,则
![]()
是等比数列。
当然,分式递推数列不只有上面那种简单的情况,可以看下面这个例子:
例4 设数列
![]()
满足
![]()
,
![]()
,求数列
![]()
的通项公式。
事实上,
![]()
,这不同于上面的类型,但是否可以用同样的方法处理呢?
同样尝试求它的不动点:
![]()
,因此
![]()
和
![]()
是数列
![]()
的两个不动点,变形得到:
![]()
,
![]()
。
两式相除得
![]()
,又
![]()
,迭代得到
![]()
,由此解得数列的通项公式
![]()
。
由此看来,对于比较复杂的分式型递推数列,也可以通过减去不动点来进行代数变形,从而使等式的两边出现类似的结构,更易于处理。
四、没有不动点的情况?
其实我觉得吧,这里才是这篇文章比较精彩的地方。这就是我在开头讲的,比较有意思的不动点不存在的情况。
例5 设数列
![]()
满足
![]()
,
![]()
,求数列
![]()
的通项公式。
考虑方程
![]()
,
这时候数列的不动点不存在!
但将不动点扩展到复数域内,可以得到
![]()
与
![]()
是数列
![]()
的两个不动点,接下来根据复数的四则运算,我们看看能得到上面结果:
![]()
,
![]()
。
两式相除得
![]()
,又
![]()
,迭代得
![]()
,由此解得
![]()
,并且根据上面的递推公式可以知道,
数列的通项公式虽然由复数给出,但是每一项都是实数。
当然,这道题目还有一种比较漂亮的做法:注意到
![]()
,根据
![]()
变形即可得到
![]()
。
因此作换元
![]()
,整理得到
![]()
,因此
![]()
是等比数列,又根据
![]()
得到
![]()
,故
![]()
,因此
![]()
。
通过这个例子也可以看出“三角复数不分家”。
经 @寒蝉凄切 提醒,当不动点是复数的时候,数列必定是周期数列,例如上面的这个例子。
说到这个,才想起一个新的例子:
例6 设数列
![]()
满足
![]()
,
![]()
,求数列
![]()
的通项公式。
其中
![]()
,因此数列以
![]()
为周期。
考虑方程
![]()
,此时数列也没有不动点(或者说不动点为复数)。