1.3.2 秦九韶算法与排序

§1.3.2秦九韶算法

【学习目标】:

了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质.【学习重点】秦九韶算法的特点及其程序设计,两种排序法的排序步骤及其程序设计(重点放在循环语句的应用上)

【学习难点】秦九韶算法的先进性理解及其程序设计,排序法的计算机程序设计

【学法】探究秦九韶算法对比一般计算方法中计算次数的改变,体会科学的计算.

【课堂过程】

秦九韶计算多项式的方法

例1设计求多项式f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值的算法,并写出程序.

个别学生提出一般的解决方案,如:

x=5

y=2 * x^5 – 5 * x^4 – 4 * x^3 + 3 * x^2 – 6 * x + 7

PRINT“y=”;y

END

提问:例1计算时需要多少次乘法计算?多少次加法计算?有什么优缺点?

答:上述算法一共做了解15次乘法运算,5次加法运算,优点是简单、易懂.缺点是不通用,不能解决任意多项式的求值问题,而且计算效率不高.

提问:计算x的幂时,可以利用前面的计算结果,以减少计算量,即先计算x2,然后依次计算x2.x,(x2.x).x,((x2.x).x).x的值,这样计算上述多项式的值,一共需要多少次乘法,多少次加法?

答:上述算法一共做了解4次乘法运算,5次加法运算.

结论:第二种做法与第一种做法相比,乘法的运算次数减少了,因而能提高运算效率,而且对于计算机来说,做一次乘法所需的运算时间比做一次加法要长得多,因此第二种做法更快地得到结果.

我们把多项式变形为:f(x)= 2x5-5x4-4x3+3x2-6x+7=((((2x-5)x-4)x+3)x-6)x+7

从内到外,如果把每一个括号都看成一个常数,x的系数依次是什么?

用图表可以表示为:

最后的系数2677即为所求的值, 请描述上述计算过程.

上述算法就是“秦九韶算法”.

如何应用秦九韶算法完成一般的多项式f(x)=a n x n+a n-1x n-1+….+a1x+a0求值问题?

f(x)=a n x n+a n-1x n-1+….+a1x+a0

=( a n x n-1+a n-1x n-2+….+a1)x+a0

=(( a n x n-2+a n-1x n-3+….+a2)x+a1)x+a0

=......

=(...( a n x+a n-1)x+a n-2)x+...+a1)x+a0

求多项式的值时,首先计算最内层括号内依次多项式的值,即v1=a n x+a n-1

然后由内向外逐层计算一次多项式的值,即

v2=v1x+a n-2

v3=v2x+a n-3

......

v n=v n-1x+a0

这样,把n次多项式的求值问题转化成求n个一次多项式的值的问题

观察秦九韶算法的数学模型,计算v k时要用到v k-1的值,若令v0=a n,我们可以得到下面的递推公式:

=a n

v k=v k-1+a n-k(k=1,2,…n)

这是一个在秦九韶算法中反复执行的步骤,可以用循环结构来实现.

例2已知一个五次多项式f(x)=4x5+2x4+3.5x3-2.6x2+1.7x-0.8用秦九韶算法求当x=5时多项式的值.

解:f(x)=4x5+2x4+3.5x3-2.6x2+1.7x-0.8

=((((4x+2)x+3.5)x-2.6)x+1.7)x-0.8,

v0=4,

v1=4×5+2=22,

v2=22×5+3.5=113.5,

v3=113.5×5-2.6=564.9,

v4=564.9×5+1.7=2826.2,

v5=2826.2×5-0.8=14130.2,

所以,当x=5时,多项式的值等于14130.2。

小结

(1)秦九韶算法计算多项式的值及程序设计

(2)注意循环语句的使用与算法的循环次数,对算法进行改进.

相关文档
最新文档