一个常规的递推数列不动点法问题及其引申 `zhangzhiyuan|20171125`

2017/11/26 posted in  解题

TODO: 本文暴露出了我曾经的数学基础的弱点, 需要修改

数列 \(\{a_n\}\) 满足 \(a_1 = 2\), \(a_{n+1} = \dfrac{a_n}2 + \dfrac1{a_n}\), 求其通项公式.

Qer: zhangzhiyuan 20171125

“不动点法”好像不好用

尝试采用不动点法:

不动点方程为
\[
x = \dfrac x2 + \dfrac1x
\]
解得 \(x = \pm \sqrt2\). 取不动点 \(\sqrt2\), 将递推公式改写为
\[
a_{n+1} - \sqrt2 = \dfrac{a_n}2 + \dfrac1{a_n} - \sqrt2 = \dfrac{(a_n - \sqrt2)^2}{2 a_n}
\]
到这里仍然没有特别好的办法.

研究一下这个数列的前几项

已知 \(a_1 = 2\), 那么数列紧接下来的几项是
\[
\begin{aligned}
a_2 &= \dfrac22 + \dfrac12 = \dfrac32 \\
a_3 &= \dfrac34 + \dfrac23 = \dfrac{9+8}{4 \times 3} = \dfrac{17}{12}\\
a_4 &= \dfrac{17}{24} + \dfrac{12}{17} = \dfrac{289+288}{24 \times 17} = \cdots
\end{aligned}
\]

显然, 这个数列中的每一项都是有理数, 但是到 \(a_4\) 的时候, 分子和分母都已经是非常大的数.

观察一下 \(a_3\) 和 \(a_4\) 的计算过程, 会注意到一个有趣的现象, 就是通分以后的分子总是两个相邻的整除之和 (\(a_3\) 中是 \(9+8\), \(a_4\) 中是 \(289+288\)), 并且这两个相邻整数都跟前一项的分子和分母相关. 这就提示我们应该把 \(a_n\) 的分子和分母分开做一下研究.

设 \(a_n = \dfrac{p_n}{q_n}\), \(p_n\) 和 \(q_n\) 都是正整数. 对于数列的前几项:1

  • \(p_2 = 3\), \(q_2 = 2\), \(a_2 = \dfrac32\);
  • \(p_3 = 17\), \(q_3 = 12\), \(a_3 = \dfrac{17}{12}\);
  • \(p_4 = 289+288 = 577\), \(q_4 = 24 \times 17 = 408\), \(a_4 = \dfrac{577}{408}\) 等等.

根据数列 \(\{a_n\}\) 的递推公式,
\[a_{n+1} = \dfrac{a_n}2 + \dfrac1{a_n} = \dfrac{p_n}{2 q_n} + \dfrac{q_n}{p_n} = \dfrac{p_n^2 + 2 q_n^2}{2 p_n q_n}\]
于是接下来有这么两个问题:

  1. 对于 \(a_{n+1}\), 应该有 \(a_{n+1} = \dfrac{p_{n+1}}{q_{n+1}} = \dfrac{p_n^2 + 2 q_n^2}{2 p_n q_n}\), 那么这里我们是否就一定可以说 \(p_{n+1} = p_n^2 + 2 q_n^2\) 而 \(q_{n+1} = 2 p_n q_n\)? 


    • 或者说 \(p_n^2 + 2 q_n^2\) 和 \(2 p_n q_n\) 是否总是互质? 万一出现不互质的情况, \(\{p_n\}\) 和 \(\{q_n\}\) 的递推关系就有可能会变得很复杂.
  2. 根据上面总结出来的规律, 这里分子中的 \(p_n^2\) 和 \(2 q_n^2\) 应该是两个相邻的整数. 这个结论是否总是成立呢?

这两个问题单独拿出来都很难回答, 但如果注意到它们之间有联系, 问题其实要好解决的多.

首先, 我们姑且忽略 \(p_n^2 + 2 q_n^2\) 和 \(2 p_n q_n\) 是否互质的问题, 强行采用这个递推关系:
\[
\begin{cases}
p_{n+1} = p_n^2 + 2 q_n^2 \\
q_{n+1} = 2 p_n q_n
\end{cases}
\]
那么,
\[
p_{n+1}^2 - 2 q_{n+1}^2 = (p_n^2 + 2 q_n^2)^2 - 2 (2 p_n q_n)^2 = (p_n^2 - 2 q_n^2)^2
\]
于是, 只要一开始 \(p_n^2 - 2 q_n^2\) 等于 \(1\), 那么后面的 \(p_{n+1}^2 - 2 q_{n+1}^2\) 永远等于 \(1\). 而这个题里“凑巧”有
\[
p_2^2 - 2 q_3^2 = 3^2 - 2 \times 2^2 = 1
\]
也就是说, \(p_n^2\) 和 \(2 q_n^2\) 确实总是两个相邻的整数.

有了这个结论, 也就不难证明 \(p_n^2 + 2 q_n^2\) 和 \(2 p_n q_n\) 是互质的. 但是, 当我们发现 \(\{p_n\}\) 和 \(\{q_n\}\) 的递推关系所具有的性质以后, 上面这两个问题其实也就不是那么重要了, 我们可以就研究这组递推数列, 看是否又能够借此找到 \(\{a_n\}\) 的通项公式.

寻找通项公式

