跳转到内容

线性代数/主题:线性递推

来自维基教科书,开放的书籍,开放的世界
线性代数
 ← 主题:稳定人口 主题:线性递推 附录 → 

1202年,莱昂纳多·斐波那契,也称为斐波那契,提出了这个问题。

某人将一对兔子放在一个四周都有围墙的地方。如果假设每对兔子每月生一对新的兔子,并且从第二个月开始这些新兔子就可以繁殖,那么一年内从那一对兔子可以繁殖出多少对兔子?

这超越了人口增长基本指数模型,它包括了新生儿最初一段时期不育的事实。然而,它保留了其他简化假设,例如没有妊娠期和没有死亡率。

在下个月出现的新的兔子对的数量仅仅是上个月存活的兔子对的数量,因为这些兔子都会生育,因为它们已经存活了两个月。下个月存活的兔子对的数量是当前月存活的数量加上新生儿数量的总和。

这是一个递推关系的例子(之所以称之为递推关系,是因为的值是通过查看其他先前的值来计算的)。由此,我们可以很容易地回答斐波那契的十二个月问题。

由上述方程定义的数字序列(其中列出了前几个数字)称为斐波那契数列。本章的内容可以用来给出一个公式,我们可以用它来计算,而无需首先找到等。

为此,观察到递推是一个线性关系,因此我们可以给出它的合适矩阵形式。

然后,当我们将 写为矩阵, 写为向量,其分量为 ,我们有 。这种矩阵表示的优点是,通过对角化 ,我们可以快速计算其幂:当 时,我们有 ,而对角矩阵 次幂是对角矩阵,其元素是 元素的 次幂。

的特征方程为 。二次公式给出其根为 。对角化得到以下结果。

介绍向量并取其次方,我们有

我们可以从该等式的第二项计算

注意到受其第一项支配,因为小于1,因此它的幂趋于零。

一般而言,线性递推关系具有以下形式

(它也被称为 *差分方程*). 这个递推关系是 *齐次的*,因为它没有常数项;即,它可以写成以下形式 . 据说这个关系是 *阶数* 为 的关系。 这个关系以及 *初始条件* , ..., 完全确定一个序列。例如,斐波那契关系是 *阶数* 为 的关系,它以及两个初始条件 ,确定了斐波那契序列,仅仅是因为我们可以通过首先计算 ,等等来计算任何 。在本主题中,我们将看到线性代数如何用于解决线性递推关系。

首先,我们定义我们正在处理的向量空间。令 是从自然数 到实数的函数 的集合。(下面我们将有定义域为 ,即不包括 的函数,但这并不是一个重要的区别。)

暂时不考虑初始条件,对于任何递归关系,我们可以考虑其解空间 的一个子集 。例如,在没有初始条件的情况下,除了上面给出的函数 之外,斐波那契数列也被函数 所解,该函数的前几个值是

子集 的一个子空间。它是非空的,因为零函数是一个解。它在加法下是封闭的,因为如果 是解,那么

而且,它在标量乘法下是封闭的,因为

我们可以给出的维数。考虑从函数集到向量集的映射。

问题 3表明此映射是线性的。因为,如上所述,递推关系的任何解都由个初始条件唯一确定,此映射是一对一的且满射。因此,它是一个同构,因此的维数是,即递推关系的阶数。

因此(同样,没有任何初始条件),我们可以通过取仅个线性无关函数的线性组合来描述任何阶线性齐次递推关系的解集。剩下的就是生成这些函数。

为此,我们将递推关系用矩阵方程表示。

在试图找到矩阵的特征函数时,我们可以看到情况下的模式

以及 的情况。

问题 4 表明特征方程如下所示。

我们将这个多项式称为与递推关系“相关”的多项式。(我们将找到这个多项式的根,因此可以忽略 ,因为它无关紧要。)

如果 没有重复根,则矩阵是可对角化的,理论上我们可以得到 的公式,就像斐波那契数列的情况一样。但是,因为我们知道解的子空间的维数为 ,所以我们不需要进行对角化计算,前提是我们能展示出 个线性无关的函数,满足该关系。

