《九章算術》的方程術

本文的閱讀等級:初級

《九章算術》是中國最古老的數學典籍之一,成書約於公元前100年,匯集了周朝以來的古代數學知識[1]。全書以問題集形式編纂,共收錄246個問題;在一個或數個問題之後,列出解答與對應解法,但沒有證明。這些問題按性質與解法分為九大類:方田、粟米、衰分、少廣、商功、均輸、盈不足、方程、勾股。今天我們使用的「方程」一詞即源自卷八章名。方程章專門討論線性方程組,共計18題,其中第一個問題給出完整的解法,稱為「方程術」,抄錄於下[2]

方程:今有上禾三秉,中禾二秉,下禾一秉,實三十九斗;上禾二秉,中禾三秉,下禾一秉,實三十四斗;上禾一秉,中禾二秉,下禾三秉,實二十六斗。問上、中、下禾實一秉各幾何?

答曰:上禾一秉,九斗、四分斗之一,中禾一秉,四斗、四分斗之一,下禾一秉,二斗、四分斗之三。

術曰:置上禾三秉,中禾二秉,下禾一秉,實三十九斗,於右方。中、左禾列如右方。以右行上禾遍乘中行而以直除。又乘其次,亦以直除。然以中行中禾不盡者遍乘左行而以直除。左方下禾不盡者,上為法,下為實。實即下禾之實。求中禾,以法乘中行下實,而除下禾之實。餘如中禾秉數而一,即中禾之實。求上禾亦以法乘右行下實,而除下禾、中禾之實。餘如上禾秉數而一,即上禾之實。實皆如法,各得一斗。

 
今有上等稻3捆、中等稻2捆、下等稻1捆,共打出39斗米;有上等稻2捆、中等稻3捆、下等稻1捆,共打出34斗米;有上等稻1捆、中等稻2捆、下等稻3捆,共打出26斗米。問上等稻、中等稻、下等稻各1捆能打出多少斗米?使用現代人孰悉的代數語言,令 x, y, z 分別代表上等稻、中等稻和下等稻各1捆所能打出的稻米斗數,根據題意寫出三元一次聯立方程組:

\begin{aligned}  3x+2y+z&=39\\  2x+3y+z&=34\\  x+2y+3z&=26.  \end{aligned}

 
兩千年前的中國數學家如何解決這個問題?方程術包含三個技巧:

  1. 利用分離係數法,以相當於矩陣的陣列形式來表示線性方程組;
  2. 以「直除法」消元得到梯形陣列;
  3. 持續消元直到產生對角陣列。

古人的書寫方式係由上而下、從右至左,故方程術訂定的係數排列規則為「置上禾三秉,中禾二秉,下禾一秉,實三十九斗,於右方。中、左禾列如右方」,如下所示:

左行 中行 右行

\begin{matrix}  1&2&3\\  2&3&2\\  3&1&1\\  26&34&39  \end{matrix}

寫出陣列表達即可開始消元化簡。首先,「以右行上禾 (即軸元 3) 遍乘中行而以直除」。注意這裡的「除」是減,「直除」意指將中行連續減去右行,直到中行上禾為零。因為中行上禾是 2,故通乘軸元 3 之後的中行必須減去2次右行,過程如下:

\begin{matrix}  1&2&3\\  2&3&2\\  3&1&1\\  26&34&39  \end{matrix}~\to~\begin{matrix}  1&6&3\\  2&9&2\\  3&3&1\\  26&102&39  \end{matrix}~\to~\begin{matrix}  1&3&3\\  2&7&2\\  3&2&1\\  26&63&39  \end{matrix}~\to~\begin{matrix}  1&0&3\\  2&5&2\\  3&1&1\\  26&24&39  \end{matrix}

方程術所謂的直除法即為高斯消去法的基本列運算 (elementary row operation),兩者的主要差異在於直除法先令中行乘以 3 才消元。只要所有的係數為整數,「先乘後減」即可避免中間過程產生分數,這不啻是直除法的一個優點 (相關討論見“利用行列式計算矩陣秩”)。接著,「又乘其次 (即左行),亦以直除」。按照同樣方式消去左行上禾,令左行通乘以軸元 3,再減去右行,如下:

