秦九韶演算法,秦九韶演算法在matlab中的寫法

時間 2021-08-30 10:54:02

1樓:匿名使用者

秦九韶演算法是中國南宋時期的數學家秦九韶提出的一種多項式簡化演算法。在西方被稱作霍納演算法(horner algorithm或horner scheme),是以英國數學家威廉·喬治·霍納命名的.

把乙個n次多項式f(x)=a[n]x^n+a[n-1]x^(n-1)+......+a[1]x+a[0]改寫成如下形式:

f(x)=a[n]x^n+a[n-1]x^(n-1))+......+a[1]x+a[0]

=(a[n]x^(n-1)+a[n-1]x^(n-2)+......+a[1])x+a[0]

=((a[n]x^(n-2)+a[n-1]x^(n-3)+......+a[2])x+a[1])x+a[0]

=......

=(......((a[n]x+a[n-1])x+a[n-2])x+......+a[1])x+a[0].

求多項式的值時,首先計算最內層括號內一次多項式的值,即

v[1]=a[n]x+a[n-1]

然後由內向外逐層計算一次多項式的值,即

v[2]=v[1]x+a[n-2]

v[3]=v[2]x+a[n-3]

......

v[n]=v[n-1]x+a[0]

這樣,求n次多項式f(x)的值就轉化為求n個一次多項式的值。

(注:中括號裡的數表示下標)

結論:對於乙個n次多項式,至多做n次乘法和n次加法

a為多項式降冪排列的係數

function value=qinjiushao(a,x)

n=length(a);

f=zeros(n);

f(1)=a(1);

for i=1:n-1

f(i+1)=f(i)*x+a(i+1);

endvalue=f(n)

disp('真值')

polyval(a,x)

2樓:王春公升

秦九韶演算法是一種將一元n次多項式的求值問題轉化為n個一次式的演算法。其大大簡化了計

算過程,即使在現代,利用計算機解決多項式的求值問題時,秦九韶演算法依然是最優的演算法。

在西方被稱作霍納演算法,是以英國數學家霍納命名的。

編輯本段秦九韶簡介

秦九韶(約公元2023年-2023年),字道古,南宋末年人,出生於魯郡(今山東曲阜一帶人)。早年曾從隱君子學數術,後因其父往四川做官,即隨父遷徙,也認為是普州安岳(今四川安岳縣)人。秦九韶與李冶、楊輝、朱世傑並稱宋元數學四大家。

(安岳縣於2023年9月正式開工建設秦九韶紀念館,2023年12月竣工落成。)

秦九韶聰敏勤學,宋紹定四年(公元1231),秦九韶考中進士,先後擔任縣尉、通判、參議官、州守等職。先後在湖北、安徽、江蘇、浙江等地做官。南宋理宗景定元年(公元2023年)出任梅州(今廣東梅縣)守,翌年卒於梅州。

據史書記載,他「性及機巧,星象、音律、算術以至營造無不精究」,還嘗從李梅亭學詩詞。他在政務之餘,以數學為主線進行潛心鑽研,且應用範圍至為廣泛:天文曆法、水利水文、建築、測繪、農耕、軍事、商業金融等方面。

秦九韶是我國古代數學家的傑出代表之一,他的《數書九章》概括了宋元時期中國傳統數學的主要成就,尤其是系統總結和發展了高次方程的數值解法與一次同餘問題的解法,提出了相當完備的「正負開方術」和「大衍求一術」。對數學發展產生了廣泛的影響。

秦九韶是一位既重視理論又重視實踐,既善於繼承又勇於創新的科學家,他被國外科學史家稱為是「他那個民族,那個時代,並且確實也是所有時代最偉大的數學家之一。

編輯本段數書九章

宋淳祜四至七年(公元1244至1247),秦九韶在湖州為母親守孝三年期間,把長期積累的數學知識和研究所得加以編輯,寫成了舉世聞名的數學巨著《數書九章》。 書成後,並未出版。原稿幾乎流失,書名也不確切。

後歷經宋、元,到明建國,此書無人問津,直到明永樂年間,在解縉主編《永樂大典》時,記書名為《數學九章》。又經過一百多年,經王應麟抄錄後,由王修改為《數書九章》。

全書不但在數量上取勝,重要的是在質量上也是拔尖的。從歷史上來看,秦九韶的《數

秦九韶紀念館

書九章》可與《九章算術》相媲美;從世界範圍來看,秦九韶的《數書九章》也不愧為世界數學名著。

他在《數書九章》序言中說,數學「大則可以通神明,順性命;小則可以經世務,類萬物」。所謂「通神明」,即往來於變化莫測的事物之間,明察其中的奧秘;「順性命」,即順應事物本性及其發展規律。在秦九韶看來,數學不僅是解決實際問題的工具,而且應該達到「通神明,順性命」的崇高境界。

《數書九章》全書共九章九類,十八卷,每類9題共計81個算題。該書著述方式,大多由「問曰」、「答曰」、「術曰」、「草曰」四部分組成:「問曰」,是從實際生活中提出問題;「答曰」,是給出答案;「術曰」,是闡述解題原理與步驟;「草曰」,是給出詳細的解題過程。

另外,每類下還有頌詞,詞簡意賅,用來記述本類算題主要內容、與國計民生的關係及其解題思路等。

編輯本段秦九韶演算法

一般地,一元n次多項式的求值需要經過[n(n+1)]/2次乘法和n次加法,而秦九韶演算法只需要n次乘法和n次加法。在人工計算時,一次大大簡化了運算過程。特別是在現代,在使用計算機解決數學問題時,對於電腦程式演算法而言秦九韶演算法可以以更快的速度得到結果,減少了cpu運算時間。

