作為解方程的基本通用算法,牛頓法是應(yīng)用數(shù)學(xué)和計(jì)算數(shù)學(xué)最重要的算法之一。這個(gè)簡(jiǎn)單神速的算法被冠以牛頓大名,那它真是牛頓發(fā)現(xiàn)的嗎?
撰文 | 曾鐘鋼(美國(guó)東北伊利諾伊大學(xué)數(shù)學(xué)系講座教授)、丁玖(美國(guó)南密西西比大學(xué)數(shù)學(xué)系教授)
猜不出初始近似怎么辦呢?沒(méi)關(guān)系,從任何非零正數(shù) a 出發(fā)都可以。隨意亂猜的結(jié)果無(wú)非是多算幾步,很快就會(huì)進(jìn)入精度加倍狀態(tài)。這個(gè)方法流傳至今成為經(jīng)典傳奇,叫做巴比倫方法。為什么說(shuō)是個(gè)傳奇?因?yàn)闆](méi)有文字記載。直到公元60年,古希臘數(shù)學(xué)家Hero of Alexandria (c. 10-c.70) 對(duì)這個(gè)方法才給出了有案可查的第一個(gè)明確的表述,所以巴比倫法也稱為赫倫方法 (Heron’s method)?,F(xiàn)在我們知道, 本文主題牛頓迭代法最古老的源頭來(lái)自四大文明之一的巴比倫文明。
什么是牛頓迭代法?
牛頓 (Isaac Newton,1643-1727) 的大名就無(wú)需介紹了。他以發(fā)現(xiàn)力學(xué)三大定律、萬(wàn)有引力定律和微積分躋身從古到今最偉大的科學(xué)家行列。牛頓無(wú)疑是有史以來(lái)最杰出的數(shù)學(xué)家之一。作為一個(gè)重大貢獻(xiàn),他率先發(fā)現(xiàn)的微積分可以上升到人類文明瑰寶的高度。所有的理工科大學(xué)生都應(yīng)該知道赫赫有名的“牛頓法”,也稱“牛頓迭代”或“牛頓近似”。自然科學(xué)家、應(yīng)用和計(jì)算數(shù)學(xué)家及工程學(xué)家們一旦需要求解非線性方程和方程組,腦子里首先應(yīng)該想到的就會(huì)是牛頓法。
什么是牛頓法呢?設(shè)想我們要求出一元非線性方程f(x) = 0的解,比如說(shuō)x – cos x = 0,這里f(x) =x – cos x 。數(shù)學(xué)史上有個(gè)著名的阿貝爾不可能定理,說(shuō)的是非線性方程一般來(lái)說(shuō)是不可能保證找到精確解的,門都沒(méi)有。所以我們需要所謂“數(shù)值方法”一步一步地逼近解,算到精度夠了就行。假如f(x)有導(dǎo)函數(shù)f'(x) ,牛頓法就是這樣的迭代程式:先取一個(gè)初始點(diǎn)x0作為解的近似,然后按下面的簡(jiǎn)單公式依次迭代:
你要作科學(xué)計(jì)算和工程計(jì)算嗎?幾乎所有問(wèn)題要么本身就是個(gè)方程,要么一定會(huì)在某個(gè)步驟需要解方程。作為解方程的基本通用算法,牛頓法是應(yīng)用數(shù)學(xué)和計(jì)算數(shù)學(xué)最重要的算法之一。這個(gè)簡(jiǎn)單神速的算法被冠以牛頓大名,那它真是牛頓發(fā)現(xiàn)的嗎?這是個(gè)歷史悠久又頗有爭(zhēng)議的傳奇故事,其間包含數(shù)學(xué)史上一個(gè)個(gè)如雷貫耳的名字。
經(jīng)久不衰的“謬誤”
現(xiàn)在大家用的代數(shù)符號(hào)和表達(dá)式體系,創(chuàng)始人是法國(guó)人韋達(dá) (Fran?ois Viète,1541-1603) 。他的謀生職業(yè)是律師,他還做過(guò)亨利三世和四世的王室智囊,掙足了錢給自己提供經(jīng)費(fèi)研究數(shù)學(xué)并將結(jié)果出版。除了代數(shù)上的造詣,他還是方程理論的大師。他計(jì)算能力超強(qiáng),在歐洲首次算出十位精確圓周率值。韋達(dá)在十七世紀(jì)初提出了一個(gè)多項(xiàng)式方程求根的算法,每一次計(jì)算精度數(shù)位增加一位。用現(xiàn)在的話說(shuō)叫線性收斂或一階收斂。韋達(dá)的算法解釋起來(lái)很費(fèi)功夫,有興趣的讀者可以參考引文[1] 。
在其1687年首版的輝煌巨著《自然哲學(xué)的數(shù)學(xué)原理》中,牛頓求解了用于天文學(xué)的x – e sin x = M這個(gè)超越方程。他將其中的正弦函數(shù)用級(jí)數(shù)展開,得到一個(gè)近似的多項(xiàng)式方程。然后他就可以用上述數(shù)值逼近多項(xiàng)式方程解的法子得到原方程的近似解。正如他在二十年前所做的那樣,他沒(méi)有明確地用到函數(shù)的導(dǎo)數(shù)概念來(lái)推導(dǎo)這個(gè)數(shù)值方法,也沒(méi)有明確提出迭代概念和公式。
英國(guó)科學(xué)史專家Nicholas Kollerstrom于1992年發(fā)表了一篇關(guān)于牛頓法的考證文章[3]。文章的標(biāo)題很有意思:《托馬斯·辛普森和“牛頓近似法”:一個(gè)經(jīng)久不衰的迷思》。意思是說(shuō)把公式(1)稱為“牛頓法”是個(gè)迷思(myth),也就是一個(gè)廣泛流傳的謬誤,而且這個(gè)謬誤“經(jīng)久不衰”。他指出,牛頓法(1)有兩個(gè)重要的特征:1. 它是一個(gè)迭代過(guò)程;2. 它采用了微分表達(dá)式。而這兩個(gè)特征中的哪一個(gè),都沒(méi)有在牛頓的《分析論》里出現(xiàn)。迭代法在理論上是一個(gè)無(wú)窮極限過(guò)程,牛頓只給出了三步計(jì)算演示。其實(shí)還可以加上一條:由于沒(méi)有使用微分,牛頓提出的方法只能用于多項(xiàng)式,不是一個(gè)通用算法。
第一個(gè)真正的迭代法
數(shù)值計(jì)算求解方程的第一個(gè)真正意義上的迭代法是跟牛頓同在英國(guó)的約瑟夫·拉夫森(Joseph Raphson,1648-1715)在他于1690年發(fā)表的文章《方程分析通論》中給出的近似方法。但它同樣沒(méi)有求導(dǎo)運(yùn)算,因此不符合“牛頓法”的第二個(gè)特征。然而,一些慷慨的后人,包括部分現(xiàn)代數(shù)學(xué)家,把“牛頓法”的勛章切成一半分給了拉夫森——稱之為“牛頓-拉夫森法”。
拉夫森強(qiáng)調(diào)用他的上述辦法周而復(fù)始地迭代下去,就可以計(jì)算出滿足任意精確的方程解。然而我們依然看不到求導(dǎo)數(shù)運(yùn)算的影子。此外,他僅僅對(duì)多項(xiàng)式方程提出了這個(gè)迭代法,用到的二項(xiàng)式公式無(wú)法直接推廣到像求解超越方程這樣的情形。在他最初由倫敦皇家學(xué)會(huì)發(fā)表的那篇文章的前言里,他提到他的方法與牛頓之前的做法有類似之處。然而,七年后的1697年,當(dāng)他把這個(gè)方法著書時(shí)沒(méi)提牛頓的名字,而說(shuō)韋達(dá)是他的方法的始祖。
如果我們比較牛頓和拉夫森的做法,不難發(fā)現(xiàn),牛頓用到一個(gè)經(jīng)過(guò)代入步驟而導(dǎo)出的一個(gè)似乎更加復(fù)雜的多項(xiàng)式,再丟掉高階項(xiàng)求得近似;拉夫森從頭到尾都是用給定的原多項(xiàng)式,運(yùn)算要簡(jiǎn)單得多。拉夫森感覺(jué)自己的方法跟牛頓是完全不一樣的推導(dǎo),無(wú)需歸功于牛頓。類似的比較也陸續(xù)出現(xiàn)。比如,在1796年發(fā)表的文章《關(guān)于拉夫森先生的方法的觀察》中,作者費(fèi)倫德(W. Frend)比較了兩法的各自優(yōu)點(diǎn):“考慮到兩種方法的簡(jiǎn)單性和概念性......我認(rèn)為總的來(lái)說(shuō),拉夫森先生求解方程的方法比艾薩克·牛頓爵士的更為方便?!?/p>
在1798年,法國(guó)大數(shù)學(xué)家拉格朗日(Joseph-Louis Lagrange,1736-1813)發(fā)表了頗具影響力的論文《數(shù)值求解方程》。他精細(xì)化并推廣了牛頓著作《分析論》中的方法,但依然沒(méi)有用到導(dǎo)數(shù)或微分術(shù)語(yǔ)。
被忘卻的發(fā)明人
那么,誰(shuí)才是“牛頓法”當(dāng)之無(wú)愧的發(fā)明人呢?
此人的全名是托馬斯·辛普森(Thomas Simpson,1710-1761),他是比牛頓和拉夫森遲了幾十年的英國(guó)數(shù)學(xué)家。他就是近似數(shù)值積分著名的“辛普森法則”的那個(gè)辛普森。有意思的是,辛普森在牛頓法貢獻(xiàn)恐怕最大,卻被后人差不多忘得一干二凈。他反而在數(shù)值積分法獲得并非實(shí)至名歸的榮譽(yù)。該得的沒(méi)得到,不該得的反而拿著了。早他一百年,德國(guó)天文學(xué)家開普勒(Johannes Kepler,1571-1630)就已經(jīng)發(fā)現(xiàn)了近似計(jì)算“曲邊矩形”面積的該項(xiàng)法則。因此,德國(guó)人把我們叫慣了的辛普森法則自豪地稱作為“開普勒的桶法則”,就像我們常常把關(guān)于二項(xiàng)展開式各項(xiàng)系數(shù)的“帕斯卡三角形”稱為“楊輝三角形”那樣異曲同工。
辛普森構(gòu)造出現(xiàn)代意義下的牛頓法是在1740年,此時(shí)牛頓已經(jīng)去世了十三年。那年他出了一本關(guān)于數(shù)學(xué)的論文集,其中一篇描述了“求解方程的一個(gè)新方法”,卻沒(méi)有列出任何先驅(qū)者的姓名。在前言部分,他斷言:“因?yàn)樗纫酝娜魏畏椒ǘ几毡?,它不能不具有相?dāng)大的用途?!边@聽上去口氣很大。他是自信而非吹牛:“取給定方程的流數(shù)……”此處,流數(shù)的英文是fluxion,正是牛頓當(dāng)年用來(lái)表示今天我們所稱的“導(dǎo)數(shù)”的那個(gè)東西——函數(shù)的瞬時(shí)變化率。接著,他給出了和上面公式(1)式實(shí)際一模一樣的迭代程序,除了沒(méi)有采用當(dāng)今標(biāo)準(zhǔn)的、微積分另一發(fā)明人萊布尼茨(Gottfried Leibniz,1646-1716)所引進(jìn)的導(dǎo)數(shù)記號(hào)。
辛普森用這個(gè)普遍方法做了五個(gè)例子,包括求解三次方程、平方根計(jì)算、指數(shù)方程等。更進(jìn)一步,他第一個(gè)將他的方法用于求解含有兩個(gè)未知數(shù)和兩個(gè)方程的方程組!既然他是有史以來(lái)第一個(gè)完整地提出和今日所指的牛頓法有完全相同格式的迭代法,數(shù)學(xué)史專家Kollerstrom得出結(jié)論:辛普森才是牛頓法的發(fā)現(xiàn)者。
辛普森版的牛頓法跟現(xiàn)代教科書的差別僅僅是所用的符號(hào)。他應(yīng)當(dāng)之無(wú)愧地被授予創(chuàng)造該法的榮譽(yù)。然而,到底是誰(shuí)寫出了現(xiàn)代形式的牛頓法呢?
他就是在近代數(shù)學(xué)向前邁步的崎嶇道路上留下巨大腳印的傅里葉(Joseph Fourier,1768-1830)。這位法國(guó)數(shù)學(xué)家在辛普森提出標(biāo)準(zhǔn)的牛頓法后的第二十八個(gè)年頭才出生。在十九世紀(jì)初,他首次用當(dāng)今世界通用的導(dǎo)數(shù)記號(hào)f’重新敘述了迭代法(1),同時(shí)把它說(shuō)成是“牛頓法”。由于拉格朗日的那篇雄文,后來(lái),有些英國(guó)數(shù)學(xué)家將此法稱為“牛頓和拉格朗日的方法”,而對(duì)拉夫森只字不提。十九世紀(jì)的數(shù)學(xué)史名家、德國(guó)人康托爾(Moritz Cantor,1829-1920)考察了牛頓、拉夫森等人的方程近似求解法,把拉夫森描繪為“牛頓的絕對(duì)仰慕者和模仿者”,認(rèn)為他的近似法“與牛頓的方法極其類似”。
瑞士出生的美國(guó)數(shù)學(xué)史家弗洛里安·卡喬里(Florian Cajori,1859-1930)在1911年的《美國(guó)數(shù)學(xué)月刊》上發(fā)文提出這個(gè)方法理應(yīng)被稱為“牛頓-拉夫森法”。但是,他的命名論據(jù)受到Kollerstrom的質(zhì)疑,依據(jù)正是那個(gè)“兩個(gè)特征”,后者認(rèn)為榮譽(yù)只能歸于辛普森。然而,著名的數(shù)學(xué)史家博耶(Carl Boyer,1906-1976)在他1968年出版的大作《數(shù)學(xué)史》中這樣斷言:“方程近似求解的牛頓法可在《分析論》中發(fā)現(xiàn)。”由于牛頓在科學(xué)史包括數(shù)學(xué)史上的巨大名望,擁有“牛頓法”的真正主人辛普森在數(shù)學(xué)史上幾乎失去了立足之地,拉夫森也只能偶然出現(xiàn)在牛頓名字的后面。
這種張冠李戴的命名在科學(xué)和數(shù)學(xué)史中比比皆是。例如,學(xué)過(guò)初等微積分的人都知道求不定式極限的“洛必達(dá)法則”,實(shí)際上是瑞士數(shù)學(xué)家伯努利(Johann Bernoulli,1667-1748) 的杰作。伯努利的數(shù)學(xué)功力可不是法國(guó)數(shù)學(xué)家洛必達(dá)(Guillaume de l’H?pital,1661-1704) 所能望其項(xiàng)背的。洛必達(dá)于1694年3月17日在給伯努利的信中,提出每年給他三百法郎換取他的最新數(shù)學(xué)發(fā)現(xiàn),并且不能透露給第三者。當(dāng)年伯努利告訴了洛必達(dá)這個(gè)求極限定理,兩年后洛必達(dá)將它寫進(jìn)了自己的著作《曲線的無(wú)窮小分析》,據(jù)說(shuō)這是全世界的第一本微積分教材。盡管洛必達(dá)在書中感謝了萊布尼茨和伯努利,尤其感謝伯努利,或許作者有意無(wú)意地沒(méi)有明確承認(rèn)“洛必達(dá)法則”是誕生于別人家的嬰兒,不明就里的后人就把這條極其有用的求極限法則冠上了他的名字。當(dāng)然伯努利在數(shù)學(xué)史上大名鼎鼎,少了個(gè)洛必達(dá)法則也不至于淪落成籍籍無(wú)名的歷史過(guò)客。
牛頓法的基本思想和深層含義是什么?哪些激情探索者又續(xù)寫傳奇?且待下篇
后記:作者以此文紀(jì)念我們的導(dǎo)師李天巖教授(1945年6月28日-2020年6月25日)逝世一周年。
參考文獻(xiàn)
[1] Tjalling J. Ypma, Historical Development of the Newton-Raphson Method, SIAM Review, 37, 531-551, 1995
[2] P. Deuflhard,“A short history of Newton’s method,”Documenta Math.,Extra Volume ISMP,25,25-30,2012.
[3] N. Kollerstrom,“Thomas Simpson and ‘Newton’s method of approximation’:an enduring myth,”BJHS,25, 347-354,1992.