複製鏈接
請複製以下鏈接發送給好友

秦九韶算法

鎖定
秦九韶算法是中國南宋時期的數學家秦九韶提出的一種多項式簡化算法。在西方被稱作霍納算法。秦九韶(約公元1202年-1261年),字道古,南宋末年人,出生於魯郡(今山東曲阜一帶人)。
早年曾從隱君子學數術,後因其父往四川做官,即隨父遷徙,也認為是普州安嶽(今四川安嶽縣)人。
中文名
秦九韶算法
外文名
Horner Algorithm
別    名
霍納規則
提出者
秦九韶
提出時間
南宋
適用領域
計算數學
應用學科
數學

秦九韶算法基本介紹

秦九韶算法學者簡介

高中數學教材中介紹的秦九韶算法 高中數學教材中介紹的秦九韶算法
秦九韶與李冶、楊輝、朱世傑並稱宋元數學四大家。(安嶽縣於1998年9月正式開工建設秦九韶紀念館,2000年12月竣工落成。)
秦九韶聰敏勤學,宋紹定四年(公元1231),秦九韶考中進士,先後擔任縣尉、通判、參議官、州守等職。先後在湖北、安徽、江蘇、浙江等地做官。南宋理宗景定元年(公元1260年)出任梅州太守,翌年卒於梅州。據史書記載,他“性及機巧,星象、音律、算術以至營造無不精究”,還嘗從李梅亭學詩詞。他在政務之餘,以數學為主線進行潛心鑽研,且應用範圍至為廣泛:天文曆法、水利水文、建築、測繪、農耕、軍事、商業金融等方面。
秦九韶是我國古代數學家的傑出代表之一,他的《數書九章》概括了宋元時期中國傳統數學的主要成就,尤其是系統總結和發展了高次方程的數值解法與一次同餘問題的解法,提出了相當完備的“正負開方術”和“大衍求一術”。對數學發展產生了廣泛的影響。
秦九韶是一位既重視理論又重視實踐,既善於繼承又勇於創新的科學家,他被國外科學史家稱為是“他那個民族,那個時代,並且確實也是所有時代最偉大的數學家之一。 [1] 

秦九韶算法相關貢獻

秦九韶算法是一種將一元n次多項式的求值問題轉化為n個一次式的算法。其大大簡化了計算過程,即使在現代,利用計算機解決多項式的求值問題時,秦九韶算法依然是最優的算法。
在西方被稱作霍納算法,是以英國數學家霍納命名的。 [1] 

秦九韶算法計算方法

一般地,一元n次多項式的求值需要經過(n+1)*n/2次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法。在人工計算時,一次大大簡化了運算過程。
把一個n次多項式
改寫成如下形式:
多項式的值時,首先計算最內層括號內一次多項式的值,即
V1=an*x+a n-1
然後由內向外逐層計算一次多項式的值,即
這樣,求n次多項式f(x)的值就轉化為求n個一次多項式的值。
結論:對於一個n次多項式,至多做n次乘法和n次加法。 [2] 

秦九韶算法C++ 代碼實現

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
int main() {
    int n;
    cout << "請輸入多項式的次數 :";
    cin >> n;
    double *a = new double[n+1];//n次多項式申請n+1大小的數組
    cout << "請輸入多項式的係數(最高次項開始):" << endl;
    for(int i = n; i >= 0; i --)
        cin >> a[i];//讀入各項係數
    double x0,ans=a[n];
    cout << "請輸入 X0 " << endl;
    cin >> x0;
    for(int i = n-1;i >= 0;i --)
        ans = ans*x0 + a[i];//最高次項開始,往外展開
    cout << "多項式在X0出的函數值為:" << ans << endl;
    delete []a;//釋放動態內存
    return 0;
}

秦九韶算法《數書九章》

