尋犀記 (3)

2023/11/13閱讀時間約 11 分鐘

三、遞迴

遞迴 (recurrence) 即是不停地返回自己的意思。

遞 = 依次;迴 = 返回。

在算術中,遞迴關係 (recurrence relation)、或遞迴公式 (recursive formula) 指的是,在經由無數次前進、返回之輪迴、所創生的歷史序列裡,某一項、和它的前一項之關係;因為,我們知道,每一次的輪迴、不過是依循著老掉牙的、不變的模式,所謂「太陽底下沒有新鮮事」,所以,只要研究其中的兩項,把它們之間的關係搞懂,就可以解答每一次輪迴、所依循的模式為何,從而、將它們一般化地掌握。

在哲學中,Pythagorean 學派的理念是:萬物皆「整」數,或者,放寬一點說,萬物皆「是由整數的加減乘除所構造出來的」數。

一切由算數運算所產生來的繽紛結果,都由以下的基本式子演化而成:

1 + 1 = 2

Pythagoras 將數 1 比作「種子」,而在佛教理論中,第八阿賴耶識又稱為「種子識」,兩者不謀而合。

所以:

數 1、相當於第八阿賴耶識,亦即,一。

數 2、相當於第七末那識,亦即,二。

第七末那識、又名「染污意」,和數 2 的運動、「流動」、「惡」、黑暗的泉源等意義相仿;Rhea 所代表的雌性,象徵「慾望」,隱含了「性」之意涵,也和第七末那識所具有的「執我」意義類似。

數 3、則相當於第六意識,亦即,三。

Pythagoras 說:由數 1 的「運動」、產生了數 2;又由數 1 之作用於數 2、從而產生了其後的數列。

老子曰:「道生一,一生二,二生三,三生萬物。」亦同此理。

在程式語言中,遞迴程序 (recursive process) 指的是,需要不時地呼叫自身的運算邏輯,這就好比,員工每做完一件事情、就要向老闆報告、等待老闆進一步的指示,而老闆一步、一步的指示,又促成了員工所做事情的一層、一層的深化,類似於搜尋樹的概念。

相對地,一種比較節省資源的迭代程序 (iterative process)、則是在一個迴圈 (loop) 裡面、不停地重複某個指令,這就好比,老闆交辦員工,不用向其回報、只要不停地操作某個動作就好了,這樣,員工就不必事事請示老闆,而可以比較有效率地執行一項工作。

在幾何中,Archimedes 運用了類似遞迴關係、而迭代逼近的方法、來求得圓周率 π 的逼近值。

Archimedes 逼近 π 的方法,是從給定圓的內接六邊形、和外接六邊形開始,逐次倍增多邊形的邊數,並使用每個多邊形邊長的總長、和給定圓直徑的比率,作為 π 的逼近值 (π ≈ 邊長總長/直徑)。

由於外接多邊形的周長將大於圓的周長,因此,得出的 π 逼近值將太大;同理,內接多邊形的長也會太小,產生較低的逼近值。隨著多邊形邊數的增加,兩個逼近值會向 π 夾擠而收斂。

而我們則從圓的內接四邊形開始,精神相同,卻可以更清楚地顯現圓周率 π 和 √2 的密切關聯。

前篇提到,單位「一」既然可以隨意設定,那麼,就讓圓的半徑長、為 1,也就是:將半徑為 1 的圓、用十字畫成四等份,再將這四個頂點,用直線連接起來。

半徑為 1 的圓,其內接四邊形的一個邊的邊長、為 √2。

換句話說,四分之一的圓周,其弦長為 √2,這是我們的第一次逼近,將其稱為 S。

現在,畫一條射線、平分四分之一圓周的內角,再將它和圓周相交的端點、與原來四分之一圓周的端點連接起來,這樣,會構成八分之一圓周的弦長 S’。

其中,S 代表四分之一圓周的弦,S’ 代表八分之一圓周的弦,兩者一同落在原來的四分之一圓周裡面,而 S’ 和 S/2,會構成直角三角形的斜邊、和底邊。直角三角形在靠近圓周之一端,而非在靠近圓心之一端。

