用秦九韶算法求n次多项式f(x)=anx^n+an-1x^n-1+……+a1x+a0,求f(x0)需要算乘方的次数

用秦九韶算法求n次多项式f(x)=anx^n+an-1x^n-1+……+a1x+a0,求f(x0)需要算乘方的次数,第1张

一元n次多项式的求值需要经过[n(n+1)]/2次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法。在人工计算时,一次大大简化了运算过程。特别是在现代,在使用计算机解决数学问题时,对于计算机程序算法而言秦九韶算法可以以更快的速度得到结果,减少了CPU运算时间。

相关贡献

秦九韶算法是一种将一元n次多项式的求值问题转化为n个一次式的算法。其大大简化了计算过程,即使在现代,利用计算机解决多项式的求值问题时,秦九韶算法依然是最优的算法。

在西方被称作霍纳算法,是以英国数学家霍纳命名的。

该算法看似简单,其最大的意义在于将求n次多项式的值转化为求n个一次多项式的值。在人工计算时,利用秦九韶算法和其中的系数表可以大幅简化运算;对于计算机程序算法而言,加法比乘法的计算效率要高很多,因此该算法仍有极大的意义,对于计算机来说,做一次乘法运算所用的时间比作一次加法运算要长得多,所以此算法极大地缩短了CPU运算时间。

(附:计算机程序)

INPUT “n=”;n

INPUT “an=”;a

INPUT “x=”;x

v=a

i=n-1

WHILE i>=0

PRINT “i=”;i

INPUT “ai=”;a

v=vx+a

i=i-1

WEND

PRINT v

END 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]) #include <bits/stdc++h>using namespace std;class Solution{public:    int valueofPolynomial(string s)    {        int len = ssize();        int x, num[1000], dex = 0, temp = 0;        for (int i = 0; i < len; i++)        {            if (s[i] >= '0' && s[i] <= '9')            {                temp = temp  10 + s[i] - '0';            }            else if (s[i] == '+')            {                temp = 0;                continue;            }            else if (s[i] == '^')            {                x = temp;                continue;            }            else            {                num[dex++] = temp;                temp = 0;            }        }        temp = num[0];        for (int i = 1; i < dex; i++)        {            temp = temp  x + num[i];        }        return temp;    }};int main(){    Solution Plain;    string str = "43^3+53^2+63^1+73^0";    cout << PlainvalueofPolynomial(str) << endl;    return 0;}

先说方程的根,x^3-5x^2+16^x-80=0,左侧看成一个关于x的函数f(x),因此求方程的根就是在求函数f(x)图像与x轴交点(即f(x)=0时x的取值)

然后是斜截法,其思想就是 f(x)是一段弧线,用一段线段代替它求得近似根,再以这个根作为线段的起点求一个更近似的根。图中第二步的那个公式是用解析的方法表示线段的根,如果这个你也看不懂建议跳过这段或者先学习数学解析几何

再说最后那段代码,((x-5)x+16)x-80在数学上与x^3-5x^2+16^x-80完全相等,这难道不是显然的吗?至于为什么不写成x^3的形式,是因为前者运算量更小,运算更快(不信自己拿纸笔算一算试试),顺便一提,这个叫做秦九韶算法,是多项式求值的最快算法

首先把一个次多项式写成的形式,然后化简,求次多项式的值就转化为求个一次多项式的值,求出的值

解:把一个次多项式改写成如下形式:)求多项式的值时,首先计算最内层括号内一次多项式的值,即然后由内向外逐层计算一次多项式的值,即这样,求次多项式的值就转化为求个一次多项式的值的值为;故答案为:

本题考查通过程序框图解决实际问题,把实际问题通过数学上的算法,写成程序,然后求解,属于中档题

秦九韶算法是一种将一元n次多项式的求值问题转化为n个一次式的算法。其大大简化了计

秦九韶算法

算过程,即使在现代,利用计算机解决多项式的求值问题时,秦九韶算法依然是最优的算法。

在西方被称作霍纳算法,是以英国数学家霍纳命名的。

编辑本段秦九韶简介

秦九韶(约公元1202年-1261年),字道古,南宋末年人,出生于鲁郡(今山东曲阜一带人)。早年曾从隐君子学数术,后因其父往四川做官,即随父迁徙,也认为是普州安岳(今四川安岳县)人。秦九韶与李冶、杨辉、朱世杰并称宋元数学四大家。(安岳县于1998年9月正式开工建设秦九韶纪念馆,2000年12月竣工落成。)

秦九韶聪敏勤学,宋绍定四年(公元1231),秦九韶考中进士,先后担任县尉、通判、参议官、州守等职。先后在湖北、安徽、江苏、浙江等地做官。南宋理宗景定元年(公元1260年)出任梅州(今广东梅县)守,翌年卒于梅州。据史书记载,他“性及机巧,星象、音律、算术以至营造无不精究”,还尝从李梅亭学诗词。他在政务之余,以数学为主线进行潜心钻研,且应用范围至为广泛:天文历法、水利水文、建筑、测绘、农耕、军事、商业金融等方面。

秦九韶是我国古代数学家的杰出代表之一,他的《数书九章》概括了宋元时期中国传统数学的主要成就,尤其是系统总结和发展了高次方程的数值解法与一次同余问题的解法,提出了相当完备的“正负开方术”和“大衍求一术”。对数学发展产生了广泛的影响。

秦九韶是一位既重视理论又重视实践,既善于继承又勇于创新的科学家,他被国外科学史家称为是“他那个民族,那个时代,并且确实也是所有时代最伟大的数学家之一。

编辑本段数书九章

宋淳祜四至七年(公元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=a

i=n-1

WHILE i>=0

PRINT “i=”;i

INPUT “ai=”;a

v=vx+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]);

以上就是关于用秦九韶算法求n次多项式f(x)=anx^n+an-1x^n-1+……+a1x+a0,求f(x0)需要算乘方的次数全部的内容,包括:用秦九韶算法求n次多项式f(x)=anx^n+an-1x^n-1+……+a1x+a0,求f(x0)需要算乘方的次数、秦九韶算法的历史意义、请问c语言中弦截法怎么理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9672985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存