自嵌套函数的递推和求和
高中的时候做过一道题,着实把我难住了。自嵌套本身难度一般,但是它的目标是为这个抽象函数求和,这也就导致了一个问题——在不知道生成方程的时候,我该如何求和。下面我们会从一个例题出发。
已知 \(f:\mathbb{N}^*\rightarrow\mathbb{N}^*\),\(f(n)\) 为增函数,且满足 \(f(f(n))=2n+1,n\in\mathbb{N}^*\) 求:
\[\sum^{2^n}_{i=1}f(i)\]
自嵌套函数最直接的解决办法就是再套一层,事实上每一个自嵌套的解决方法都是如此,即有:
\[\begin{align} &\Rightarrow f(f(f(n)))=2f(n)+1\\ &\Rightarrow f(2n+1)=2f(n)+1 \end{align}\]这个式子我们先放在一边,先考虑 $f(f(n))$ 的最小情况,即 $f(f(1))=3$,接下来我们进行假设:
- 若 $f(1)=1$,那么 $f(f(1))=f(1)=3$ ,矛盾
- 若 $f(1)=2$,那么 $f(f(1))=f(2)=3$ ,成立
- 若 $f(1)=t\ge3$,因为 $f(f(1))=3$,函数又递增,显然不成立。
所以我们得知 $f(1)=2$ 和 $f(f(1))=f(2)=3$ 进一步的,根据上面的 $f(2n+1)=2f(n)+1$,我们可以得到一些特定的项 $p$。而所有其余项 $q$ 则需要根据 $p$ 进行范围的缩小,例如 $f(3)=5$ 和 $f(5)=7$,由于函数递增且映射到 $\mathbb{N}^*$,所以 $f(4)=6$。
再往下走一层,我们可以知道 $f(6)=f(f(4))=9$,$f(7)=f(f(5))=11$,$f(9)=f(f(6))=13$,其中 $f(8)$ 由 $f(7)$ 和 $f(9)$ 的范围限定得到为 $12$。
我们似乎可以从中发现一些规律,让我们列一个表:
| 项数 | 值 | 生成方式 |
|---|---|---|
| 1 | 2 | 推理 |
| 2 | 3 | 原式 $p$ |
| 3 | 5 | 原式 $p$ |
| 4 | 6- | 范围限定 $q$ |
| 5 | 7- | 原式 $p$ |
| 6 | 9= | 原式 $p$ |
| 7 | 11= | 原式 $p$ |
| 8 | 12- | 范围限定 $q$ |
| 9 | 13- | 原式 $p$ |
| 10 | 14- | 范围限定 $q$ |
| 11 | 15- | 原式 $p$ |
| 12 | 17= | 原式 $p$ |
| 13 | 19= | 原式 $p$ |
| 14 | 21= | 原式 $p$ |
| 15 | 23= | 原式 $p$ |
| 16 | 24 | 范围限定 $q$ |
| 17 | 25- | 原式 $p$ |
| 18 | 26- | 范围限定 $q$ |
| 19 | 27- | 原式 $p$ |
| 20 | 28- | 范围限定 $q$ |
| 21 | 29- | 原式 $p$ |
| 22 | 30- | 范围限定 $q$ |
| 23 | 31- | 原式 $p$ |
| 24 | 33= | 原式 $p$ |
| 25 | 35= | 原式 $p$ |
| … | … | … |
我们考虑 $n$ 个值和序号均连续的项,我们称这些项为 $A_x$:
\[\begin{align} &f(i)=j\quad \cdots\quad f(i+n-1)=j+n-1\\ &f(i+k)=j+k\quad,k\in\{0,\dots,n-1\} \end{align}\]下标范围为 $[i,i+n-1]$
那么它必定可以生成另外 $n$ 个序号连续,但是值相差 $2$ 的的项,我们称这些项为 $B_x$:
\[\begin{align} &f(f(i))=f(j)=2i+1\quad \cdots\quad f(f(i+n-1))=f(j+n-1)=2i+2n-1\\ &f(f(i+k))=f(j+k)=2(i+k)+1\quad,k\in\{0,\dots,n-1\} \end{align}\]下标范围为 $[j,j+n-1]$
我们记 $A_i$ 或 $B_i$ 序列中的第 $k$ 项为 \(A_{ik}\quad和\quad B_{ik}\)
再推一次,我们会发现这生成的 $n$ 个项可以再次生成 $2n-1$ 个值和序号连续的项,其中 $n$ 个项属于原式推出得到的 $p$ 类项:
\[\begin{align} &f(f(j))=f(2i+1)=2j+1\quad \cdots\quad f(f(j+n-1))=f(2(i+n-1)+1)=2j+2n-1\\ &f(f(j+k))=f(2(i+k)+1)=2(j+k)+1\quad,k\in\{0,\dots,n-1\} \end{align}\]对于其中的 $f(2i+2)\quad to\quad f(2i+2n-2)$ 这 $n-1$ 个项,则是需要范围限定才能得到生成公式的 $q$ 类项,即有:
\[f(2i+2)=2(j+1)\quad \cdots\quad f(2i+2n-2)=2(j+n-1)\]我们暂且将上面这个数列称为 $A_{x+1}$。下标范围为 $[2i+1,2(i+n-1)+1]$
[!attention] 二次操作的深层理解 这一个二次生成的过程有一个更深的理解,我们对一个值 $a$ 进行一次操作的时候其实相当于,将函数应用于这个值身上,即 $f(a)$,第二次应用于这个值身上的时候就相当于 $f(f(a))$ 了,也就是我们一开始做的再一次自嵌套的过程。 所以,对于 $f(i)=j$,一定会有 $f(2i+1)=2f(i)+1=2j+1$,这一个再推一次的过程实际上被我们找到的 $f(2n+1)=2f(n)+1$ 所代替了。
对于 $2^n$ 项的重要证明
通过观察,我们发现 $f(2^n)$ 似乎有迹可循,我们不妨用归纳假设法,设 $f(2^n)=3\times2^{n-1}$,则对 $n=1$ 时,有
\[f(2)=3\times2^0=3\quad 成立\]推广到 $n\ge2$,则有
\[\begin{align} f(2(2^{n})+1)&=2f(2^{n})+1\\ \Rightarrow f(2^{n+1}+1)&=2(3\times2^{n-1})+1\\ &=3\times2^{n}+1 \end{align}\]考虑 $f(2(2^{n}-1)+1)=f(2^{n+1}-1)$,其结果为 $2f(2^{n}-1)+1$,我们令 $f(2^{n+1}-1)$ 和 $f(2^{n+1}+1)$ 的差为 $d_n$,则有
\[d_n=(3\times2^n+1)-(2f(2^n-1)+1)=2[f(2^n)-f(2^n-1)]\]另外,注意到 $f(2^{n+1}-1)$ 的结果是奇数,$f(2^n)=3\times2^n$ 的结果是偶数,$f(2^n+1)=3\times2^n+1$ 是奇数。但现在问题是我们并不知道这个 $d_n$ 的值是什么,他有可能是 $2$,也有可能是 $6$…我们需要更多的条件来排除。为解决这个问题,我们证明下面这个引理:
对任意 $n\ge 1$,$f(n+1)-f(n)=1$ 或 $2$ 由于 $f$ 严格递增,两个连续项的差至少为 $1$。假设存在两项间的差大于 $3$,我们假设这两项为 $n$ 和 $n+1$,既有 \(f(n+1)-f(n)\ge 3\) 同时,我们设 $f(n+1)=m’,f(n)=m$,则有 \(f(m')=2(n+1)+1=2n+3\quad f(m)=2n+1\) 但是,别忘了 $m’-m\ge 3$,而 $f$ 又单调递增,所以 $f(m’)$ 到 $f(m)$ 需要能够塞得下至少两个数。显然,这是不可能的。所以假设不成立,两项之间的差小于 $3$。
这也就说明,上面的 $d$ 只有可能是 $2$,所以,我们的归纳是正确的。
$A_{x+1}$ 的补充
对 $A_{x+1}$ 的补充需要结合具体的例子。我们不妨就从 $f(2^2)$ 开始推,并令此时 $A$ 的下标为 $2$,即有 $i=4,j=6,n=2$ $A_2$ 为 ${f(4),f(5)}$,$B_2$ 为 ${f(6),f(7)}$。我们发现这样“初始化”之后的数列,每一个 $A_x$ 的开头下标刚好都是 $2^n$。
对于之后的 $A_n$ 和 $A_{n+1}$,有 $i=2^n,j=3\times2^{n-1},n=n$,经过计算,每一个 $<A_n,B_n>$ 都可以完美的填满 $[2^n,2^{n+1})$ 这片区域,具体计算这里不做赘述。
因此,我们可以将 $A_{x+1}$ 进行扩充,即 $f(2i)=2j$。也就是说,从每一个下标为 $2^n$ 的地方开始,会有 $n$ 个连续的项(即 $A_n$)和 $n$ 个等差为 $2$ 的项(即 $B_n$)。
到此为止,我们总算可以写出 $f(n)$ 的通项公式了。后面的求和这里不做赘述,重要的是思想。