案例2秦九韶算法〖教学设计〗[问题1]设计求多项式f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值的算法,并写出程序
x=5f=2*x^5-5*x^4-4*x^3+3*x^2-6*x+7PRINTfEND程序点评:上述算法一共做了15次乘法运算,5次加法运算
优点是简单,易懂;缺点是不通用,不能解决任意多项多求值问题,而且计算效率不高
这析计算上述多项式的值,一共需要9次乘法运算,5次加法运算
[问题2]有没有更高效的算法
分析:计算x的幂时,可以利用前面的计算结果,以减少计算量,即先计算x2,然后依次计算222,(),(())xxxxxxxxx的值
第二种做法与第一种做法相比,乘法的运算次数减少了,因而能提高运算效率
而且对于计算机来说,做一次乘法所需的运算时间比做一次加法要长得多,因此第二种做法能更快地得到结果
[问题3]能否探索更好的算法,来解决任意多项式的求值问题
f(x)=2x5-5x4-4x3+3x2-6x+7=(2x4-5x3-4x2+3x-6)x+7=((2x3-5x2-4x+3)x-6)x+7=(((2x2-5x-4)x+3)x-6)x+7=((((2x-5)x-4)x+3)x-6)x+7v0=2v1=v0x-5=2×5-5=5v2=v1x-4=5×5-4=21v3=v2x+3=21×5+3=108v4=v3x-6=108×5-6=534v5=v4x+7=534×5+7=2677所以,当x=5时,多项式的值是2677
这种求多项式值的方法就叫秦九韶算法
例3:用秦九韶算法求多项式f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值
解法一:首先将原多项式改写成如下形式:f(x)=((((2x-5)x-4)x+3)x-6)x+7v0=2v1=v0x-5=2×5-5=5v2=v1x-4=5×5-4=21v3=v2x+3=