\begin{matrix}  1&0&3\\  2&5&2\\  3&1&1\\  26&24&39  \end{matrix}~\to~\begin{matrix}  3&0&3\\  6&5&2\\  9&1&1\\  78&24&39  \end{matrix}~\to~\begin{matrix}  0&0&3\\  4&5&2\\  8&1&1\\  39&24&39  \end{matrix}

消去中行上禾與左行上禾後,方程術說:「然以中行中禾不盡者 (即軸元 5) 遍乘左行而以直除。」將左行通乘以 5,並四度減去中行 (因為左行中禾是 4),也就是減去中行通乘以 4 的運算結果,如下:

\begin{matrix}  0&0&3\\  4&5&2\\  8&1&1\\  39&24&39  \end{matrix}~\to~\begin{matrix}  0&0&3\\  20&5&2\\  40&1&1\\  195&24&39  \end{matrix}~\to~\begin{matrix}  0&0&3\\  0&5&2\\  36&1&1\\  99&24&39  \end{matrix}

至此我們得到一個等價的梯形係數陣列,對應的線性方程組為

\begin{aligned}  3x+2y+z&=39\\  5y+z&=24\\  36z&=99.  \end{aligned}

 
進入下一個階段,方程術說:「左方下禾不盡者 (即軸元 36),上為法 (即 36),下為實 (即 99)。實即下禾之實。」這個步驟只是命名而已,沒有發生實際運算,但我們不妨對上法下實約分:

\begin{matrix}  0&0&3\\  0&5&2\\  36&1&1\\  99&24&39  \end{matrix}~\to~\begin{matrix}  0&0&3\\  0&5&2\\  4&1&1\\  11&24&39  \end{matrix}

接著,「求中禾,以法 (軸元 4) 乘中行下實,而除下禾之實 (即 11)」。運用直除法,令中行通乘以 4,再減去左行,即得

\begin{matrix}  0&0&3\\  0&5&2\\  4&1&1\\  11&24&39  \end{matrix}~\to~\begin{matrix}  0&0&3\\  0&20&2\\  4&4&1\\  11&96&39  \end{matrix}~\to~\begin{matrix}  0&0&3\\  0&20&2\\  4&0&1\\  11&85&39  \end{matrix}~\to~\begin{matrix}  0&0&3\\  0&4&2\\  4&0&1\\  11&17&39  \end{matrix}

上面最後一個步驟就是「餘如中禾秉數而一 (約去 5),即中禾之實 (即 17)」。 再來,「求上禾亦以法 (即軸元 4) 乘右行下實,而除下禾、中禾之實。餘如上禾秉數而一,即上禾之實」。按同樣方式,右行通乘以 4,連續減去左行與中行,直至右行的下禾與中禾為零,然後再約分,如下:

\begin{matrix}  0&0&3\\  0&4&2\\  4&0&1\\  11&17&39  \end{matrix}~\to~\begin{matrix}  0&0&12\\  0&4&8\\  4&0&4\\  11&17&156  \end{matrix}~\to~\begin{matrix}  0&0&12\\  0&4&0\\  4&0&0\\  11&17&111  \end{matrix}~\to~\begin{matrix}  0&0&4\\  0&4&0\\  4&0&0\\  11&17&37  \end{matrix}

對應的方程組為 4x=374y=174z=11。最後,「實皆如法」,將上、中、下實除以法 (三者同有軸元 4),即得到答案,末句「各得一斗」是指用一斗為度量單位。

 
《九章算術》的方程術是數學史上最早出現的線性方程組解法,這確實是一個偉大的成就。我們在歌頌前人同時,或許也應思考一個問題:方程術已見許多重要的代數運算技巧,為甚麼後人站在巨人的肩膀上卻未能開創一套線性方程理論呢?

 
註解
[1] 來源:維基百科:九章算術
[2] 來源:九章算術電子書

This entry was posted in 線性方程, 線性代數專欄 and tagged , , . Bookmark the permalink.

