7.5.1 米尔嘉的解
第二天放学后,在图书室,我旁边坐着米尔嘉。
“虽然我一开始建立了推导公式,”米尔嘉快言快语地说起来,“可算到一半时我改变了方法。”
“啊?你是说你没有解推导公式吗?”我问道。
“嗯,我不解推导公式。因为我找到了很微妙的对应关系。”她答道。
我一打开笔记本,米尔嘉就立刻开始写起来。
“比如说,当 n 为 4 的时候,我们可以以这个式子为例来考虑。
( ( 0 + 1 ) + ( 2 + ( 3 + 4 ) ) )
仔细看这个式子,即使像下面这样去掉后半个括号,也能恢复原貌。
( ( 0 + 1 + ( 2 + ( 3 + 4
能使后半个括号复原完全是因为‘加号连接着前后两项’这一限定条件。”她说。
“原来如此。在第二项出来的地方插入后半个括号就可以了吧。”我考虑片刻后回答道。我算到 ((A + A) + (A + (A + A))) 这步就放弃了,原来还可以变得更简便。
米尔嘉微微咧开嘴笑了笑。
“再进一步,其实连写数字的必要都没有,写成这样就可以了。
( ( + + ( + ( +
这样也可以恢复原貌。在加号的左侧添上数字就可以了,只是最后的 4 会添加在加号的右侧。”
“原来如此。”
“也就是说,要求有几种添加括号的方式,只要求出‘前半个括号’和‘加号’有几种排列组合的可能就好了。就拿 n 为 4 的情况来说吧,问题就变成了求 4 个前半个括号和 4 个加号的排列组合的个数。比如说,用 * 来表 示这 8 个符号。
* * * * * * * *
然后,考虑将其中的哪 4 个 * 变成前半个括号。
( ( * * ( * ( *
接着,再将剩下的符号自动转换成加号。
( ( + + ( + ( +
从这 8 个符号(分别有 4 个括号和加号)中选择 4 个符号变成前半个括号,可以形成 这样的组合情况。当然这是在 n 为 4 的前提下所得出的结论。以一般化的形式说来,从 2n 个符号(分别有 n 个括号和加号)中选择 n 个符号变成前半个括号,可以形成 这样的组合。这样的组合可以用下图来表示,这条弯曲的路线的最短路径的数值和组合的个数是等价的。路线从左下角的 S 开始,一直到达 G 这个终点。用箭头来表示路线的走向,也就是 ( ( + + ( + ( + 这个符号的排列。”米尔嘉说。
“所以呢,接下来是……”她接着说。
“等一下”,我打断了还要继续往下说的米尔嘉。
“米尔嘉,这样解实在太奇怪了。因为这不是从 8 个符号中任意选择 4 个。比如说,无论 4 个括号和加号如何排列,下面这种排列方式都是不可以的,不是吗?
( ( + + + + ( (
画出 ( ( + + + + ( ( 这样的路径一看你就明白了。在这个图中,凡是经过 的路径都不可以计算在内。”
“你还没说完吗?”被我中途打断的米尔嘉气鼓鼓地说。
◎ ◎ ◎
我确实是还没说完。在排列括号和加号的过程中,有这样一个限制条件:加号的个数绝对不可能超过括号的个数。
什么时候会出现加号的个数超过括号的个数的情况呢?正如你所说的,是通过上图中的圆圈 的时候。如果不通过圆圈 ,从 S 到 G 的路线数 量和 Cn 是相等的。
如果不考虑这个限制条件,从 S 到 G 的路线的个数就是 。
那么,如果在从 S 到 G 的过程中穿过一次圆圈 的话,情况会变成什么样呢?
假设第一个穿过的圆圈 的地方为 P,从 P 开始前进的方向都将发生反转。将这几个圆圈 用虚线连接后,你会发现它们形成一条斜线,可以将这条斜线考虑成一面镜子。从 P 到 G 的过程中,原本向右水平移动的话就转变为向上移动,原本向上移动的话就变为向右水平移动。于是,我们得到了点 G' ,而不是点 G。
点 G' 也就是 G 通过镜子的反射得到的点。也就是说,( ( + + + + ( ( 这个组合形式就变成了 ( ( + + + ( + + 的形式。
这么一想,通过圆圈 的所有情况的个数和从 S 到 G' 的线路的个数一一对应。从纵横共有 2n 根短线中选择 n + 1 根横线路径,进行路线组合,也就是 。
这么说来,以下式子就成立了。
Cn =(从 S 到 G 的路径数)-(从 S 到 G' 的路径数)
接下来就是计算了。快算快算,将下降阶乘幂快速运转起来吧。
通分后第二项有点难以理解呢。但思考一下下降阶乘幂的意义就会自然明白,在这里我来做一下补充说明。
分子是这样变形的。将 (n) 这个“小尾巴”提取出来并展开。
接着,分母可以这样变形。这次将 (n + 1) 这个“头部”提取出来并展开。
所以,我们再来计算一下 Cn 的数值,从通分之后的步骤开始。
因此,给有 n 个加号的式子添加括号的方式的个数就是这样的。
好了,这下就完成了一部分工作。那么,我来验算看看。
◎ ◎ ◎
看到米尔嘉如此简便的解法,我一边暗自佩服一边开始计算。
“哇,太厉害了!确实答案是 1, 2, 5, 14 啊!”我惊叹道。
米尔嘉听了我的话,满脸笑容。
解答 7-1
“那我下次听你说!”我说。
7.5.2 研究生成函数
虽然我掉入了米尔嘉的圈套,但她那完美的解答真是令我非常吃惊。我考虑通过生成函数来解题固然没有错,但我只是算到很复杂的有限项代数式那步,好像就无法再往下计算了。我甚至怀疑自己是不是挑战了与自己实力不相符的题目。我求出生成函数那一刻的喜悦顿时被吹得烟消云散了。
真是遗憾啊!我心中有点不服气。
米尔嘉的脸上却露出为难的表情。“哎呀,算了,先说说看吧。算出了推导公式后,接下来该怎么做呢?”她催问我。
我将自己想试着运用生成函数的解法,建立生成函数的乘积关系,然后算出“先相乘后相加”这个形式,最后努力建立一元二次方程式,并终于计算出了生成函数的有限项代数式……一股脑儿地告诉了米尔嘉。能够到生成函数的王国漫步固然很好,但是我却不能再从生成函数的王国返回到数列的王国了。
我真的非常遗憾,感到很不服气。
“喂,你算出的到底是什么式子啊?”米尔嘉问我。
我沉默了。
“嗯?到底是什么式子呀?”她打量着我的脸。
没办法,我只能在笔记本上写出式子。
“嗯,难点好像有两个吧。一个是正负号的部分,另一个是 的部分。”她说。
“这些我当然知道啦。我就是被这两点卡住,算不下去了。”我着急地说。
对于我发急的声音米尔嘉并不理会,很平静地接着说:“首先,我们从正负号开始思考。”
米尔嘉看了一会儿数学公式,闭上眼,低下头。然后,她举起右手食指,朝着天空比划着圈圈。她划着 0,划着 0,划着无穷大,突然她睁开了眼睛,说:“我们回到定义看看吧。生成函数 C(x) 的定义是这样的吧。”
“这么说来,当 x 为 0 的时候,包含 x 的项都被抵消了,所以生成函数就变成了 C(0) = C0,于是,我们再回到你计算出的有限项代数式。”
“这时的 C(0) 会变成怎样呢?”她问道。
“不可以哦。如果分母为 0 的话,除以 0 后,C(0) 就变成无穷大了。”我答道。我已经渐渐平静下来了。我对米尔嘉发急有什么用呢,听她的话又有什么用呢。
“没有,可不是这样的。”米尔嘉缓缓地摇摇头,“一个数是变成了无穷大,而另一个数则不是。C(x) 的两个带有正负号的数字中,我们把那个带正号的数字称为 C+(x),把那个带负号的数字称为 C-(x),这样就可以变形为以下形式。”
“为了不使它们除以 0,我们将分母移项后去掉看看。”
“当 x 为 0 时,上面两个式子的左边都为 0,但一个式子的右边 为 2,而另一个式子的右边 是 0。这说明了什么
呢?”她问道。
“至少说明 C+(x) 不正确吧。”
“嗯。虽然不能说不用再深入对生成函数进行研究了,但至少可以说我们没必要再对 C+(x) 刨根问底了。为了求得最后的公式,我们把目标锁定在生成函数 C-(x) 上。接下来的目标,你认为是什么呢?”她问道。
“对 该怎么处理呢?”我问道。
看着我重新调整了心态,米尔嘉嫣然一笑。
生成函数 C(x) 的有限项代数式
7.5.3 围巾
这时,我突然发现泰朵拉站在图书室门口,正望着我和米尔嘉。她两手拎着一只小纸袋,一动不动地站在那里。她是什么时候站在那里的呀?
我朝泰朵拉轻轻地举了下手,示意我看到她了。她却和往常不同,缓缓地走向我们,一点都没有加快脚步,一脸严肃的样子。
“学长,昨天真是谢谢您了。”泰朵拉轻轻向我道谢,低下头,手指向那个纸袋子。里面整整齐齐地叠放着昨天我借给她的那条围巾。
“啊,没关系,不用客气。你没感冒吧?”我问道。
“嗯,我没关系。多亏您昨天借给我围巾,又和我一起喝了热饮。”泰朵拉边说边朝米尔嘉瞟了瞟。我也随着泰朵拉的目光朝米尔嘉看了看。米尔嘉握着自动铅笔的手停了下来,随后她抬起头,朝小纸袋瞥了一眼,之后便把目光停留在泰朵拉身上。两个女孩就这样沉默着,互相对视着。
谁都不说话。
就这样沉默了几秒钟。
泰朵拉“呼”地吐了口气,又重新将目光转向我,说:“今天真是打扰了。你以后可要再教我数学哦。”泰朵拉朝我点了下头,然后就走开了,当她走到图书室门口时又回头朝我微微致意。
这时,米尔嘉已经把头转向了草稿纸,开始写起了数学公式。
“你想到什么了吗?”我问她。当然,是关于 的。
米尔嘉头也没抬,边写算式边回答我。
“信。”她说。
“什么?”我不明白。
米尔嘉没有停笔,回答我说:“里面有封信。”
我打开包看了看,把手伸进去摸索,围巾下似乎藏着什么。拿出来一看,是张很高级的白色贺卡。为什么米尔嘉会注意到里面有张贺卡呢?贺卡上写着短短的一行字,是泰朵拉的字迹。
谢谢您借给我围巾。围巾很温暖。
泰朵拉
PS:下次我们还去那家叫“豆子”的咖啡店吧。
7.5.4 最后的要塞
我们又回到了原来的问题。
我们已经求得了如下生成函数 C(x) 的有限项代数式。
生成函数 C(x) 的有限项代数式
接下来的问题就是 会变成什么形式。
“我跟不上你解题的速度,米尔嘉。求得了 C(x) 的有限项代数式后,接下来该怎么办呢?在求斐波那契数列的通项公式时,我们是怎么做的?”我问道。
“可以利用 C(x) 的有限项代数式来计算出 xn 的系数。也就是说,需要展开幂级数。”米尔嘉说。
“但是 真是麻烦啊。该怎么处理它呢?”我低声嘀咕着。
“所以只能将幂级数展开了吧。比如说,将系数的数列称为 >,可以进行这样的展开。”米尔嘉边说边写出式子。
“生成函数 C(x) 是这样的。
所以,为了去除分母,我们将分母移项。
因为 ,,替换后可得到下式。
将等式左边的 2x 放入 这个符号里,右边将 k = 0 这一项写出来。
将等式左边调整为从 k = 1 开始。
把带有 符号的项都归纳到左边。
因为这个等式是无穷级数,所以为了改变和的先后次序,必须把条件说明清楚。但现在利用这个等式只是为了有所发现,所以我们就直接往下算吧。
以上等式是关于 x 的恒等式,比较两边的系数,可以得到 Kn 和 Cn 的关系式。
整理这些式子后可以得到下式。
也就是说,如果求出了 Kn 的话,我们也就自然而然地求得了 Cn。最后的要塞就是 的展开了。”
7.5.5 攻陷
米尔嘉迫不及待地说:“那么,我就来攻陷最后的要塞吧。现在,假设 ,可得
这时 成了所求的目标。从哪里开始下手为好呢?”
“从一看就能明白的地方下手吧。”我说。
“嗯,那 K0 该怎么处理才能让人一看就懂呢?”米尔嘉问。
“那就试试 x = 0 喽。”我立刻回答道,“如果这样的话, 中常数项之外的项就都被抵消了”。也就是说,K(0) = K0。”
“是啊,那接着该怎么办呢?”米尔嘉问我。
“你是问该拿 x 怎么办吗?”我反问道。
“不是。我们得快点使用函数解析的基本方法哦。”米尔嘉似乎有些急不可待。
“那是什么?”我问。
“是微分啊。用 x 求导 K(x),然后数列转换,就能求出常数项 K1。
所以可得
你知道为什么这个 1 要这么明确地写出来吧?这是为了抓住求导后指数下降这个模式。走到这一步接下来可就轻松了。再接着求导 K'(x)。
所以,当 x 为 0 时,可求得下式。
接下来,反复重复此操作,进行 n 次 K(x) 的求导运算。假设 K(x) 经过 n 次求导运算后用 K( n)(x) 来表示。
再写下去就太冗长了,我们就用下降阶乘幂来表示吧。
所以当 x 为 0 时,就变成如下形式。
也就是说,可以用 K(n)(0) 的形式来表示 Kn,也就是泰勒展开式。
到这里我们的工作就告一段落了。”
米尔嘉歇了口气。
我说:“嗯,但是接下来好像就无法进展了,感觉像走到死胡同里来了。”
“为什么这么说呢?现在我们用幂级数的形式求得了 K(x)。接下来我们用普通的函数形式来表示 K(x) 看看吧。”米尔嘉说。
“用普通的函数形式来求?”我疑惑不解。
“就是用求函数解析式的基本方法来做,又要用到微分哦。”米尔嘉边说边朝我眨了下眼睛。这可能是她第一次这么调皮地朝我眨眼睛吧。
“回想一下 K(x) 的定义……
平方根也就是 次方,所以可以变形为这样。
我们应该边注意观察出现的式子类型,边反复进行微分运算。
将 x = 0 代入后,我们可以求得最后的式子是这样的。
我们再回头看刚才我们用幂级数求得的式子,也就是你说算到那步走到死胡同里的式子,我们把其中的 n 用 n + 1 来替换。
通过这两个式子可得到下式。
这样,我们可以求得 ,并不是走到死胡同里了哦。你还记得 Kn 和 Cn 的关系吗?
接下来就是用手运算的体力劳动了。
这个式子的分母 可以变形为 的形式。
因此,我们可以求得 Cn。
好了,这下我们算是完成了一部分运算,求得了同一个公式。我们终于从生成函数的王国回到数列的王国啦。”
于是,米尔嘉露出了笑容,说:“欢迎你回来。”
7.5.6 半径是 0 的圆
“我回来了!——噢,与其说这个倒不如说一声谢谢。”我说。
“真是非常有意思哦,是次快乐的旅行吧。”她立刻竖起食指。
我看着米尔嘉,想着她这个人真是……虽然有些粗鲁,但人还是很温柔的,外表看上去很沉着冷静,内心其实很火热。我对米尔嘉其实还是……
米尔嘉眯了下眼睛,站起身来,说:“为表纪念,我好想跳舞哦。”
我也站起身。
(这到底是怎么回事?)
米尔嘉突然朝我伸出左手,我伸出右手,小心翼翼地牵起米尔嘉雪白的手指,就像是害怕惊动小鸟一样。
(真暖和。)
我们的手就这样牵着,缓步移向书架前的宽阔场地。
米尔嘉绕着我划圈,慢慢地移动着舞步。
一步。
又一步。
放学后的图书室。除了我们之外没有其他人。
图书室里只听得到她那轻轻的脚步声。
“米尔嘉,你和我一直保持着相同的距离,就是在圆周上吧,算是单位圆吧。”我说。
真是的,我到底在说些什么呀。
米尔嘉“嗯”了一声,停下舞步,答道:“单位圆的前提可是我们的手臂长之和为 1 哦。”说着,她闭上了眼睛。
我突然想起来了。
……即使不能在米尔嘉身边“很近很近的地方”,但至少要在她“旁边”吧……
我正想着这些话的时候,米尔嘉睁开了眼睛。
“半径如果为零的话也……”她边说边用力拉我到身边,她力气大得让我吃惊。
“如果半径为零的话也要保持一定距离吗?”说着,米尔嘉把脸斜靠近我,我们俩的眼镜就要碰到了。
我什么话都说不出,米尔嘉也是,什么都没有说。
半径即使为零,圆仍旧是圆。但这是一个特殊的圆点。
然后我就……我们就……就这样沉默着,渐渐地靠近脸……
“放学时间到了。”图书室传来了瑞谷老师的声音。
我们俩的距离一下子又从零拉开了,一直拉到两人手臂长之和为止。
我的笔记
我和米尔嘉推导出通项公式的数列 为 ,这个数列被称为卡塔兰数列。另外,我考虑的“先相乘后相加的形式”被称为卷积。
将数列和生成函数相对应后,就可以将“卷积后的数列”与“和原生成函数相乘后得到的函数”一一对应起来。也就是说,数列 和 的卷积形式可以表示为 ,也就形成了以下的对应关系。
半夜,我独自在自己的房中兴奋地思考着这些对应关系。“数列王国”中的“卷积”就是“生成函数王国”中的“乘积”。
这真是美妙的对应啊!