假设 ,..., 是不同的根,考虑这些根的幂次函数 问题 2 显示,每个函数都是该递推关系的解,并且这 个函数构成一个线性无关集。因此,对于齐次线性递推关系 (即,),我们考虑关联的方程 。我们找到它的根 ,...,,如果这些根是不同的,那么该关系的任何解都具有形式 对于 。(重复根的情况也很容易处理,但我们在这里不讨论——参见任何关于离散数学的书籍。)

现在,给定一些初始条件,以便我们对特定解感兴趣,我们可以求解 ,...,。例如,与斐波那契关系相关的多项式是 ,其根是 ,因此斐波那契方程的任何解都具有形式 。包括的情况的初始条件给出

这产生 ,如上面计算的那样。

最后,我们考虑非齐次情况,其中关系具有形式 ,对于某个非零 。正如本书第一章所述,只需要进行少量调整即可从齐次情况过渡到非齐次情况。这个经典示例说明了这一点。

1883 年,爱德华·卢卡斯提出了以下问题。

在贝纳勒斯的大寺院中,在标志着世界中心的圆顶下方,放置着一块黄铜盘,上面固定着三根钻石针,每根高一肘,粗如蜜蜂的身体。在创世之初,上帝在其中一根针上放置了 64 个纯金圆盘,最大的圆盘放在黄铜盘上,其他圆盘则依次变小,直到最上面的一个。这就是布拉玛之塔。日夜不停,僧侣们根据布拉玛的固定且不变的法则,将圆盘从一根钻石针转移到另一根钻石针上,这些法则要求值班的僧侣一次只能移动一个圆盘,并且必须将这个圆盘放在一根针上,以便没有更小的圆盘在它下面。当 64 个圆盘从上帝在创世之初放置它们的针上转移到其他任何一根针上时,塔楼、寺庙和婆罗门都会化为尘土,伴随着一声巨响,世界将不复存在。

德·帕维尔 (1884)鲍尔 (1962) 中的翻译。)

需要多少次圆盘移动?我们不会直接处理 64 个圆盘的问题,而是从三个圆盘开始,考虑更少圆盘的情况。

首先,所有三个圆盘都在同一根针上。

将小圆盘移到最远端的针上,将中等大小的圆盘移到中间的针上,然后将小圆盘移到中间的针上,我们得到以下结果。

现在我们可以将大圆盘移过来。然后,为了完成,我们重复移动较小圆盘的过程,这次它们最终会落在第三根针上,在大圆盘的顶部。

所以要看到的是,为了移动最大的圆盘,也就是底部的圆盘,我们至少需要:首先将较小的圆盘移动到中间的针上,然后移动大圆盘,然后将所有较小的圆盘从中间的针上移动到最终的针上。这三个步骤给了我们这个递归关系。

我们可以很容易地得到的前几个值。

我们认识到它们只是 2 的幂减 1。

为了推导出这个等式而不是仅仅猜测它,我们将原始关系写成,考虑齐次关系,得到其相关的多项式,它显然只有一个唯一的根,并得出结论,满足齐次关系的函数取以下形式

这是齐次解。现在我们需要一个特解。

因为非齐次关系 非常简单,几分钟内(或通过记住表格)我们就可以找到特解(还有其他特解,但这个最容易发现)。所以我们有—— 还没有考虑初始条件—— 的任何解都是齐次解和这个特解的和:

初始条件 现在得出 ,并且我们得到了生成表格的公式: 盘汉诺塔问题至少需要 步。

在更复杂的情况下找到一个特定的解,自然地,也更加复杂。关于递推关系的令人愉快且有益,但具有挑战性的资料来源是 (Graham, Knuth & Patashnik 1988)。对于更多关于汉诺塔的信息,(Ball 1962) 或 (Gardner 1957) 是很好的起点。(Hofstadter 1985) 也是如此。一些用于尝试一些递推关系的计算机代码在练习之后给出。

练习

[edit | edit source]
问题 1

求解每个齐次线性递推关系。

问题 2

给出之前练习的关系的公式,这些公式有以下初始条件。

  1. .
问题 3

