當大衍求一術結合 EXCEL 與 MAPLE
李政豐
一 . 楔子
大約在西元前 300 年, 西方偉大的古希臘數學家歐幾里得 (Euclid) 發明了整數的輾轉相 除法, 西元一千七百多年, 瑞士著名的數學家尤拉 (Euler) 發明了二元一次整係數方程式的整 數解 (俗稱尤拉解法)。
在東方中國南宋年間 (約西元一千二百多年) , 誕生了一位大算學家秦九韶, 這位聰明機 智的數學巨星, 出生在四川省, 當時這個天府之國, 時常遭受蒙古軍隊的侵略, 他在兵荒馬亂的 艱苦環境中成長, 精通曆法、 測量、 賦稅、 經濟、 軍事、 營建等經世濟國之道, 他綜合所學, 著作
「數書九章」 十八卷, 在這本偉大著作的 『大衍類』, 用到了比尤拉解法更快速的 「大衍求一術」, 他只利用輾轉相除法的一系列商數, 搭配簡單的演算法則, 就能算得二元一次整係數方程式的 一組整數解 (俗稱格子點座標)。 [1, p.282]
大衍求一術數學思想的起源, 乃是 「孫子算經」 裡的 『中國剩餘定理』, 孫子算經的作者、
年代已不可考, 但可判定是漢朝以後 (約西元 220年以後) 的產物。 [2, p.25、107]
八百多年之後的今天, 由於資訊科技的進步, 在 21 世紀精準計算的年代, 縱然上述方程式 的整數解不難求得, 但是他們創造的演算法則, 仍處處顯露人類科學智慧的才華, 在目前具備功 能強大的優良軟體的輔助下, 更襯托出中國古代數學家思考的條理、 細密、 巧妙與精緻。
本文利用 「大衍求一術」, 以 EXCEL 來求得 ax + by = 1 (a, b ∈ N) 的一組整數解, 再求得 ax + by = c 的參數式解, 進而解答中國剩餘定理的一個例題。 最後以 MAPLE 程式 來求得 a(x)f (x) + b(x)g(x) = 1, (f (x)、g(x) 是兩個互質的實係數多項式) 的一組多項式解 a(x), b(x)。
尤其讓人高興的是, 多項式解的係數, 竟然是與手算的精準數一模一樣, 而不是浮點數, 並 且計算神速, 算式漂亮, 看完這些結果, 真令人慨嘆 MAPLE 的偉大。 古今相互輝映, 道盡科 學文明的歷史足跡。
撰寫本文的目的, 在拋磚引玉, 激起高中數學老師與學生, 對數學演算法則與數學工具軟 體研究的興趣, 摒除繁雜的計算, 讓數學變得更簡單、 生動、 有趣, 也藉此緬懷中國古代數學家 秦九韶, 對宋元黃金時期數學演進的偉大貢獻。
73
二 . 預備知識
在導入主題之前, 我們先介紹幾個基本而重要的定理, 往後的說明, 都必須以這些定理作 為論證的基礎。
整數除法原理: 對任意正整數 a, b, 必存在唯一的一組整數 q, r, 使得 a = b × q + r, 其 中 0 ≤ r < b。
整數輾轉相除法原理: 設 a, b, q, r 為整數, 且滿足 a = bq + r 則 (a, b) = (b, r)。
多項式除法原理: 對於實係數多項式 f (x) 與 g(x), g(x) 6= 0, 必存在兩多項式 q(x) 與 r(x), 使得 f (x) = q(x) · g(x) + r(x), 其中 r(x) = 0 或 deg r(x) < deg g(x)。
多項式輾轉相除法原理: f (x) 與 g(x) 為兩多項式, deg f (x) ≥ deg g(x), 若 f (x) = q(x) · g(x) + r(x), 則 f (x) 與 g(x) 的最高公因式, 就是 g(x) 與 r(x) 的最高公因式。
另外要先說明的是, MAPLE 有很多類的計算方式, 我們所採用的是符號計算 (symbolic calculation), 它所呈現的數字都是精準數, 就跟我們手算的結果相同, 既自然又真實。
三 . 本文
當兩個自然數 a, b, 且 (a, b) = 1, 我們要找方程式, ax + by = 1 的整數解時, 秦九韶的 大衍求一術, 對解這個問題有兩個重要的貢獻:
(1) 數書九章所說的 「以少除多, 遞互除之」, 就是利用歐幾里得的輾轉相除法, 求得這個 gcd
= 1
(2) 在大衍求一術中, 他只利用輾轉相除法的一系列商數, 搭配簡單的演算法則, 就能算得 ax +by = 1 的一組整數解。
甲 . 舉例說明大衍求一術列表的演算法則
例1. 求 35x + 8y = 1 的一組整數解。
解答: 由 (35, 8) = 1, 用橫式輾轉相除法求得一系列的商數, 再把商數用 qi 替換 35 = 8 × 4 + 3
8 = 3 × 2 + 2 3 = 2 × 1 + 1 2 = 1 × 2 + 0
q1 = 4, q2 = 2, q3 = 1, q4 = 2 代入左式
=⇒
35 = 8 × q1+ 3 8 = 3 × q2+ 2 3 = 2 × q3+ 1 2 = 1 × q4+ 0
(A式)
由右邊 (A 式) 倒數第二列的餘數 1開始往上逆推
1 = 3 − 2q3
= 3 − (8 − 3q2)q3
= (−1)1(q3)(8) + (−1)2(q3q2+ 1)(3)
= (−1)1(q3)(8) + (−1)2(q3q2+ 1)(35 − 8q1)
= (−1)2(q3q2+ 1)(35) + (−1)3[q1(q3q2+ 1) + q3](8) (B式) 將 (B 式) 最後一列 [ ] 中的式子, 按相乘的項數由多到少, 再按足碼由大而小的順序, 整理成 巢狀結構
[q1(q3q2+ 1) + q3] = [q3q2q1+ q3+ q1] = [q3(q2q1+ 1) + q1] 則所得到 35x + 8y = 1 的一組整數解是
x0= (−1)2(q3q2+ 1)
y0= (−1)3[q3(q2q1 + 1) + q1]
如果不理會解答的正負符號, 我們可將求解的過程, 利用簡單記憶的方式, 列出一個巢狀結構的 運算表格
表一
q1 q2 q3
1 0 1 q2 q3q2+ 1 0 1 q1 q2q1+ 1 q3(q2q1+ 1) + q1 它的演算法則是
1. 第 2 列第 1、 2、 3 行的位置分別填 1、 0、 1。
2. 第 3 列第 1、 2 行的位置分別填 0、 1。
3. 第 2 列第 4 行起往右一整列的每一格演算法則都是: 上方×左方+左前方。
4. 第 3 列第 3 行起往右一整列的每一格演算法則都是: 最上方×左方+左前方。
5. 解答正負符號的決定規則: 如表一所示; 倒數第二列的最後一行是 q3q2+ 1, 此行最上方是 q3, 足碼為 3, 則 x0 = (−1)3−1(q3q2+ 1), 最後一列的最後一行是 q3(q2q1 + 1) + q1, 則 y0 = (−1)3[q3(q2q1+ 1) + q1], x0 與 y0 恰好差了一個負號。
如果把 q1 = 4, q2 = 2, q3 = 1 代入所作成的表格是 表二
4 (q1) 2 (q2) 1 (q3)
1 0 1 2 3
0 1 4 9 13
(B 式) 最後一列, 或表一最後一行, 所代表的一組整數解是 x0= (−1)2(q3q2+ 1) = +3
y0= (−1)3[q3(q2q1+ 1) + 1] = −13 亦即表二最後一行所代表的一組整數解是
35(+3) + 8(−13) = 1
如果我們再把 q4 = 2 也放進去, 則表格最後一行的最後兩數, 是方程式的係數 35 與 8:
表三
4(q1) 2(q2) 1(q3) 2(q4)
1 0 1 2 3 8
0 1 4 9 13 35
它代表的是 35(−8) + 8(+35) = 0。
為什麼會有這個結果? 其實是在 (A 式) 最後一行的餘數 0, 逆推回去的結果, 我們將它證明如 下: 由 (A 式) 最後一列最後一行餘數 0 開始往上逆推
0 = 2 − 1q4
= 2 − (3 − 2q3)q4
= (−1)1(q4)(3) + (−1)2(q4q3+ 1)(2)
= (−1)1(q4)(3) + (−1)2(q4q3+ 1)(8 − 3q2) (C式)
= (−1)2(q4q3+ 1)(8) + (−1)3[q2(q4q3+ 1) + q4](3)
= (−1)2(q4q3+ 1)(8) + (−1)3[q2(q4q3+ 1) + q4](35 − 8q1)
= (−1)3[q2(q4q3+ 1) + q4](35) + (−1)4{q1[q2(q4q3+ 1) + q4] + (q4q3+ 1)}(8)
將 (C 式) 最後一列 [ ] 與 { } 中的式子, 按相乘的項數由多到少, 再按足碼由大而小的順序, 整理成巢狀結構
[q2(q4q3+ 1) + q4]
= [q4q3q2 + q4+ q2]
= [q4(q3q2+ 1) + q2]
{q1[q2(q4q3+ 1) + q4] + (q4q3+ 1)}
= {q4q3q2q1+ q4q1 + q2q1+ (q4q3+ 1)}
= {q4q3q2q1+ q4q3 + q4q1+ q2q1+ 1}
= {q4(q3q2q1+ q3+ q1) + (q2q1+ 1)}
= {q4[q3(q2q1+ 1) + q1] + (q2q1+ 1)}
則所得到的這一組整數解是
x0= (−1)3[q4(q3q2 + 1) + q2]
y0= (−1)4{q4[q3(q2q1+ 1) + q1] + (q2q1+ 1)}
即 (C 式) 最後一列所代表的是 35x0+ 8y0 = 0。
若暫時不理會解答的正負符號 (因為我們常見的二元一次不定方程式, ax + by = 1 係數 a、 b 可正可負), 我們利用上面的演算法則, 列出一個巢狀結構的運算表格
表四
q1 q2 q3 q4
1 0 1 q2 q3q2+ 1 q4(q3q2+ 1) + q2
0 1 q1 q2q1+ 1 q3(q2q1+ 1) + q1 q4[q3(q2q1+ 1) + q1] + (q2q1+ 1) 比對表三與表四
q4(q3q2+ 1) + q2 = 8
q4[q3(q2q1+ 1) + q1] + (q2q1+ 1) = 35 證畢。
例2. 求 5723x + 4171y = 97 的一組整數解。
解答: 為了確定它是否有整數解, 先檢查 (5723, 4171)| 97, 是否成立?
第一步: 先用直式輾轉相除法算得 (5723, 4171) = 97。
第二步: 把方程式兩邊同除 97 得到一個同義方程式 59x + 43y = 1。
第三步: 用橫式輾轉相除法求得一系列的商數
59 = 43 × 1 + 16 43 = 16 × 2 + 11 16 = 11 × 1 + 5 11 = 5 × 2 + 1
5 = 1 × 5 + 0
把 q1 = 1, q2 = 2, q3 = 1, q4 = 2, q5 = 5 代入大衍求一術的運算表格, 得到 表五
16(r1) 11(r2) 5(r3) 1(r4) 0(r5) 1(q1) 2(q2) 1(q3) 2(q4) 5(q5)
59 的係數 1 0 1 2 3 8 43
43 的係數 0 1 1 3 4 11 59
(1) 觀察倒數第二行的最後兩數, 它代表的是 (59)(−8) + (43)(11) = 1 取正負號的規則是: 8 在 q4 的這一行, 它的足碼 (index) 是 4, 故取 x0 = (−1)3(8), y0 = (−1)4(11)。 如果忘 了取正負號的規則, 要湊出滿足常數是 1 的一組解也很容易。
(2) 觀察最後一行的最後兩數, 它在 q5, 足碼是 5 的這一行, 它代表的是 (59)[(−1)4(43)] + (43)[(−1)5(59)] = 0。
(3) 再觀察倒數一、 二行的最後兩數, 它的交叉相乘積的差是 1 或 −1。 它代表的是 (59)(8) − (43)(11) = −1。
(4) 觀察倒數第三行的最後兩數, 它代表 (59)[(−1)2(3)] + (43)[(−1)3(4)] = 5, 5 是倒數第三 行最上方的餘數 r3。
乙 . 將大衍求一術的演算法則, 寫成 EXCEL 程式如下:
圖一
結合了大衍求一術與 EXCEL, 使得求二元一次不定方程式的整數解變得更簡單, 也引起學生
操作學習的一點樂趣。
[附註] 非常感謝數播審稿師長的提示, 在清華大學數學系全任重老師的網站 http://poncelet.math.nthu.edu.tw/chuan/123/test/rnplussn.htm 用 lotus 123 設計了大衍求一數的簡單表格, 具有與圖一相同的功能。
例3. 求 10x + 14y = 20 的所有整數解。
解答:
第一步: 先算得 (10, 14) = 2。
第二步: 把方程式兩邊同除 2 得到一個同義方程式 5x + 7y = 10, 如果常數項不能被最大公 因數 2 整除, 則方程式沒有整數解; 因為如果 x, y 是整數, 則 10x + 14y 也是整數, 而且一定是 (10,14) 的倍數。
第三步: 先求解 5x0+ 7y0= 1, 用橫式輾轉相除法求得一系列的商數;
5 = 7 × 0 + 5 7 = 5 × 1 + 2 5 = 2 × 2 + 1 2 = 1 × 2 + 0 表六
0(q1) 1(q2) 2(q3) 2(q4)
1 0 1 1 3 7
0 1 0 1 2 5
觀察倒數第二行, 我們得到的方程組解是
5(+3) + 7(−2) = 1. (D式) 即 x0 = +3, y0 = −2。
第四步: 將 (D 式) 兩邊各乘上同義方程式的常數 10, 5(+3×10)+7(−2×10) = 1×10, 我 們得到同義方程式 5x + 7y = 10 的一組解; (x, y) = (30, −20) 直線 5x + 7y = 10 的斜率是 −57 , 如果由整數解 (30, −20) 的格子點開始, 沿著直線出發, x 座標前進 7 格, y 座標就下降 5 格。 因為 7 與 5 互質, x 座標前進不到 7 格, y 座標下降的格子 數就不是整數, 因此所有整數解是:
x= 30 + 7t
y= −20 − 5t 其中 t 是整數。
丙 . 秦九韶如何用大衍求一術來解決中國餘數定理問題?
例4. 有一個自然數, 以三除之餘二, 以五除之餘三, 以七除之餘二, 此自然數最小是多少?
解答:
(1) 某數以三除之餘二, 以五除之餘三, 故可假設
某數 = 3x + 2 = 5y + 3. (E式) 由 3x + 2 = 5y + 3, 移項得 3x + 5(−y) = 1, 由大衍求一術的計算
3 = 5 × 0 + 3 5 = 3 × 1 + 2 3 = 2 × 1 + 1 2 = 1 × 2 + 0
表七
0(q1) 1(q2) 1(q3) 2(q4)
1 0 1 1 2 5
0 1 0 1 1 3
觀察最後二行的最後二列
3(2) + 5(−1) = 1
與 3x + 5(−y) = 1 比較
得到一組整數解 (x, y) = (2, 1)。 由 3x + 5(−y) = 1 的斜率是 35, 且 3, 5 互質。 得到直 線上格子點的參數式
x= 2 + 5t
y= 1 + 3t 其中 t 是整數, 把 x = 2 + 5t, 或 y = 1 + 3t 代入 (E 式) 得某數= 8 + 15t。
(2) 我們可把原命題改寫成 『某數以十五除之餘八, 以七除之餘二』, 故可假設
某數 = 15x + 8 = 7y + 2. (F式) 移項得
15x + 7(−y) = −6 (G式)
我們先計算
15x0+ 7(−y0) = 1 (H式)
由直式輾轉相除法
15 = 7 × 2 + 1 7 = 1 × 7 + 0
表八
2(q1) 7(q2)
1 0 1 7
0 1 2 15
觀察最後二行的最後二列得到 15(1) + 7(−2) = 1, 將上式乘上 (G 式) 的常數項 −6 得到 15(−6) + 7(12) = −6, 與 15x + 7(−y) = −6 相比較得到一組整數解,
x= −6 y = −12 , 由 直線 15x + 7(−y) = −6 的斜率是 157, 得到所有格子點座標
x= −6 + 7t
y= −12 + 15t 其中 t 是 整數, 把參數式中的 x = −6+7t, 或 y = −12+15t 代入 (F 式) 得到某數= −82+105t, 將 t 取 1, 即得到最小的某數 23。
上面解法, 是為不熟悉大衍求一術的高中同學所設計的求解過程, 其實有些方程式的一組 解答, 用目測就能看出來, 那就省略了列表計算的麻煩。
丁 . 用 MAPLE 解大衍求一術
當 f (x)、 g(x) 是兩個互質的實係數多項式, 要如何找到一組多項式解 a(x), b(x), 滿足 方程式 a(x)f (x) + b(x)g(x) = 1。 我們在唸代數的時候, 相信都有這個經驗, 要求得上述方程 式的一組多項式解, 且係數是精準數 (不是浮點數), 使用輾轉相除法逆推, 用手算一題幾乎要浪 費一小時的時間。 學了程式語言之後, 雖然寫程式, 也能很快的求得一組多項式解, 但是得到的 係數卻是浮點數, 那種感覺, 脫離了數學的精確與完美, 總是若有所失。 直到用了 MAPLE 程 式, 這種數學的感覺被找回來了。 底下是大衍求一術的 MAPLE 程式。
大衍求一術的新工具
: MAPLEf(x), g(x) 是互質的實係數多項式, 求兩多項式 a(x), b(x) 滿足 a(x)f (x)+b(x)g(x) = 1
——————————————————————————
先把所有數據歸零
>restart;
>i:=1:k:=1:
——————————————————————————
請您在 f (x) : 之後輸入被除式 f (x), 在 g(x) : 之後輸入除式 g(x)
>f (x) :=3∗x∧4+x∧3+1;
f(x) := 3x4+ x3+ 1
>g (x) :=2∗x∧3+2∗x∧2+x-1;
g(x) := 2x3+ 2x2+ x − 1
——————————————————————————
如果 f (x) 與 g(x) 不互質, 我們要除掉它們的最高公因式
>f (i) (x) :=f (x) /gcd (f (x) ,g (x) ) ; f(1)(x) := 3x4+ x3+ 1
>g (i) (x) :=g (x) /gcd (f (x) ,g (x) ) ; g(1)(x) := 2x3+ 2x2 + x − 1
——————————————————————————
先找商式跟餘式
>q (i) (x) :=quo (f (i) (x) ,g (i) (x) ,x) ; q(1)(x) := 32x− 1
>r (i) (x) :=rem (f (i) (x) ,g (i) (x) ,x) ; r(1)(x) := 52x+ 12x2
——————————————————————————
輾轉相除, 求得一系列的商式跟餘式
>for i from 1 by 1 while degree (r (i) (x) ) >0 do f (i+1) (x) :=g (i) (x) ;
g (i+1) (x) :=r (i) (x) ;
q (i+1) (x) :=quo (f (i+1) (x) ,g (i+1) (x) ,x) ; r (i+1) (x) :=rem (f (i+1) (x) ,g (i+1) (x) ,x) ; end do;
f(2)(x) := 2x3+ 2x2+ x − 1 g(2)(x) := 52x+12x2
q(2)(x) := 4x − 16 r(2)(x) := −1 + 41x f(3)(x) := 52x+ 12x2
g(3)(x) := −1 + 41x q(3)(x) := 821x+1681103 r(3)(x) := 1681103
——————————————————————————
取得商式的數目
>k:=i;
k := 3
——————————————————————————
用大衍求一術的演算法則求 a(x) 與 b(x)
>b (1) (x) :=simplify (q (1) (x) ) ;
b (2) (x) :=simplify (q (2) (x) ∗b (1) (x) +1) ; for i from 3 by 1 to k do
b (i) (x) :=simplify (q (i) (x) ∗b (i-1) (x) +b (i-2) (x) ) , end do;
b(1)(x) := 32x− 1
b(2)(x) := 6x2− 28x + 17
b(3)(x) := 413x3+168144 x2 −168114 x+ 168170
>a (1) (x) :=1;
a (2) (x) :=simplify (q (2) (x) ∗a (1) (x) +0) ; for i from 3 by 1 to k do
a (i) (x) :=simplify (q (i) (x) ∗a (i-1) (x) +a (i-2) (x) ) , end do;
a(1)(x) := 1 a(2)(x) := 4x − 16
a(3)(x) := 412x2 +168184 x+ 168133
——————————————————————————
把 a(x) 與 b(x) 簡化再降羃排列
>a (x) :=sort (simplify (a (k) (x) /r (k) (x) ∗ (-1) ∧ (k-1) ) ) , a(x) := 10382x2 +10384x+10333
>b (x) :=sort (simplify (b (k) (x) /r (k) (x) ∗ (-1) ∧ (k) ) ) ; b(x) := −123103x3−10344x2+ 10314x−10370
——————————————————————————
列印出 a(x)f (x) + b(x)g(x) = 1 的各項 a(x), f (x), b(x), g(x), 1
>print (a (x) ,f (1) (x) ,b (x) ,g (1) (x) ,1) ;
82
103x2+10384x+10333, 3x4+x3+1, −123103x3− 10344x2+10314x− 10370, 2x3+2x2+x − 1, 1
[附註] 非常感謝數播審稿師長的提示, MAPLE 中設有指令 gcdex, 可以直接計算上面式子的 a(x)、 b(x)。
MAPLE−→工具列的 HELP−→TOPIC SEARCH−→點選 gcdex−→APPLY Calling Sequence
gcdex (A,B,x,’s’,’t’) gcdex (A,B,C,x,’s’,’t’)
> gcdex (f (1) (x) ,g (1) (x) ,1,x,’s’,’t’) ;
> s,t;
82
103x2+ 84
103x+ 33
103, −123
103x3− 44
103x2+ 14
103x− 70 103
戊 . 大衍求一術的一般化證明
對所給兩個自然數 a, b 由輾轉相除法
a= bq1+ r1 (1)
b= r1q2 + r2 (2)
r1= r2q3 + r3 (3) r2= r3q4 + r4 (4)
...
如果令 r−1 = a, r0 = b 則有
ri−2 = ri−1qi + ri 的關係存在, 其中 i ∈ N。
由 (1)
r1 = a + (−q1)b (A)
由 (2)
r2= b − r1q2
= b + (−q2)[a + (−q1)b]
= (−q2)a + [(−1)2q2q1+ 1]b (B)
由 (3)
r3= r1− r2q3
= (a + (−q1)b) + (−1)q3[(−q2)a + ((−1)2q1q2+ 1)b]
= ((−1)2q2q3+ 1)a + ((−1)3q1q2q3 + (−1)q3− q1)b
= [(−1)2q3q2+ 1]a + [(−1)3q3(q2q1+ 1) − q1]b (C) 由 (4)
r4= r2+ (−1)q4r3
= (−q2)a + ((−1)2q2q1+1)b + (−1)q4{[(−1)2q3q2+1]a + [(−1)3q3(q2q1+1) − q1]b}
= [−q2− q4 + (−1)3q4q3q2]a + [(−1)2q2q1+ 1 + (−1)4q4q3(q2q1+ 1) + (−1)2q4q1]b
= (−1)[q4((−1)2q3q2+ 1) + q2]a + {q4[q3(q2q1+ 1) + q1] + (−1)2q2q1 + 1}b (D) 如果我們將它列成一個表格如下:
表九
大 衍 求 一 術
衍
序 −1 0 1 2 3 4
每 衍
餘 數 值
r−1(a) r0(b) r1 r2 r3 r4
執 行 值
商 數 值
q1 q2 q3 q4
每 衍
a 係 數
1 0 (α1) 1
(α2)
−q2
(α3) (−1)2q3q2+1
(α4)
−q4((−1)2q3q2+1)
−q2 回
饋 值
b 係 數
0 1 (β1)
−q1
(β2) (−1)2q2q1+1
(β3)
(−q3)[(−1)2q2q1+1]
−q1
(β4)
q4[q3(q2q1+1)+q1] +(−1)2q2q1 + 1
表九中 a, b 係數計算的演算法則是:
1. 衍序 −1, 0, 1 所對應的 a 係數分別放 1, 0, 1。
2. 衍序 −1, 0 所對應的 b 係數分別放 0, 1。
3. 其餘 a 係數右方每一空格的演算法則都是: (−1)×上方×左方+左前方。
4. 其餘 b 係數右方每一空格的演算法則都是: (−1)×上二格×左方+左前方。
如果令衍序 i 所對應的 a 係數為 αi, b 係數為 βi, 則由上面 (A)、 (B)、 (C)、 (D) 式可得 ri = αia+ βib。
底下我們想將表九 a 係數、 b 係數的計算作一般化:
由 ri−2= ri−1· qi+ ri, 則當 i ≥ 1 時
ri= ri−2+ (−1)qiri−1
= (αi−2a+ βi−2b) − qi(αi−1a+ βi−1b)
= (−qiαi−1+ αi−2)a + (−qiβi−1+ βi−2)b 亦即 ri = αia+ βib。
將一般化的結果列成一個表格是:
表十
大 衍 求 一 術
衍
序 · · · i − 2 i − 1 i · · · n− 1 n 每
衍 餘 數 值
· · · ri−2 ri−1 ri · · · rn−1 rn
執 行 值
商 數 值
· · · qi−2 qi−1 qi · · · qn−1 qn
每 衍
a 係 數
· · · αi−2 αi−1
(αi)
−qiαi−1+αi−2 · · · (αn−1)
−qn−1αn−2+αn−3
(αn)
−qnαn−1+αn−2 回
饋 值
b 係 數
· · · βi−2 βi−1
(βi)
−qiβi−1+βi−2 · · · (βn−1)
−qn−1βn−2+βn−3
(βn)
−qnβn−1+βn−2
由輾轉相除法原理:
a, b∈ N 若 a= bq + r 則 (a, b) = (b, r)。
如果我們把 a 當被除數, b 當除數, 由整數的除法定理, b > r ≥ 0, 當我們繼續作有限次輾轉 相除;
a= bq1 + r1 b= r1q2+ r2 r1= r2q3+ r3 r2= r3q4+ r4
...
ri−2= ri−1qi+ ri ...
rn−2= rn−1qn+ rn
則有 (a, b) = (b, r1) = (r1, r2) = (r2, r3) · · · 且存在某個自然數 n, 使得 r1 > r2 > r3 > r4 >· · · > rn−1> rn= 0
此時 (a, b) = rn−1.
四 . 結語
當我們坐在飛機上悠閒的往下看, 似乎很難體會到我們的祖先, 遠度重洋、 千里跋涉, 篳路 藍縷、 以啟山林的那種艱苦心境。
但是, 當我們今天使用 EXCEL 與 MAPLE 去解決大衍求一術的問題時, 我們卻能發自 內心的感受到中國古代數學家的的睿智與光芒, 大概是亙古不變的演算法則, 在提攜我們堅實 的邁步向前。 這真是數學與其他科技一個很大的差別。
本文是我們網路數學素材課程的一篇報告, 在撰寫過程中, 交通大學應數系黃大原老師, 給 我很多寶貴的意見與指導, 尤其是最後完整的證明與表格, 黃老師將它呈現得更加完美, 使我們 的學習, 融合著快樂與充實, 教學與互動, 既感性又溫馨, 在此特地敬表感謝之意。
參考文獻
(1) 黃武雄、 杜時然 (民 69)。 中西數學簡史。 台北: 人間文化事業股份有限公司。
(2) 李人言 (民 79)。 中國算學史 (七版)。 台北: 台灣商務印書館。
(3) 高級中學數學編輯小組李恭晴等 (民 74)。 基礎數學統合 (上冊)。 台北: 國立編譯館。
(4) 洪維恩 (民 90)。 數學魔法師。 台北: 碁峰資訊股份有限公司。
(5) 莫宗堅。 韓信點兵。 科學月刊第一卷第一期。
(6) 清華大學數學系全任重老師的網站:
http://poncelet.math.nthu.edu.tw/chuan/123/test/rnplussn.htm
—本文作者任教於竹南高中—