跳轉到內容

線性代數/主題:線性遞推

來自華夏公益教科書,開放的書籍,開放的世界
線性代數
 ← 主題:穩定人口 主題:線性遞推 附錄 → 

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
線性代數
 ← 主題:穩定人口 主題:線性遞推 附錄 → 
華夏公益教科書