跳轉到

0820 - al-Khwarizmi 代數學#

案件摘要#

約 820 年,巴格達「智慧宮」的花剌子模學者 al-Khwarizmi 寫下《Kitab al-jabr wa'l-muqabala》。這本書不只系統化了二次方程,還在一次命名中送給世界兩個詞:algebra(代數)與 algorithm(演算法)。這是「代數」作為一門獨立學科正式立案的時刻。

前因 -- 為什麼會有這個案子#

  • 阿拔斯王朝與智慧宮:8 世紀巴格達大力翻譯希臘、波斯、印度文獻,數學知識匯流於此。
  • 繼承遺產:巴比倫的數值代數、印度(婆羅摩笈多的零與數字系統)、希臘(歐幾里得的幾何證明傳統)三股線索齊備。
  • 實際需求:伊斯蘭法的遺產分配、商業交易、土地測量都需要可操作的計算規則——al-Khwarizmi 明言本書是為「最簡單也最有用」的計算需求而寫。

線索與推理 -- 數學式、程式、理論#

線索一:al-jabr 與 al-muqabala#

書名即方法: - al-jabr(還原/移項):把方程一邊的減項移到另一邊變加項。例如 \(x^2 = 40x - 4x^2\) 經 al-jabr 變成 \(5x^2 = 40x\) 。英文 algebra 即源自此詞(經拉丁文 liber algebrae)。 - al-muqabala(對消/化簡):兩邊同類項對消化簡。例如 \(50 + 3x + x^2 = 29 + 10x\) 經 al-muqabala 變成 \(21 + x^2 = 7x\) 。

線索二:二次方程的六種分類#

因為沒有零與負數, \(ax^2 + bx + c = 0\) 無法寫成一般式,必須按係數正負分為六種型態(b, c 皆以「數」「根」「平方」三種項組合):

型態 方程 解法
1 \(ax^2 = bx\) \(x = b/a\)
2 \(ax^2 = c\) \(x = \sqrt{c/a}\)
3 \(bx = c\) \(x = c/b\)
4 \(ax^2 + bx = c\) 配方法
5 \(ax^2 + c = bx\) 配方法(兩根皆正時給出兩解)
6 \(bx + c = ax^2\) 配方法

書中最著名的示範題:「平方加上十個根等於三十九」,即

\[ x^2 + 10x = 39 \;\Rightarrow\; x = \sqrt{\left(\frac{10}{2}\right)^2 + 39} - \frac{10}{2} = \sqrt{64} - 5 = 3 \]

推理:al-Khwarizmi 不只給步驟,還附上幾何證明——用邊長 \(x+5\) 的大正方形四角補上 \(5\times 5\) 的角塊,面積恰為 \(x^2 + 10x + 25 = 64\) 。這是巴比倫配方與希臘幾何嚴格性的合體,是這樁案件最精妙的推理。

線索三:代數(algebra)與演算法(algorithm)的命名由來#

  • algebra ← 書名中的 al-jabr(還原),12 世紀經克雷莫納的 Gerard 拉丁譯本傳入歐洲。
  • algorithm ← 作者名字 al-Khwarizmi 的拉丁化 Algoritmi。他另著《印度數字算術書》,講述位值記數的計算規則;「按 Algoritmi 的方法計算」遂演變為 algorithm。
  • 一個人、一本書、兩個基本詞——數學史上無出其右。

線索四:文字代數到符號代數的過渡#

  • al-Khwarizmi 用純文字表達方程(「平方」= mal,「根」= jidr,從測量術語來的),沒有符號。
  • 但他做了巴比倫人沒做的事:給出對整類方程通用的一般解法,並附證明——這是「演算法」思維的誕生。
  • 過渡路線:巴比倫(文字+具體數)→ 丟番圖(縮寫)→ al-Khwarizmi(文字+一般法)→ 韋達 1591(通用係數符號)→ 笛卡兒 1637(現代記法 \(x, y, z\) )。

Python:巴比倫 vs 代數式二次方程對照#

import math

def babylon_type4(b, c):
    """巴比倫:x^2 + b*x = c,只回傳正根"""
    return math.sqrt((b/2)**2 + c) - b/2

def algebraic_quadratic(a, b, c):
    """al-Khwarizmi 之後的現代公式:a*x^2 + b*x + c = 0 的實根"""
    d = b*b - 4*a*c          # 判別式——負數概念在巴比倫不存在!
    if d < 0:
        return []            # 複數根(1545 年 Cardano 之後才能理解)
    r = math.sqrt(d)
    return [(-b + r)/(2*a), (-b - r)/(2*a)]

# al-Khwarizmi 原題:x^2 + 10x = 39
print(babylon_type4(10, 39))              # 3.0
print(algebraic_quadratic(1, 10, -39))    # [3.0, -13.0]
# 對照:巴比倫看不到負根 -13;現代公式(有負數與零)一次給出兩解

結案 -- 後果與影響#

  • 結案陳詞:代數從此成為一門獨立學科——有名字、有方法、有證明、有教科書。al-jabr 兩字直接寫進了人類的詞彙。
  • 12 世紀拉丁譯本西傳,成為歐洲大學數學教科書直到 16 世紀(Cardano《Ars Magna》正是踩著它的肩膀起跳)。
  • 印度-阿拉伯數字經他的算術書傳播,與 1202 年 Fibonacci《Liber Abaci》合力完成商業計算革命。
  • 「一般解法+證明」的範式,是今日演算法分析與符號計算的共同祖先。

關鍵人物與文獻#

  • al-Khwarizmi(約 780–850):波斯裔巴格達學者,「代數學之父」與「演算法之父」。
  • al-Ma'mun 哈里發與智慧宮:資助翻譯與研究的「贊助人」。
  • 婆羅摩笈多(Brahmagupta, 628):《Brahmasphutasiddhanta》首次把零與負數當「數」運算,是本案的關鍵前置證據。
  • al-Khwarizmi, Kitab al-jabr wa'l-muqabala(約 820);Rosen 英譯本, 1831。