当前位置:首页 > 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的系数依次是什么? 用图表可以表示为:
第 1 页 共 3 页
多项式x系数 变形后x的\系数\ 2 -5 10 -4 25 21 3 105 108 -6 540 534 7 2670 2677 运算 + *5 2 5 最后的系数2677即为所求的值, 请描述上述计算过程. 上述算法就是“秦九韶算法”.
如何应用秦九韶算法完成一般的多项式f(x)=anxn+an-1xn-1+….+a1x+a0求值问题? f(x)=anxn+an-1xn-1+….+a1x+a0 =( anxn-1+an-1xn-2+….+a1)x+a0
=(( anx =......
n-2
+an-1xn-3+….+a2)x+a1)x+a0
=(...( anx+an-1)x+an-2)x+...+a1)x+a0
求多项式的值时,首先计算最内层括号内依次多项式的值,即v1=anx+an-1 然后由内向外逐层计算一次多项式的值,即 v2=v1x+an-2 v3=v2x+an-3 ...... vn=vn-1x+a0
这样,把n次多项式的求值问题转化成求n个一次多项式的值的问题
观察秦九韶算法的数学模型,计算vk时要用到vk-1的值,若令v0=an,我们可以得到下面的递推公式: v0=an
vk=vk-1+an-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,
第 2 页 共 3 页
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)注意循环语句的使用与算法的循环次数,对算法进行改进.
第 3 页 共 3 页
共分享92篇相关文档