下面我们要研究这样一个递推数列组 \(\{p_n\}, \{q_n\}\), (\(n \in \mathbb N^*, n \ge 2\))2: \(p_2 = 3, q_2 = 2\), 且
\[
\begin{cases}
p_{n+1} = p_n^2 + 2 q_n^2 \\
q_{n+1} = 2 p_n q_n
\end{cases}
\]

这组递推公式, 它的形式能够给我们的另一个提示就是, 可以设法构造完全平方公式. 只是这样的构造有一个代价, 就是会引入无理数. 但是我们尝试一下, 很快就能发现这个代价不算什么.
\[
p_{n+1} + \sqrt2 q_{n+1}
= p_n^2 + 2 q_n^2 + 2 \sqrt2 p_n q_n
= (p_n + \sqrt2 q_n)^2
\]
另外还有一个是
\[
p_{n+1} - \sqrt2 q_{n+1}
= p_n^2 + 2 q_n^2 - 2 \sqrt2 p_n q_n
= (p_n - \sqrt2 q_n)^2
\]
这两个递推关系都可以算是极为简单的3, 根据它们都可以直接写出 \(p_n \pm \sqrt2 q_n\) 的通项公式了:

\[
\begin{aligned}
p_n + \sqrt2 q_n
&= (p_{n-1} + \sqrt2 q_{n-1})^2 \\
&= [(p_{n-2} + \sqrt2 q_{n-2})^2]^2 = (p_{n-2} + \sqrt2 q_{n-2})^{2^2} \\
&= \cdots \\
&= (p_2 + \sqrt2 q_2)^{2^{n-2}} = (3 + 2\sqrt2)^{2^{n-2}} = (\sqrt2+1)^{2^{n-1}}
\\[1em]
p_n - \sqrt2 q_n
&= (p_2 - \sqrt2 q_2)^{2^{n-2}} = (3 - 2\sqrt2)^{2^{n-2}} = (\sqrt2-1)^{2^{n-1}}
\end{aligned}
\]
因此,
\[
\begin{cases}
p_n = \dfrac{(\sqrt2+1)^{2^{n-1}} + (\sqrt2-1)^{2^{n-1}}}2 \\
q_n = \dfrac{(\sqrt2+1)^{2^{n-1}} - (\sqrt2-1)^{2^{n-1}}}
{2\sqrt2}
\end{cases}
\]
于是,
\[
\begin{aligned}
a_n = \dfrac{p_n}{q_n}
&= \sqrt2 \cdot \dfrac{(\sqrt2+1)^{2^{n-1}} + (\sqrt2-1)^{2^{n-1}}}{(\sqrt2+1)^{2^{n-1}} - (\sqrt2-1)^{2^{n-1}}} \\
&= \sqrt2 \cdot \dfrac{(\sqrt2+1)^{2^n} + 1}{(\sqrt2+1)^{2^n} - 1} \\
\end{aligned}
\]

按照上面的推导过程, 这些递推公式仅对 \(n \ge 2\) 的情况成立, 但是我们可以强行计算一下 \(n=1\) 的情况, 此时
\[
p_1 = \sqrt2, q_1 = \dfrac1{\sqrt2}, a_1 = 2
\]

可以看到 \(a_n\) 的通项公式在 \(n = 1\) 的时候仍然满足, 只是 \(p_n\) 和 \(q_n\) 的通项公式会导致 \(p_1\) 和 \(q_1\) 计算出来都是无理数. 但就这个题目本身的要求而言, 我们的目标已经达到了.

采用不动点法的快速解法

update 20111128

被同事老师提醒, 这个题其实还是不动点方法, 只是不动点法中的另一种技巧.

上面已经得到过, 取不动点 \(\sqrt2\), 将递推公式改写为
\[
a_{n+1} - \sqrt2 = \dfrac{(a_n - \sqrt2)^2}{2 a_n}
\]
另取不动点 \(-\sqrt2\), 将递推公式改写为
\[
a_{n+1} + \sqrt2 = \dfrac{(a_n + \sqrt2)^2}{2 a_n}
\]
两式相除可得
\[
\dfrac{a_{n+1} - \sqrt2}{a_{n+1} + \sqrt2} = \left( \dfrac{a_n - \sqrt2}{a_n + \sqrt2} \right)^2
\]
因此,
\[
\dfrac{a_n - \sqrt2}{a_n + \sqrt2} = \left( \dfrac{a_1 - \sqrt2}{a_1 + \sqrt2} \right)^{2^{n-1}} = \left( \dfrac{2 - \sqrt2}{2 + \sqrt2} \right)^{2^{n-1}} = \left( \sqrt2-1 \right)^{2^n}
\]
将 \(a_n\) 反解出来即可.


  1. 注意 \(a_1 = 2\) 似乎找不到对应的比较合理的整数 \(p_1\) 和 \(q_1\), 但这并不是一个特别致命的问题, 我们暂且忽略它. 

  2. 是的, 这个数列没有第“一”项, 但如上所述, 这个问题不致命. 

  3. 但是依然有两件事情非常值得注意: 一是, 把这两个递推式相乘得到的就是 \(p_{n+1}^2 - 2 q_{n+1}^2 = (p_n^2 - 2 q_n^2)^2\), 这个等式在前面推导过; 另外, 注意由于所有的 \(p_n,q_n\) 都是整数, 所以其实由 \(p_{n+1} + \sqrt2 q_{n+1} = (p_n + \sqrt2 q_n)^2\) 也能直接推导出 \(p_{n+1} - \sqrt2 q_{n+1} = (p_n - \sqrt2 q_n)^2\).