所謂前言
不知從何時開始,「尋求最大公因/約數」成了政治術語,其意義大概是「尋求最大共識或妥協」之類。正本清源,大家還記否數學上是如何尋求最大公因數(Highest Common Factor, H.C.F.)?
比如,要尋求 51 和 390 的最大公因數,現在的小學生應懂用「列舉法」處理,即
可見,51 和 390 的最大公因數是 3。
有「玩」奧數的小學同學,應可進一步解以下的二元一次不定方程(或曰丟番圖方程 diophantine equation)
要求 皆為整數。但相信一般同學,要到中六的純數課,才學到以輾轉相除法(歐幾里德算法 Euclidean Algorithm)處理。
輾轉相除法
承上例,即
前一行的餘數是 3,即 51 和 390 的最大公因數是 3。把上述式子的餘數寫成主項(Subject),即
隨即由下而上,由 3 出發,即
解出
其中 是任意整數。
注, 是等價於 ,即解後者也可。
上述有關整數的輾轉相除法,在純數課中只充當「踏腳石」,純粹為了過渡到尋找多項式的最大公因式(Greatest Common Divisor, G.C.D.)並解決
(其中 是 的 G.C.D.)
之類的問題。
更樸素的做法
如果不知輾轉相除法為何物,要解上述的不定方程,我們有更樸素的做法。就以
為例。
因為要求的 皆為整數,故此
(其中 是整數)
進而,
得
(其中 是整數)
進而,
得,
(其中 是整數)
進而,
得
(其中 是整數)
即
現在由下而上,把所有變數以 表達,即
正是之前的解。
上述算法本質不過是輾轉相除法,同學,你能看出當中的共通點嗎?
上述算法比較直觀,以下介紹兩個不太直接的方法,特別是第二個方法,更能延伸。
利用連分數
不詳述,看看便懂:
現在把最後的 「刪除」,即
並「還原」它為普通分數,即
考慮它和原來分數的差,即
看看分子,關係已得:
得
進一步得之前的答案:
其中 是任意整數。
為何可以如此?這裡是用到連分數的特性,一些純數考題也建於這些構作,有機會再談。
利用矩陣
其實我最希望介紹這法,因為矩陣是「在課程內」,相信同學比較容易接受。
矩陣可以把輾轉相除法清楚表達出來。
對於整數 ,先寫出矩陣
大家看到「貼上」了一個恆等矩陣(identity matrix)嗎?
之後進行若干「特別」的行運算(unimodular row operation),使上述矩陣變成
那麼, 就是 的最大公因數,且 的整數解為
修純數的同學,對 row operation 不會太陌生,「玩」高斯消元法(Gaussian Elimination)時,就是進行若干的 row operation ;而所謂 unimodular row operation,包括
– 某行乘以某整數後,加到另一行
– 某行乘以
– 兩行互換
又讓我以解
為例
行動方向是看第一列(column)的兩個數,以「小數」滅「大數」,最終希望出現零。
()
()
()
()
()
出現零,算法終。得出 3 就是 51 和 390 的最大公因數,且 的解為
同學,順道觀察一下上述出現過的方陣:
, , , , 和
它們的行列式(Determinant)皆是 1。
這個現象容易解釋,因為進行 unimodular row operation,就是對應著乘以一個行列式為 1 或 -1 的方陣 。
比如
對應著
或
當中的 的情況見下:
– 對於行運算 ,。
– 對於行運算 ,。
– 對於行運算 ,。
– 對於行運算 ,。
– 對於行運算 ,。
(注:非常容易得出 ,因為 就是該種行運算作用在 上的結果。)
不論上述哪種情況, 的行列式皆為 1 或 -1。於是,由 出發,不斷左乘所謂的 ,最終得的方陣,其行列式就是 1 或 -1 了。
矩陣法之推廣
原來對於聯立多元一次不定方程,我們也可利用矩陣處理,舉例:
解
要求 皆為整數。
做法:先把係數矩陣寫出,即
把 的轉置矩陣(Transpose) 「貼上」對應的恆等矩陣 ,即
隨即利用 unimodular row operation,使上述矩陣
變成
其中 是所謂梯矩陣(echelon matrix),即形如
(注,這裡的 和 不一定要是 1。)
這裡談的梯矩陣,一般地,是指零行(zero row)在矩陣底部,且每行非零行(non-zero row)的最左非零元,在它以上各行的最左非零元之右邊者。
好了,運算:
( , )
()
()
()
()
好了,我們已得梯矩陣
及其對應的方陣
好了,我們透過以下兩個步驟完工,
步驟一:解
其中 就是原方程組,等號右邊的數字。如本例,即解
即
(其中 是任意整數)
步驟二:計
即答案是
(其中 是任意整數)
同學,請驗算一下它是否滿足
再舉一例,解不定方程
算法如下:
()
()
()
()
解
即
(其中 是任意整數)
故
(其中 是任意整數)
(JOHN NG 寫於 2011-01-30)
=.=,雖然新高中有學matrix, 但從matrix開始,不太看的懂。看來新高中的matrix和pure maths 真的有點距離。
迴響 由 jaychan — 2011/02/09 @ 6:37 下午 |
本人讀pure maths
都不太看得懂,2個課程距離應該不大
迴響 由 Carmen — 2011/02/09 @ 7:14 下午 |
“更樸素的做法"那段運算好像有錯,第11行,應是t1 + (6t1 + 1)/11?,導致最終的equation of y,尾5行,y=17t-50/11也有錯?
迴響 由 Handason Tam — 2014/01/21 @ 3:22 下午 |
已改,非常感謝!
迴響 由 johnmayhk — 2014/01/21 @ 6:14 下午 |