13 Responses to 《九章算術》的方程術

  1. Watt Lin says:

    為甚麼後人站在巨人的肩膀上卻未能開創一套線性方程理論呢?
    推想古人之立場,尚未使用123456789之符號,運算過程,用「一二三四五六七八九」的方式書寫,有所不便。
    而「0」之觀念、「0」之符號,「零」的普及書寫,哪一年才出現?
    解方程,若遇到分數、小數,在古代,也是一項困擾。
    可能還有其他多重因素,值得深思!

    • ccjou says:

      維基百科:南宋數學家開始用書寫算草代替算籌算板,為了減少書寫的筆劃,將4、5、9的籌碼簡化;為了算草需要,引入〇符號。
      http://zh.wikipedia.org/wiki/%E7%AE%97%E7%AD%B9

      當然數學符號不完備是個原因,目標問題的設定和研究方法也可能是關鍵因素。

      • Chenlogy says:

        我覺得是”種族文化”與”政治閉關”引響了哲學思考方向… 當歐洲結束黑暗時代 進入了文藝復興,中國卻反其道而行, “閉關政策”與”天朝思想” 可能是罪魁禍首…

    • Chenlogy says:

      我想說講”文藝復興”大家就明白了.大家都不發言, 讓我有種很奇怪感覺 = =”
      是不是我說錯了???
      “數字概念的發展” — 台大數學系網站
      http://episte.math.ntu.edu.tw/articles/mm/mm_06_4_01/page3.html
      “印度-阿拉伯數字符號”數字符號大概在西元1000年左右假波斯數學家之著作傳入歐洲,
      代數學在此”文藝復興時代”開始有重大進展…
      我再附上 文藝復興wiki 網址
      http://zh.wikipedia.org/wiki/%E6%96%87%E8%89%BA%E5%A4%8D%E5%85%B4

      • ccjou says:

        我提出這個問題是讓大家一起思考,並不期待立刻有令多數人滿意的答案。有些問題值得我們花很長的時間來思考,哲學家稱這種持續處在追尋答案的狀態為“懸置”。很多歷史學家也在討論類似我提出的問題,一個朋友從英國帶回一本書送我:Why the west rules for now,厚達700頁,書中提及兩種理論:長期必然性與短期偶然性。前者強調某些初始狀態(例如拼音文字或表意文字)造成之後的必然發展差異,後者認為是某些歷史偶然事件造成巨大的影響。兩派人馬都在尋找證據支持他們的理論,目前為止,不分勝負。

  2. ccjou says:

    世說新語有一則故事。晉明帝小時候坐在老爸元帝膝上,元帝問兒子:「你認為長安和太陽那個比較遠?」明帝回說:「太陽遠。只聽過有人從長安來,沒聽過有人從太陽來的。」第二天,元帝召集群臣宴會,興致勃勃地將昨天的事跟大夥兒講了一遍,又再次問明帝:「你說太陽和長安那個比較遠?」明帝回:「太陽近。」元帝聽了一愣,便問:「你今天的答案怎麼跟昨天的不同?」明帝回老爸:「我抬頭就看到太陽,卻看不到長安。」這個故事告訴我們演繹法的危險,因為選擇不同的資訊往往可以推論出相反的結論。

  3. ccjou says:

    9/25華爾街日報中文版刊登蘇州大學教授董潔林撰寫的“《墨經》:中國科學史上的孤獨一歌”,文中提出一個問題:像墨子這樣的科學家為什麼在中國不能生存下來?作者提出幾點以作拋磚引玉,其中包含意識形態、社會階級、市場和文化等因素。
    http://chinese.wsj.com/big5/20120925/DJL075711.asp?source=UpFeature

    • Watt Lin says:

      如果古代流傳至今的文字,能夠提供現代科學作新的擴展,會讓人們更加珍惜古文明。

      • ccjou says:

        每一個人都無可逃避地受他所處時代的教育內容與形式所制約。在我求學時代,《中國文化基本教材》僅擷取論語孟子章篇,墨家宣揚的「巧傳,則求其故」,根本不在主流思想之列。自然今天絕大多數人都不知道「對於世代相傳的工業技術,要探究其原因」,這種鼓吹追求系統化知識的論點其實早就出現於春秋時代。

  4. 今天看到這篇文章,想請問一下
    0 0 12 0 0 12
    0 4 8 → 0 4 0
    11 17 156 11 17 111 156是怎麼變成111的? 謝謝

  5. 發出後ㄈ阿現格式跳掉了,是想請問最後一步的156是如何運算才會變成111?

  6. suehang says:

    若能参考大陆数学家李尚志的对”幻方”的论述,中的很多为题都能找到近世代数(尤其是群-环-域)的坚实理论基础,不得不数还是古人功夫高呀!

Leave a comment