肉丁土豆园地

安静的小博客里,属于我的编程时光
构造常数列来解高中数组题

好久之前我在某本数学竞赛书的数组章节里看到了一种可以被称之为通过构造常数列来从递推公式中得到通项公式的比较优美的解数组题方法,让我印象非常深刻,于是当时我就开始思考如何在各种地方使用这种非常优美的方法。
最终断断续续花了大概两个周的时间,我把这个方法的大部分都总结完了。
不过现在才写文章来介绍,主要是因为我有点懒吧。

这种方法的优点

  • 不烧脑子,思维不需要“嵌套”
  • 有的时候很优美
  • 不需要考虑 \(n\) 的边界
  • 不需要写汉字

这种方法的缺点

  • 适用范围较小

实例

在开始前,先放出一个实例,对这种方法有一个直观的感受:

已知 \(a_1=1\) ,且 \((n+2)a_{n+1}=na_n\) ,求 \(\{a_n\}\) 的通项公式。

解:

\[\begin{aligned} (n+2)a_{n+1}&=na_n \\ (n+2)(n+1)a_{n+1}&=(n+1)na_n \\ &=\ldots \\ &=(1+1)\cdot 1 \cdot a_1 \\ &=2 \end{aligned} \]

\[\begin{aligned} (n+1)na_n&=2 \\ a_n&=\frac{2}{n(n+1)} \\ &=\frac{2}{n^2+n} \end{aligned} \]

不难看出,这个方法就是

  1. 通过操作递推公式产生同构,
  2. 进而通过连等直接得到同构式的值,
  3. 最后再整理式子,得到通项公式。

由此可知,这种方法最难的地方就是第一步。
那么我们接下来讲讨论几种用于构造同构式的基本方法。

基本方法

当我们讨论构造同构的基本方法,实际上我们是在讲如何消除递推式等号一边的“非同构项”。
就像消消乐一样,当我们消除等号两边的所有“非同构项”,我们就得到了一个纯净的同构式。

我们接下来通过对非同构项进行分类来详细介绍基本方法。

常数项

将递推式两边的常数进行同构化是很简单的。
比如下面这个例子:

\[\begin{aligned} a_{n+1}+2&=a_n \\ a_{n+1}+2(n+1)&=a_n+2n \\ \end{aligned} \]

就构造完了。

进一步,常数如果为 \(k\) ,我们可以得到这个很简单的结论:

\[\begin{aligned} a_{n+1}+k&=a_n \\ a_{n+1}+k(n+1)&=a_n+kn \\ \end{aligned} \]

形如 \(n^b,b \in N^*\) 的项

要消除 \(n^b\) 就需要通过配方法。

这种方法非常繁琐,即使是最常见的 \(a_{n+1}+n=a_n\) 也需要很长时间来进行同构化。
所以当你遇到类似的式子,但是能通过其他方法简单解决时,就别构造常数列了。
不过这里还是介绍一下,毕竟作为基本方法有的时候需要和其他基本方法进行混用。

对于最简单的 \(n^1\) ,方法如下:

\[\begin{aligned} a_{n+1}+n&=a_n \\ a_{n+1}+n+\frac{1}{2}n^2+\frac{1}{2}-\frac{1}{2}&=a_n+\frac{1}{2}n^2 \\ a_{n+1}+\frac{1}{2}(n+1)^2-\frac{1}{2}&=a_n+\frac{1}{2}n^2 \\ a_{n+1}+\frac{1}{2}(n+1)^2-\frac{1}{2}(n+1)&=a_n+\frac{1}{2}n^2-\frac{1}{2}n \\ \end{aligned} \]

对于 \(n^2\) 则是这样:

\[\begin{aligned} a_{n+1}+n^2&=a_n \\ a_{n+1}+n^2+\frac{1}{3}n^3+n+\frac{1}{3}-n-\frac{1}{3}&=a_n+\frac{1}{3}n^3 \\ a_{n+1}+\frac{1}{3}(n+1)^3-n-\frac{1}{3}&=a_n+\frac{1}{3}n^3 \\ a_{n+1}+\frac{1}{3}(n+1)^3-n-\frac{1}{2}n^2-\frac{1}{2}+\frac{1}{2}-\frac{1}{3}&=a_n+\frac{1}{3}n^3-\frac{1}{2}n^2 \\ a_{n+1}+\frac{1}{3}(n+1)^3-\frac{1}{2}(n+1)^2+\frac{1}{2}-\frac{1}{3}&=a_n+\frac{1}{3}n^3-\frac{1}{2}n^2 \\ a_{n+1}+\frac{1}{3}(n+1)^3-\frac{1}{2}(n+1)^2+\frac{1}{6}(n+1)&=a_n+\frac{1}{3}n^3-\frac{1}{2}n^2+\frac{1}{6}n \\ \end{aligned} \]

观察以上式子,除了能看出非常繁琐之外,我们还能发现基本的思想就是:先通过配方把次数最高项同构化,再同构化次数第二高的项,就这么一步一步直到常数项也被同构,最终得到同构式。

因为方法比较机械的,所以应该是有通式的。
但是太麻烦了,而且本身我也不推荐在多项式上硬配方,所以我就先放弃推导通式了。

形如 \(c^{kn+b}\) 的项

