盈不足術

盈不足術是中國古代數學的一種算術方法。西漢成書的算學經典《九章算術》的第七章即名為「盈不足」。狹義的盈不足術指典型的盈虧問題的演算法。廣義的盈不足術則指透過雙假設法將其他數學問題轉化為盈虧問題、再用機械化演算法求解的方法。

## 典型盈虧問題

《九章算數》原文｜解釋｜抽象演算法｜具體代入

今有共買雞｜一群人一起買雞

人出九，盈十一｜每人出 9 塊，合起來多出 11 塊｜記每人出的錢為 $a_1$，多出的錢為 $b_1$｜$a_1=9\quad b_1=11$

人出六，不足十六｜每人出 6 塊，合起來差 16 塊｜記每人出的錢為 $a_2$，差的錢為 $b_2$｜$a_2=6\quad b_2=16$

問︰人數、雞價各幾何？｜人數和雞的總價分別是多少？

盈不足術曰｜「盈不足術」的演算法如下

置所出率，盈、不足各居其下｜寫出每人出了多少錢，把多出和差的錢分別對應地寫在其下｜$a_1\qquad a_2$ $b_1\qquad b_2$｜$9\qquad 6$ $11\qquad 16$

令維乘所出率，並以為實｜交叉相乘，再相加，作為被除數（「實」）｜$a_1b_2+a_2b_1$｜$9 \times 16 + 6 \times 11 = 210$

並盈、不足為法｜把多出和差的錢加起來，作為除數（「法」）｜$b_1+b_2$｜$16+11=27$

實如法而一｜被除數除以除數（所得即為不盈不虧時的條件）｜$x=\frac{a_1b_2+a_2b_1}{b_1+b_2}$｜$x=\frac{210}{27}=7+\frac 79$

盈不足相與同其買物者，置所出率，以少減多，餘｜寫出多出時和不足時每人兩次分別出了多少錢，用大數減去小數，得到「余」｜$|a_1-a_2|$｜$|9-6|=3$

以約法、實 實為物價，法為人數｜「余」除「實」，得到物價「余」除「法」得到人數｜$p=\frac{a_1b_2+a_2b_1}{|a_1-a_2|}$ $q=\frac{b_1+b_2}{|a_1-a_2|}$｜$p=\frac{210}{3}=70$ $q=\frac{27}{3}=9$

答曰：九人，雞價七十｜共有 9 個人，總價為 70 塊

### 證明

劉徽在為《九章算術》作注時，利用齊同原理對盈不足術進行了證明：「盈朒維乘兩設者，欲為同齊之意。……齊其假令，同其盈朒……通計齊則不盈不朒之正數，故可並之為實，並盈、不足為法。」

劉徽指出，交叉相乘的意義是使其「同齊」。每人所出為 $a_1$時，盈 $b_1$，那麼總價變為 $b_2$倍、每人所出變為 $a_1b_2$時，盈 $b_1b_2$。每人所出為 $a_2$時，不足 $b_2$，那麼總價變為 $b_1$倍、每人所出變為 $a_2b_1$時，不足 $b_1b_2$。這樣就「同其盈朒」，兩者相加則盈虧相抵，就「不盈不朒」，此時總價為 $b_1+b_2$倍，每人所出為 $a_1b_2+a_2b_1$，相除即得到總價不變時每人所出的錢。

## 雙假設法

除盈虧類問題，《九章算術》還通過雙假設法，將其他算術問題轉化、套入盈虧類問題的演算法模型，進行求解。如：

《九章算數》原文｜解釋｜抽象演算法｜具體代入

今有醇酒一斗，直錢五十；行酒一斗，直錢一十｜好酒每斗 50 塊，劣酒每斗 10 塊

今將錢三十，得酒二斗｜現在花了 30 塊，買了 2 斗酒

問︰醇、行酒各得幾何？｜買了多少斗好酒、多少斗劣酒？

術曰：假令醇酒五升，行酒一斗五升，有餘一十｜假設買了 0.5 斗好酒、1.5 斗劣酒，則多花了 10 塊｜設 $a_1$，計算得 $b_1$｜$a_1=0.5$ $b_1=50\times 0.5+10\times (2-0.5)-30=10$