把乙個n次多項式f(x)=a[n]x^n+a[n-1]x^(n-1)+......+a[1]x+a[0]改寫成如下形

秦九韶:

f(x)=a[n]x^n+a[n-1]x^(n-1)+......+a[1]x+a[0]

=(a[n]x^(n-1)+a[n-1]x^(n-2)+......+a[1])x+a[0]

=((a[n]x^(n-2)+a[n-1]x^(n-3)+......+a[2])x+a[1])x+a[0]

=......

=(......((a[n]x+a[n-1])x+a[n-2])x+......+a[1])x+a[0].

求多項式的值時,首先計算最內層括號內一次多項式的值,即

v[0]=a[n]

v[1]=a[n]x+a[n-1]

然後由內向外逐層計算一次多項式的值,即

v[2]=v[1]x+a[n-2]

v[3]=v[2]x+a[n-3]

......

v[n]=v[n-1]x+a[0]

這樣,求n次多項式f(x)的值就轉化為求n個一次多項式的值。

(注:中括號裡的數表示下標)

結論:對於乙個n次多項式,至多做n次乘法和n次加法。

編輯本段意義

該演算法看似簡單,其最大的意義在於將求n次多項式的值轉化為求n個一次多項式的值。在人工計算時,利用秦九韶演算法和其中的係數表可以大幅簡化運算;對於電腦程式演算法而言,加法比乘法的計算效率要高很多,因此該演算法仍有極大的意義,對於計算機來說,做一次乘法運算所用的時間比作一次加法運算要長得多,所以此演算法極大地縮短了cpu運算時間。

(附:電腦程式)

input 「n=」;n

input 「an=」;a

input 「x=」;x

v=ai=n-1

while i>=0

print 「i=」;i

input 「ai=」;a

v=v*x+a

i=i-1

wend

print v

end編輯本段pascal演算法實現

v[1]:=a[n]*k+a[n-1];

for i:=2 to n do

v[i]:=v[i-1]*k+a[n-i];

writeln(v[n]);

用c語言程式設計實現秦九韶

3樓:逸野山人

/*修改n,n代表f(x)為

n次多項式*/

#define n 5/*暫且版設定為5*/#include

void main()

sum=a[n];

for(i=n;i>=1;i--)

printf("f(x)=%f\n",sum);

}/*互相學習哈權*/

4樓:難忘的喵喵喵

在高中數學必修三的封皮上有這個圖

要的話+584570236

秦九韶演算法在matlab中的寫法

5樓:情談學長

演算法是用matlab編寫的,如下所示:

a = 100:-1:1; x = 1:

0.01:1.

1; y = zeros(11);對於j = 1:11n = length(a); f =零(n); f(1)= a(1);對於i = 1:n-1f(i + 1)= f(i)* x(j)+ a(i + 1); endy(j)= f(n) ; endplot(x,y);

演算法是中國南宋數學家秦久乙提出的多項式簡化演算法。

通常,對一元n次多項式的求值需要(n + 1)* n / 2乘法和n次加法,而qin jiuyi演算法僅需要n次乘法和n次加法。在手動計算中,一次可以大大簡化計算過程。

6樓:巨人的隕落丶

秦九韶演算法在matlab中的寫法如下:

a=100:-1:1;

x=1:0.01:1.1;

y=zeros(11);

for j=1:11

n=length(a);

f=zeros(n);

f(1)=a(1);

for i=1:n-1

f(i+1)=f(i)*x(j)+a(i+1);

endy(j)=f(n);

endplot(x,y);

秦九韶演算法是中國南宋時期的數學家秦九韶提出的一種多項式簡化演算法。

一般地,一元n次多項式的求值需要經過(n+1)*n/2次乘法和n次加法,而秦九韶演算法只需要n次乘法和n次加法。在人工計算時,一次大大簡化了運算過程。

7樓:

a為多項式降冪排列的係數

function value=qinjiushao(a,x)n=length(a);

f=zeros(n);

f(1)=a(1);

for i=1:n-1

f(i+1)=f(i)*x+a(i+1);

endvalue=f(n)

disp('真值')

polyval(a,x)

秦九韶演算法在matlab中的寫法

情談學長 演算法是用matlab編寫的,如下所示 a 100 1 1 x 1 0.01 1.1 y zeros 11 對於j 1 11n length a f 零 n f 1 a 1 對於i 1 n 1f i 1 f i x j a i 1 endy j f n endplot x,y 演算法是中國...

高中數學 這道題解法二那裡怎麼看 就是秦九韶演算法的an,a1指的是什麼請以這道題為例說明謝謝

或許你是還沒學到高中數學的二次項定理。這裡的an,a1其實是可以為任意的實數,就拿 來說,其實它應該還有一個三次項,只不過三次項係數a3 其實也可以說是n 3,即an 0,二次項的係數2 a2,一次項的係數a1。常數項為a0。若你知道更多,可以看看基礎知識手冊 曲一線的知識清單之類的書就行了。若還有...

九鼎遷秦是什麼意思?戰國時九鼎遷秦代表著什麼?

秦王滅周遷九鼎九鼎現在 九鼎,bai據傳是大禹在建立夏朝以後,用du天下九牧所貢之zhi金鑄成九鼎,象徵九州dao。商代時,專對表示王室屬貴族身份的鼎,曾有嚴格的規定 士用一鼎或三鼎,大夫用五鼎,而天子才能用九鼎,祭祀天地祖先時行九鼎大禮。因此,鼎 很自然地成為國家擁有政權的象徵,進而成為國家傳國寶...