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。