比 赛
(1)求多项式f(x)=x5+x4+x3+x2+x+1
当x=5时的值。
(2)求多项式 f (x) = 2x5 – 5x4 – 4x3 + 3x2 – 6x + 7
当x = 5时的值。
(1) 3906
(2) 2677
程序计算
1.3.2 算 法 案 例
(案例2) 秦 九 韶 算 法
秦九韶
(1208年-1261年)
南宋官员、数学家,与李冶、杨辉、朱世杰并称宋元数学四大家。
字道古,汉族,自称鲁郡(山东曲阜)人,生于普州安岳(今属四川)。
数学贡献:
《划时代巨著》,《大衍求一术》,
《任意次方程》,《一次方程组解法》
《三斜求积术》,《数书九章》
《相关算法》,《剩余定理》
----------秦九韶
秦九韶算法是求一元多项式的值的一种方法。
问题
怎样求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值呢?
算法一:把5代入,计算各项的值,然后把它们加起来。
算法二:先计算x2的值,然后依次计算x2·x、( x2·x)·x、( ( x2·x)·x)·x的值。
提取公因式
f(x) =x5+x4+x3+x2+x+1
f(5) = 55+54+53+52+5+1
=3125+625+125+25+5+1
=3906
分析:算法1中用了几次乘法运算?和几次加法运算?
算法一:把5代入,计算各项的值,然后把它们加起来。
=5x5x5x5x5+5x5x5x5+5x5x5+5x5+5+1
10次的乘法运算,5次的加法运算
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
算法二:先计算x2的值,然后依次计算
x2·x、( x2·x)·x、( ( x2·x)·x)·x 的值
分析:算法2中用了几次乘法运算?和几次加法运算?
4次的乘法运算,5次的加法运算
计算多项式
f(x)=x5+x4+x3+x2+x+1当x=5的值
显然,采用第二种算法,计算能够更快地得到结果。
法一:10次的乘法运算,5次的加法运算
法二:4次的乘法运算,5次的加法运算
例1:求当x = 5时多项式 f (x) = 2x5 – 5x4 – 4x3 + 3x2 – 6x + 7的值.
解法一:首先将原多项式改写成如下形式 : f(x)=((((2x-5)x-4)x+3)x-6)x+7
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
v5=v4x+7=534×5+7=2677
所以,当x=5时,
多项式的值是2677.
然后由内向外逐层计算一次多项式的值,即
5次乘法,5次加法
2 -5 -4 3 -6 7
x=5
10
5
25
21
105
108
540
534
2670
2677
所以,当x=5时,多项式的值是2677.
原多项式的系数
多项式的值.
解法二:列表
2
例1:求当x = 5时多项式 f (x) = 2x5 – 5x4 – 4x3 + 3x2 – 6x + 7的值.
V=
《数书九章》——秦九韶算法
对该多项式按下面的方式进行改写
设
是一个n 次的一元多项式
一共n-1个小括号
省略了若干项
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,
然后由内向外逐层计算一次多项式的值,即
一般地,对于一个n次多项式
v2=v1x+an-2,
v3=v2x+an-3, ……,
vn=vn-1x+a0.
这样,求n次多项式f(x)的值就转化为求n个一次多项式的值.这种算法称为秦九韶算法.
练一练:求当x = 5时多项式 f(x)=2x6-5x5-4x3+3x2-6x的值.
解法一:首先将原多项式改写成如下形式 : f(x)=(((((2x-5)x-0)x-4)x+3)x-6)x+0
v0=2
v1=v0x-5=2×5-5=5
v2=v1x-0=5×5-0=25
v3=v2x-4=25×5-4=121
v4=v3x+3=121×5+3=608
v5=v4x-6=608×5-6=3034
V6=v5x+0=3034×5+0=15170
所以,当x=5时,
多项式的值是15170
然后由内向外逐层计算一次多项式的值,即
2 -5 0 -4 3 -6 0
x=5
10
5
25
25
125
121
605
608
3040
3034
所以,当x=5时,多项式的值是15170.
练一练:用秦九韶算法求多项式 f(x)=2x6-5x5-4x3+3x2-6x当x=5时的值.
解:原多项式先化为:
f(x)=2x6-5x5 +0×x4-4x3+3x2-6x+0
列表
2
15170
15170
V=
秦九韶算法是求一元多项式的值的一种方法.
它的特点是:把求一个n次多项式的值转化为求n个一次多项式的值,通过这种转化,把运算的次数由至多n(n+1)/2次乘法运算和n次加法运算,减少为n次乘法运算和n次加法运算,大大提高了运算效率.
总结:
第一步:输入多项式次数n、最高次项的系数an和x的值
第二步:将v的值初始化为an,将i的值初始化为n-1
第三步:输入i次项的系数ai
第四步:v=vx+ai,i=i-1.
第五步:判断i是否大于或等于0,若是,则返回第三步;否则,输出多项式的值v.
秦九韶算法的程序设计
开始
输入n,an,x的值
v=an
i=n-1
i≥0?
输出v
输入ai
v=vx+ai
i=i-1
结束
N
Y
INPUT “n=”;n
INPUT “an=”;a
INPUT “x=”;x
v=a
i=n-1
WHILE i>=0
INPUT“ai=”;a
v=v*x+a
i=i-1
WEND
PRINT v
END
程序语言
程序计算
课堂小结:
作业:
1.书本45页 课后练习2
2.( 思考题) f(x)=2x6-5x5+ax3+3x2-6x
当x = 5时v4=608,求a的值
1、秦九韶算法的方法和步骤
2、秦九韶算法的流程图及程序
谢 谢 指 导!
再 见!