2014年6月29日 星期日

大衍求一術 ─ 中國餘數定理

https://4rdp.blogspot.com/2014/06/blog-post_29.html



中國古代採干支紀年,就是用十個天干 (甲、乙、丙、丁、戊、己、庚、辛、壬、癸),與十二地支 (子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥),依序組合成 ─ 甲子、乙丑、‧‧‧,因此每六十年成一個週期。古代人類壽命並不長,皇帝在位超過 60 年僅有清朝的康熙 (61 年) 與乾隆 (60 年),所以中國古代使用干支紀年沒甚麼大問題。

中華民國因國父 孫中山先生在武昌起義,辛亥革命成功推翻滿清政府而建立,這正好在 1911 年,以此為基準推算 60 年週期,所以我們可以知道 1971 年或是 1851 年就是辛亥年。不過辛亥年並不是 60 年週期的起頭,如果能計算出甲子年在 19XX 年,那麼其它的干支紀年就容易推算。

南宋的秦九韶(1208年-1261年)『數書九章』中的大衍求一術,就是處理這類數學問題,以現代代數式表示辛亥年,

X ≡ 8 (10)     ‧‧‧ X 除 10 餘 8
X ≡ 12 (12)   ‧‧‧ X 除 12 餘 12 (整除)

由第一式可知 X = {8,18,28,38,48,58},如果要滿足第二式則 X = 48,表示辛亥年排序第 48 年。
X ≡ 48 (60)   ‧‧‧ 辛亥年在干支紀年中排序第 48
因此甲子年在 1851 - (48 - 1) = 1804

那中日甲午戰爭在那一年?歷史的背誦題就變成數學題。

在連分數一文有提到約 4 年閏年一次,月亮 19 年一個閏月週期,4 x 19 = 76 年,由於以前曆法不精確,經年累月誤差造成月曆朔日時卻出現滿月,該滿月的日子卻看不到月亮,因此西元前 104 年正好冬至在 農曆 11 月 1 日,並且是一個新週期開始,漢武帝在司馬遷的建議下改曆,修正舊曆法的錯誤。

回歸主題,現在舉例說明如何快速求解 X,而不是用錯誤嘗試找答案。

X ≡ 2 (3),X ≡ 1 (5),X ≡ 5 (11)
如果有多個方程式,除數由小排到大,將除數兩兩輾轉相除,把餘數放在最右邊,列式如下
大除數 - 小除數 x 商 = 餘

X ≡ 2 (3),X ≡ 1 (5)

5 - 3 x 1 = 2
3 - 2 x 1 = 1 ‧‧‧ 計算到餘數為 1

然後將算式迭代到最後的算式
3 - (53 x 1) x 1 = 1
3 x 2 - 5 x 1 = 1

再把對方的餘數乘入相減
(3 x 2) x 1 - (5 x 1) x = -4
X = -4 + 3 x 5 ≡ 11 (15 = 3 x 5)


X ≡ 11 (15),X ≡ 5 (11)

15 - 11 x 1 = 4
11 - 4 x 2 = 3
4 - 3 x 1 = 1 ‧‧‧ 計算到餘數為 1

4 - (11 - 4 x 2) x 1 = 1
4 x 3 - 11 x 1 = 1
(15 - 11 x 1) x 3 - 11 x 1 = 1
15 x 3 - 11 x 4 = 1

(15 x 3) x 5 - (11 x 4) x 11 = -259
X = -259 + 15 x 11 x 2 ≡ 71 (165 = 15 x 11)

71 就是最後的答案

最後出題給大家練習算算,今年 2014 是甚麼干支紀年?

沒有留言:

張貼留言