检查给定的 之间的同构是否是线性映射。上面论证了该映射是一对一的。它的逆是什么?

问题 4

证明矩阵的特征方程如所述,即与关系相关的多项式。(提示:展开最后一列,并使用归纳法将起作用。)

问题 5

给定一个齐次线性递推关系 ,令 ,…, 为其关联多项式的根。

  1. 证明每个函数 满足递推关系(不包括初始条件)。
  2. 证明没有 等于
  3. 证明集合 是线性无关的。
问题 6

(这指的是下面的计算机代码中给出的值 。)如果每秒移动一个圆盘,汉诺塔中的僧侣需要多少年才能完成工作?

计算机代码
这段代码允许生成由递推关系和初始条件定义的函数的前几个值。它是 LISP 的 Scheme 方言(具体来说,它是为 A. Jaffer 的免费 Scheme 解释器 SCM 编写的,但它应该可以在任何 Scheme 实现中运行)。

首先,汉诺塔代码是对递推关系的直接实现。


(define (tower-of-hanoi-moves n)
(if (= n 1)
1
(+ (* (tower-of-hanoi-moves (- n 1))
2)
1) )  )


(注意:对于不熟悉递归代码的读者,要计算 ,计算机被要求计算 ,当然,这需要计算 。计算机将“乘以 ”和“加上 ”放在一边,先进行计算。它使用相同的代码片段(这就是“递归”的含义)来计算 ,为此,它被要求计算 。这不断重复(下一步是尝试执行 ,同时其他算术运算处于等待状态),直到经过 步之后,计算机试图计算 。然后它返回 ,这意味着现在可以进行 的计算,等等,直到最初计算 完成。)

下一个程序计算前几个值的表。(一些语言说明:'() 是空列表,即空序列,cons 将某个元素推送到列表开头。注意,在最后一行,proc 过程被调用,参数为 n。)


(define (first-few-outputs proc n)
(first-few-outputs-helper proc n '()) )
;
(define (first-few-outputs-aux proc n lst)
(if (< n 1)
lst
(first-few-outputs-aux proc (- n 1) (cons (proc n) lst)) ) )


SCM 提示符下的会话如下所示。


>(first-few-outputs tower-of-hanoi-moves 64)
Evaluation took 120 mSec
(1 3 7 15 31 63 127 255 511 1023 2047 4095 8191 16383 32767
65535 131071 262143 524287 1048575 2097151 4194303 8388607
16777215 33554431 67108863 134217727 268435455 536870911
1073741823 2147483647 4294967295 8589934591 17179869183
34359738367 68719476735 137438953471 274877906943 549755813887
1099511627775 2199023255551 4398046511103 8796093022207
17592186044415 35184372088831 70368744177663 140737488355327
281474976710655 562949953421311 1125899906842623
2251799813685247 4503599627370495 9007199254740991
18014398509481983 36028797018963967 72057594037927935
144115188075855871 288230376151711743 576460752303423487
1152921504606846975 2305843009213693951 4611686018427387903
9223372036854775807 18446744073709551615)


这是一个 的列表。( 毫秒是在运行于 Linux 下的 XWindow 的 XTerm 中,在一台 50 兆赫的 486 上测得的。会话已被编辑,以便在数字之间添加换行符。)

解决方案

参考文献

[编辑 | 编辑源代码]
  • Ball, W.W. (1962), Mathematical Recreations and Essays, MacMillan(由 H.S.M. Coxeter 修订)。
  • De Parville (1884), La Nature, vol. I, Paris, pp. 285–286
  • Gardner, Martin (May. 1957), "Mathematical Games: About the remarkable similarity between the Icosian Game and the Tower of Hanoi", Scientific American: 150–154 {{citation}}: 检查日期值:|year= (帮助).
  • Graham, Ronald L.; Knuth, Donald E.; Patashnik, Oren (1988), Concrete Mathematics, Addison-Wesley
  • Hofstadter, Douglas R. (1985), Metamagical Themas:~Questing for the Essence of Mind and Pattern, Basic Books
线性代数
 ← 主题:稳定人口 主题:线性递推 附录 → 
华夏公益教科书