算法案例—(2)秦九韶算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

要求多项式的值,应该先算最内层的一次多项式的
值,即 v0 a n
v1anxan1
然后,由内到外逐层计算一次多项式的值,即
v2v1xan2 v3v2xan3
vnvn1xa0
最后的一 项是什么?
:在求多项式的值上,这是怎样的一个转化?
这种将求一个n次多项式f(x)的值转化成求n个
一次多项式的值的方法,称为秦九韶算法。
然后由内向外逐层计算一次多项式的值,即
v0=2 v1=v0x-5=2×5-5=5
v2=v1x-4=5×5-4=21
v3=v2x+3=21×5+3=108
v4=v3x-6=108×5-6=534 所以,当x=5时,多 V5=v4x+7=534×5+7=2677 项式的值是2677.
例1:用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值.
1.3算法案例
案例2 秦九韶算法
复习 1、求两个数的最大公约数的两种方法分别是 ___辗__转_相__除_法___和__更__相_减__损__术__
2.两个数21672,8127的最大公约数是 ( A )
A. 2709 B. 2606 C. 2703 D. 2706
3.用更相减损术求140和80的最大公约数是(D )
的值.
注:对于一个n次多项式: 秦九韶算法把运算的次数由最多 1+2+3+…+n=n(n+1)/2次乘法和 n次加法的运算,减少为最多只需做 n次乘法和n次加法运算,大大提高 了运算效率.
例1:用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值.
解法一:首先将原多项式改写成如下形式 : f(x)=((((2x-5)x-4)x+3)x-6)x+7
种算法中用了几次乘法运算?和几次加法运算?
共做了4次乘法运算,5次加法运算。
问题2:能否探索一个算法,来解决任意多项式的 f(求x)值=2问x5题-5?x4-4x3+3x2-6xBiblioteka Baidu7v0=2
=(2x4-5x3-4x2+3x-6)x+7 v1=v0x-5=2×5-5=5
=((2x3-5x2-4x+3)x-6)x+7 v2=v1x-4=5×5-4=21
解:原多项式先化为:
f(x)=2x6-5x5 +0×x4-4x3+3x2-6x+0,列表如下
=(((2x2-5x-4)x+3)x-6)x+7 v3=v2x+3=21×5+3=108
=((((2x-5)x-4)x+3)x-6)x+7 v4=v3x-6=108×5-6=534
v5=v4x+7=534×5+7=2677
当x=5时,多项式 的值是多少?
所以,当x=5时,多
这种求多项式值的方法就项叫式秦的九值韶是算26法77..
计算多项式f(x)=x5+x4+x3+x2+x+1当x = 5的值
算法2:
f(5)=55+54+53+52+5+1
=5×(54+53+52+5+1 ) +1 =5×(5×(53+52+5 +1 )+1 ) +1
=5×(5×(5×(52+5 +1) +1 ) +1 ) +1 =5×(5×(5×(5 ×(5 +1) +1 )+1)+1) +1
v2=v1x+an-2, v3=v2x+an-3, ……, vn=vn-1x+a0.
这样,求n次多项式f(x)的值就转化为求n个 一次多项式的值.这种算法称为秦九韶算法.
特点:通过一次式的反复计算,逐步得出
高次多项式 f(x ) a n x n a n 1 x n 1 a 1 x a 0
A. 4 B. 5 C. 10 D. 20 21672=8127×2+5418
8127=5418×1+2709
5418=2709×2+0
辗转相除法与更相减损术的比较:
(1)都是求最大公约数的方法,计算上辗转 相除法以除法为主,更相减损术以减法为主; 计算次数上辗转相除法计算次数相对较少, 特别当两个数字大小区别较大时计算次数的 区别较明显。 (2)从结果体现形式来看,辗转相除法体现 结果是以相除余数为0则得到,而更相减损术 则以减数与差相等而得到.
解法二:列表
原多项式 的系数
2 -5 -4 3 -6 7
x=5
10 25 105 540 2670
2 5 21 108 534 2677
v0 v1 v2 v3 v4 v5 多项式 所以,当x=5时,多项式的值是2677. 的值.
练一练:用秦九韶算法求多项式 f(x)=2x6-5x5 -4x3+3x2-6x当x=5时的值.
( 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
思考:当知道了x的值后该如何求多项式的值?
f ( x ) ( ( a n x a n 1 ) x a n 2 ) x a 1 ) x a 0
一般地,对于一个n次多项式 f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0. 我们可以改写成如下形式:
f(x)=(…(anx+an-1)x+an-2)x+…+a1)x+a0. 求多项式的值时,首先计算最内层括号内一 次多项式的值,即 v1=anx+an-1,
然后由内向外逐层计算一次多项式的值,即
问题1:怎样求多项式f(x)=x5+x4+x3+x2+x+1
当x=5时的值?并写出程序.
算法1:因为f(x)=x5+x4+x3+x2+x+1
所以f(5)=55+54+53+52+5+1
=3125+625+125+25+5+1
= 3906 一共做了多少次乘法运算和多少次加法运算?
上述算法一共做了1+2+3+4=10次乘法运算, 5次加法运算.优点是简单易懂,但计算效 率不高.
《数书九章》——秦九韶算法 设f (x) 是一个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
相关文档
最新文档