S’ 是我們的第二次逼近。此即是,從四分之一圓周,推進到八分之一圓周的變化。

現在,畫一條射線、平分八分之一圓周的內角,再將它和圓周相交的端點、與原來八分之一圓周的端點連接起來,這樣,會構成十六分之一圓周的弦長 S’’。

其中,S’ 代表八分之一圓周的弦,S’’ 代表十六分之一圓周的弦,兩者一同落在原來的八分之一圓周裡面,而 S’’ 和 S’/2,會構成直角三角形的斜邊、和底邊。直角三角形在靠近圓周之一端,而非在靠近圓心之一端。

這代表,在八分之一圓周裡面,又會有一個小直角三角形,其斜邊,也就是十六分之一圓周的弦長S’’,則是我們的第三次逼近。此即是,從八分之一圓周、推進到十六分之一圓周的變化。

小直角三角形的對邊 b’,有:

b’ = 1 - a’

= 1 - √(1 - (S’/2)²)

得到了 b’,就可以套進剛剛的小直角三角形,利用畢氏定理,有:

S’’ = √ [b’² + (S’/2)²]

上式、是阿基米德圓周率近逼法的遞迴公式 (recursive formula);透過類似迴圈 (loop) 的迭代程序 (iterative process),這個自我指涉的公式,可以無窮進行下去,而無限逼近所求的 π 值。

此即:

S’’ = √ [b’² + (S’/2)²]

= √ [(1 - √(1 - (S’/2)²))² + (S’/2)²]

= √ [1² - 2 √(1 - (S’/2)²) + 1 - (S’/2)² + (S’/2)²]

= √ [1² - 2 √(1 - (S’/2)²) + 1]

= √ [2 - 2 √(1 - (S’/2)²)]

這是第一次遞迴的結果;再將 S’ = √ (b² + (S/2)²) 代入,則有:

= √ [2 - 2 √ [1 - (√(b² + (S/2)²) / 2)²]]

= √ [2 - 2 √ [1 - ((b² + (S/2)²) / 4)]]

= √ [2 - √ [4 - (b² + (S/2)²)]]

= √ [2 - √ [4 - ((1 - √(1 - (S/2)²))² + (S/2)²)]]

= √ [2 - √ [4 - (1² - 2 √(1 - (S/2)²) + 1 - (S/2)² + (S/2)²)]]

= √ [2 - √ [4 - (1² - 2 √(1 - (S/2)²) + 1)]]

= √ [2 - √ [4 - (2 - 2 √(1 - (S/2)²))]]

= √ [2 - √ [2 + 2 √(1 - (S/2)²)]]

這是第二次遞迴的結果。

上述的遞迴程序可以反覆地代入、拆解、計算,無窮進行下去,而無限逼近所求的 π 值。

Archimedes 援用的圓周率逼近法、獨立於現今解析幾何的座標空間、而與座標值無關。

現在,從解析幾何的觀點來看,我們可以將方才平分八分之一圓周內角的射線、與圓周的交點,稱為 (x₂, y₂),而將平分四分之一圓周內角的射線、與圓周的交點,稱為 (x₁, y₁)。

要記得,圓的半徑長、為 1,二射線的夾角、為 22.5°。

用直線連接二端點,此線段、即等同於十六分之一圓周的弦 S’’,其長,可由兩點座標相減的位移向量 (displacement vector) 與自身之內積、再開根號求得。

此即:

S’’ = √ [(x₂ - x₁, y₂ - y₁)⋅(x₂ - x₁, y₂ - y₁)]

= √ [(x₂ - x₁)² + (y₂ - y₁)²]

= √ [x₂² - 2 x₂ x₁ + x₁² + y₂² - 2 y₂ y₁ + y₁²]

= √ [2 - 2 x₂ x₁ - 2 y₂ y₁]

= √ [2 - 2 (x₂ x₁ - y₂ y₁)]