这种项也是比较普遍的,比如等比数列的前 \(n\) 项和就满足这个递推公式。
想要同构化这种项需要一点技巧。
这里举个比较简单的例子:

\[\begin{aligned} a_{n+1}+2^n&=a_n \\ a_{n+1}+2^{n+1}&=a_n+2^n \\ \end{aligned} \]

也有稍微复杂一点的,比如:

\[\begin{aligned} a_{n+1}+5^n&=a_n \\ a_{n+1}+\frac{1}{4}(5-1)5^n&=a_n \\ a_{n+1}+\frac{5}{4}\cdot 5^n&=a_n+\frac{1}{4}\cdot 5^n \\ a_{n+1}+\frac{1}{4}\cdot 5^{n+1}&=a_n+\frac{1}{4}\cdot 5^n \\ \end{aligned} \]

如果你能通过这两个式子看出来这个方法是怎么操作的,那就是挺好的。
如果你没看出来,这里也有通式可以给你用来往上套:

\[\begin{aligned} a_{n+1}+a^{kn+b}&=a_n \\ a_{n+1}+\frac{1}{a^k-1}a^{k(n+1)+b}&=a_n+\frac{1}{a^k-1}a^{kn+b} \\ \end{aligned} \]

推导过程

原式为

\[\begin{aligned} a_{n+1}+a^{kn+b}&=a_n \\ a_{n+1}+a^ba^{kn}&=a_n \\ \end{aligned} \]

所以同构后应该长这样

\[\begin{aligned} a_{n+1}+ma^{k(n+1)}&=a_n+ma^{kn} \\ a_{n+1}+ma^{k(n+1)}-ma^{kn}&=a_n \\ a_{n+1}+m(a^k-1)a^{kn}&=a_n \\ \end{aligned} \]

所以得

\[\begin{aligned} m(a^k-1)&=a^b \\ m&=\frac{a^b}{a^k-1} \end{aligned} \]

\(a_{n+1}\) 前面的常数系数

有些递推公式会在 \(a_{n+1}\) 项前面有系数,最常见的就是常数系数,解决方法:

\[\begin{aligned} 3a_{n+1}&=a_n \\ 3^{n+1}a_{n+1}&=3^na_n \\ \end{aligned} \]

如果是 \(a_n\) 前面有系数,处理方法也是一样的:

\[\begin{aligned} a_{n+1}&=5a_n \\ \frac{a_{n+1}}{5^{n+1}}&=\frac{a_n}{5^n} \\ \end{aligned} \]

由于实际操作太简单,这里就不写通式了。

\(a_{n+1}\) 前面形如 \(c^{n^b},b \in N^*\) 的系数

和我们刚才所介绍的形如 \(n^b\) 的项类似,我们通过配方法解决这种情况。
不过由于太麻烦了,这里只展示 \(b=1\) 的示例:

\[\begin{aligned} 3^{2n}a_{n+1}&=a_n \\ 3^{(n+1)^2}a_{n+1}&=3^{n^2+1}a_n \\ 3^{(n+1)^2-(n+1)}a_{n+1}&=3^{n^2-n}a_n \\ \end{aligned} \]

\(a_{n+1}\) 带指数的情况

通过对数工具,我们能解决类似 \((a^{n+1})^a,a_n>0\) 的情况:

\[\begin{aligned} a_{n+1}^3&=a_n \\ 3\lg a_{n+1}&=\lg a_n \\ 3^{n+1}\lg a_{n+1}&=3^n\lg a_n \\ \end{aligned} \]

同样由于实际操作太简单,这里就不写通式了。

特殊方法

还有很多我尚未总结出经验的特殊情况,也可构造出同构。
首先就是开篇给的 demo :

\[\begin{aligned} (n+2)a_{n+1}&=na_n \\ (n+2)(n+1)a_{n+1}&=(n+1)na_n \\ \end{aligned} \]

还有比如一些操作分数的场景,可以发现很多时候都需要结合基本方法:

\[\begin{aligned} a_n-a_{n+1}&=a_{n+1}a_n \\ \frac{a_n-a_{n+1}}{a_{n+1}a_n}&=1 \\ \frac{1}{a_{n+1}}-\frac{1}{a_n}&=1 \\ \frac{1}{a_{n+1}}&=\frac{1}{a_n}+1 \\ \frac{1}{a_{n+1}}-(n+1)&=\frac{1}{a_n}-n \\ \end{aligned} \]

还有

\[\begin{aligned} a_{n+1}+\ln(1+\frac{1}{n})&=a_n \\ a_{n+1}+\ln(\frac{n+1}{n})&=a_n \\ a_{n+1}+\ln(n+1)-\ln n&=a_n \\ a_{n+1}+\ln(n+1)&=a_n+\ln n \\ \end{aligned} \]

还有很多其他情况,不过我基本都忘掉了。
等到时候我又找到类似的,再写在这里吧。

总之,这东西的构造很灵活,需要结合题目来看。
如果同构很容易就能构造出来,那么使用这个方法是很好的;而如果你找了很长时间也没找到如何正确地构造,那还是赶紧换其他方法,不要耽误更多时间。

posted on 2024-05-05 16:49  肉丁土豆表  阅读(5)  评论(0编辑  收藏  举报