令之醇酒二升，行酒一斗八升，不足二｜假設買了 0.2 斗好酒、1.8 斗劣酒，則少花了 2 塊｜設 $a_2$，計算得 $b_2$｜$a_2=0.2$ $b_2=30-[50\times 0.2+10\times (2-0.2)]=2$

（使用盈不足術，求出不盈不虧時的條件）｜$x=\frac{a_1b_2+a_2b_1}{b_1+b_2}$｜$x=\frac{0.5\times 2+0.2\times 10}{10+2}=0.25$ $2-0.25=1.75$

答曰：醇酒二升半，行酒一斗七升半｜好酒 0.25 斗，劣酒 1.75 斗

該問題本屬於雞兔同籠，而通過兩次假設可以將其轉化為盈虧類問題，再用盈不足術求解。

### 非線性問題

盈不足術實際上是一種線性插值法；對於非線性的問題，所求出的只是其近似值。《九章算術》和劉徽都沒有意識到這一點。如：

《九章算數》原文｜解釋｜抽象演算法｜具體代入

今有蒲生一日，長三尺；莞生一日，長一尺蒲生日自半；莞生日自倍｜蒲草第一天長 3 尺，之後每天的生長速度為前一天的一半；莞草第一天長 1 尺，之後每天的生長速度為前一天的兩倍

問︰幾何日而長等？｜何時蒲草和莞草一樣長？

術曰：假令二日，不足一尺五寸｜假設長了 2 天，則莞草還差 1.5 尺｜設 $a_1$，計算得 $b_1$｜$a_1=2$ $b_1=(3+1.5)-(1+2)=1.5$

令之三日，有餘一尺七寸半｜假設長了 3 天，則莞草長了 1.75 尺｜設 $a_2$，計算得 $b_2$｜$a_2=3$ $b_2=(1+2+4)-(3+1.5+0.75)=1.75$

（使用盈不足術，求出不盈不虧時的條件）｜$x=\frac{a_1b_2+a_2b_1}{b_1+b_2}$｜$x=\frac{2\times 1.75+3\times 1.5}{1.5+1.75}=2+\frac 6{13}$

答曰：二日、十三分日之六｜當長了 $2+\frac 6{13}$ 天時

各長四尺八寸、十三分寸之六。｜等長為4尺、八又十三分之六寸

<image>

實際上該問題是非線性的。根據等比數列求和公式，可以將莞草與蒲草的長度差表示為：

$$f(x)=\frac{1\times (1-2^x)}{1-2}- \frac{3\times (1-0.5^x)}{1-0.5}=2^x+\frac{6}{2^x}-7$$

所求即為 $f(x)$的正數根。解得 $x=\log_{2} 6=1+\frac{\log 3}{\log 2}$。

而使用盈不足術所求出的答案實為近似值。兩者關係見右圖。

這種利用雙假設法加盈不足術來求解一些複雜方程的根的近似值的方法，在現在的高等數學中被應用於線性插值近似法和割線法。

## 歷史

在中國最早的數學書《算數書》中，就有通過盈不足術計算面積為一畝的正方形田地的邊長的記載。《九章算術》第七章「盈不足」，則是對雙假設法最早的詳細說明。

伊斯蘭黃金時代的阿拉伯數學家也大量研究了雙假設法。阿布·卡米勒著有《雙假設法之書》（Kitāb al-khaṭaʾayn）。古斯塔·伊本·盧卡採用歐式幾何的方法，第一次對雙假設法給出了幾何證明。

中世紀歐洲數學家斐波那契在《計算之書》的第十三章中討論了雙假設法。他明確承認該方法來自阿拉伯數學，並稱之為 elchataym，即來自阿拉伯語的 al-khaṭāʾayn。在代數符號尚未普及的時代，這種萬能演算法在歐洲流傳甚廣，興盛一時。

明朝時，中國傳統數學已經衰落，《九章算術》近乎失傳，盈不足術不為人所知。利瑪竇和李之藻將克里斯多福·克拉維烏斯的《實用算術概論》（Epitome arithmeticae practicae）編譯為《同文算指》，將其中的雙假設法稱為「疊借互征法」。

錢寶琮最早提出，阿拉伯數學中的雙假設法來自中國的盈不足術，al-khaṭāʾayn 即與「契丹」有關。李約瑟也認為有此種可能性。這種說法已被中國數學史界廣泛接受；但也有學者認為，中國盈不足術是歐洲雙假設法的源頭的說法仍然缺乏令人信服的證據支持。