= √ [2 - 2 cos θ]

其中,θ 是二射線的夾角 22.5°。

上面的推理運用了三角、和內積的性質。

讓我們先複習一下三角、和內積:

單位圓,也就是半徑為 1 的圓,將其圓心、置於 (0, 0) 處。

那麼,在圓周上的每一個點,都可以用 (cos θ, sin θ) 來表示。

θ 是從 x 軸、逆時針旋轉到點半徑的角度 (degree)、或弳度 (radian)。

我們知道,餘弦 cos 有如下的性質:

cos (θ - η) = cos θ cos η + sin θ sin η

所以,可以創造一個運算符號,稱為內積 (dot product) · ,而定義兩個向量的內積運算、為:

(a, b)·(c, d) = a c + b d

文字敘述、即是:

將兩個向量的第一分量的數值、兩兩相乘,第二分量的數值、兩兩相乘,再把這些乘積加起來。

依此,向量的內積運算、將會符合 cos 法則,而不會僅是無意義的人為擬制。

依照內積運算的定義,兩個在單位圓周上的點相乘,亦即,取其內積,會成為:

(cos θ, sin θ)·(cos η, sin η)

= cos θ cos η + sin θ sin η

= cos (θ - η)

其中,(θ - η) 為兩個點半徑的夾角。

現在,令、兩個單位向量 A⃗ / ∥A⃗∥ 和 C⃗ / ∥C⃗∥、在單位圓上的座標分別為 (cos θ, sin θ) 和 (cos η, sin η)。

其中,∥A⃗∥ 和 ∥C⃗∥ 分別是兩個向量的長度。

向量、除以自身的長度,可以確保:單位向量的量、會等於 1。

兩個單位向量的內積,依照前述定義的推導,其結果、會等於:

cos (θ - η)

也就是說:

A⃗ / ∥A⃗∥ · C⃗ / ∥C⃗∥ = cos (θ - η)

換句話說:

A⃗ · C⃗ = cos (θ - η) ∥A⃗∥ ∥C⃗∥

以上,乃是餘弦 cos 的Ptolemy 恆等式 (Ptolemy’s identity)、與內積的關係。

將餘弦函數內,二角之相減、改為相加,就可以推導出餘弦 cos 的倍角公式 (double angle formula):

cos (2θ) = cos (θ + θ)

= cos θ cos θ - sin θ sin θ

= cos² θ - sin² θ

= (2 cos² θ - cos² θ) - sin² θ

= 2 cos² θ - 1

因此:

2 cos² (θ) = 1 + cos (2θ)

這也就是:

cos θ = √ [(1 + cos (2θ)) / 2]

將等號兩邊、同乘以 2,會得到:

2 cos θ = 2 √ [(1 + cos (2θ)) / 2]

= √ [2 (1 + cos (2θ))]

= √ [2 + 2 cos (2θ)]

眼尖的讀者或許注意到,只要規定展開的項數、到 cos (90°) = 0 為止,就會構成餘弦函數對於其展開項的遞迴公式 (recursive formula);再將初始值的夾角,依 2 的次方、無限細分,那麼,這個自我指涉的公式、就會依迭代程序 (iterative process)、無窮進行下去,而得到餘弦 cos 的 √2 展開式。

我們僅示範幾項 (因為初始值 θ = 22.5°,所以 4θ = 90°):

2 cos θ = √ [2 + 2 cos (2θ)]

= √ [2 + √ [2 + 2 cos (4θ)]]

再將前述、由倍角公式產生的結果、代入十六分之一圓周的弦 S’’ 的式子,就有:

S’’ = √ [2 - 2 cos θ]

= √ [2 - √ [2 + 2 cos (2θ)]]

= √ [2 - √ [2 + √ [2 + 2 cos (4θ)]]]

此結果、與前述第二次遞迴之結果一致,

此即,和下式:

√ [2 - √ [2 + 2 √(1 - (S/2)²)]]

相吻合。

    在我死前
    在我死前
    留言0
    查看全部
    發表第一個留言支持創作者!