秦九韶 秦九韶
宋淳祜四至七年(公元1244至1247),秦九韶在湖州為母親守孝三年期間,把長期積累的數學知識和研究所得加以編輯,寫成了舉世聞名的數學鉅著《數書九章》。 書成後,並未出版。原稿幾乎流失,書名也不確切。後歷經宋、元,到明建國,此書無人問津,直到明永樂年間,在解縉主編《永樂大典》時,記書名為《數學九章》。又經過一百多年,經王應麟抄錄後,由王修改為《數書九章》。 [1] 
全書不但在數量上取勝,重要的是在質量上也是拔尖的。從歷史上來看,秦九韶的《數書九章》可與《九章算術》相媲美;從世界範圍來看,秦九韶的《數書九章》也不愧為世界數學名著
他在《數書九章》序言中説,數學“大則可以通神明,順性命;小則可以經世務,類萬物”。所謂“通神明”,即往來於變化莫測的事物之間,明察其中的奧秘;“順性命”,即順應事物本性及其發展規律。在秦九韶看來,數學不僅是解決實際問題的工具,而且應該達到“通神明,順性命”的崇高境界。 [1] 
秦九韶紀念館 秦九韶紀念館
《數書九章》全書共九章九類,十八卷,每類9題共計81個算題。該書著述方式,大多由“問曰”、“答曰”、“術曰”、“草曰”四部分組成:“問曰”,是從實際生活中提出問題;“答曰”,是給出答案;“術曰”,是闡述解題原理與步驟;“草曰”,是給出詳細的解題過程。另外,每類下還有頌詞,詞簡意賅,用來記述本類算題主要內容、與國計民生的關係及其解題思路等。 [2] 

秦九韶算法歷史

19世紀初,英國數學家威廉·喬治·霍納重新發現並證明,後世稱作霍納算法(Horner's method、Horner scheme)。但是,19世紀英國傳教士偉烈亞力Alexander Wylie. (1815–1887) 最早對霍納的發明權提出質疑。他在1852年著的《中國科學扎記》(Jottings on the Science of the Chinese)一篇論文中,詳細介紹秦九韶的正負開方術之後寫道“讀者不難認出這就是霍納在1819年因為發表《解所有次方程》論文,被數學家奧古斯都·德·摩根評為‘必使其發明人因發現此算法而置身於重要發明家之列’的方法;我以為應該對霍納的發明權提出辯駁。歐洲的朋友們可能會覺得意外,一位來自天朝帝國的競爭者,有更大的機會確立他的優先權”。此後,日本數學史家三上義夫在《中日數學史》一書中在詳述秦九韶的正負開方術後寫道:“誰能否認,霍納的輝煌方法,至少在早於歐洲六百年之前,已經在中國運用了。”。三上義夫還最先指出,秦九韶算法起源於漢代《九章算術》的開方法。其後王玲李約瑟有專文論述秦九韶算法起源於《九章算術》。前蘇聯數學史家尤什克維奇説“這是中國傳統數學最偉大成就之一”,他還説印度人不知有此方法,而阿拉伯數學家可能從中國前人傳入此方法。
下面以自今到古的順序,列出早在霍納之前對該算法的發現:
  • 1809年,保羅·魯菲尼
  • 1669年,艾薩克·牛頓(但缺乏詳細引文)
  • 14世紀,中國數學家朱世傑
  • 13世紀,中國數學家秦九韶在《數書九章》中
  • 12世紀,波斯的伊斯蘭數學家薩拉夫·丁·圖西
  • 11世紀(宋朝),中國數學家賈憲
  • 漢朝(公元前202到公元220年),劉徽所注的《九章算術》中
霍納在1819年發表的《解所有次方程》論文中的算例,其算法程序和數字處理都遠不及五百多年前的秦九韶有條理;秦九韶算法不僅在時間上早於霍納,也比較成熟。
元代數學家李冶和朱世傑繼承了秦九韶算法。 [2] 
參考資料
  • 1.    《中國數學史大綱》編寫組.《中國數學史大綱》.北京:商務印書館,2006年
  • 2.    中心數學教材研發中心高中課程標準教材研發組.《高中教育教材·數學(人教版_選修5)》.北京:人民教育出版社,2014年