秦九韶算法
[问题 有没有更高效的算法 问题2]有没有更高效的算法 问题 有没有更高效的算法? 分析:计算 的幂时,可以利用前面的计算结 计算x的幂时 分析 计算 的幂时 可以利用前面的计算结 以减少计算量, 果,以减少计算量 以减少计算量 即先计算x 然后依次计算 即先计算 2,然后依次计算
x • x, ( x • x) • x, (( x • x) • x) • x
点评:上述算法一共做了 次乘法运算 点评 上述算法一共做了15次乘法运算 次 上述算法一共做了 次乘法运算,5次 加法运算.优点是简单 易懂;缺点是不通用 优点是简单,易懂 缺点是不通用,不能 加法运算 优点是简单 易懂 缺点是不通用 不能 解决任意多项多求值问题,而且计算效率不高 而且计算效率不高. 解决任意多项多求值问题 而且计算效率不高
程序框图 开始
输入a 输入 0,a1,a2,a3,a4,a5 输入x 输入 0 n=1 v=a5 n=n+1 v=vx0+a5-n n≤5?
程序
INPUT a0,a1,a2,a3,a4,a5
否
输出v 输出
是
INPUT x0 n=1 v=a5 WHILE n<=5 v=vx0+a5-n n=n+1 WEND PRINT v END
一般地,对于一个 次多项式 一般地 对于一个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, 然后由内向外逐层计算一次多项式的值,即 然后由内向外逐层计算一次多项式的值 即 v2=v1x+an-2, v3=v2x+an-3, ……, vn=vn-1x+a0. 这样,求 次多项式 次多项式f(x)的值就转化为求 个 的值就转化为求n个 这样 求n次多项式 的值就转化为求 一次多项式的值.这种算法称为秦九韶算法. 这种算法称为秦九韶算法 一次多项式的值 这种算法称为秦九韶算法
所以,当 多项式的值是2677. 所以 当x=5时,多项式的值是 时 多项式的值是
练一练:用秦九韶算法求多项式 练一练 用秦九韶算法求多项式 f(x)=2x6-5x5-4x3+3x2-6x当x=5时的值 时的值. 当 时的值 原多项式先化为: 解:原多项式先化为 原多项式先化为 f(x)=2x6-5x5 +0×x4-4x3+3x2-6x+0 × 3 -6 0 605 3040 15170 608 3034 15170 所以,当 多项式的值是15170. 所以 当x=5时,多项式的值是 时 多项式的值是 注意:n次多项式有 次多项式有n+1项,因此缺少哪一项 注意 次多项式有 项 因此缺少哪一项 应将其系数补0. 应将其系数补 列表 2 x=5 2 -5 10 5 0 -4 25 125 25 121
金昌市第二中学
路锋杰
三维目标 (a)知识与技能 了解秦九韶算法的计算过程, 了解秦九韶算法的计算过程,并理解利用秦九韶 算法可以减少计算次数提高计算效率的实质。 算法可以减少计算次数提高计算效率的实质。 (b)过程与方法 模仿秦九韶计算方法,体会古人计算构思的巧妙. 模仿秦九韶计算方法,体会古人计算构思的巧妙. (c)情感态度与价值观 通过对秦九韶算法的学习, 通过对秦九韶算法的学习,了解中国古代数学家 对数学的贡献,充分认识到我国文化历史的悠久。 对数学的贡献,充分认识到我国文化历史的悠久。 教学重难点 重点:秦九韶算法的特点; 重点:秦九韶算法的特点; 难点: 难点: 秦九韶算法的先进性理解 .
v1=anx+an-1,
v2=v1x+an-2,
v3=v2x+an-3, ……, vn=vn-1x+a0. 观察上述秦九韶算法中的n个一次式 可见 观察上述秦九韶算法中的 个一次式,可见 个一次式 vk的计算要用到 k-1的值 若令 0=an,得 的计算要用到v 的值. 若令v 得 v0=an, vK=vK-1x+an-k(k=1,2,……,n 这是一个在秦九韶算法中反复执行的步 因此可用循环结构来实现. 骤,因此可用循环结构来实现 因此可用循环结构来实现 [问题 画出程序框图 表示用秦九韶算法求 次多 问题]画出程序框图 表示用秦九韶算法求5次多 问题 画出程序框图,表示用秦九韶算法求 项式f(x)=a5x5+a4x4+a3x3+a2x2+a1x+a0当x=x0 项式 (x0是任意实数 时的值的过程 然后写出程序 是任意实数)时的值的过程 然后写出程序. 时的值的过程,然后写出程序
结束
作业: 作业
课本P35页练习 页练习T2; 课本 页练习 P38页A组T2. 页 组
〖教学设计〗
[问题 设计求多项式 问题1]设计求多项式 问题 设计求多项式f(x)=2x5-5x4-4x3+3x2-6x+7 时的值的算法,并写出程序 当x=5时的值的算法 并写出程序 时的值的算法 并写出程序. 程序
x=5 f=2*x^5-5*x^4-4*x^3+3*x^2-6*x+7 * * * * * PRINT f END
点评:秦九韶算法是求一元多项式的 点评 秦九韶算法是求一元多项式的 值的一种方法. 值的一种方法 它的特点是:把求一个 次多项式的值 它的特点是 把求一个n次多项式的值 把求一个 转化为求n个一次多项式的值 个一次多项式的值,通过这种转 转化为求 个一次多项式的值 通过这种转 化,把运算的次数由至多 把运算的次数由至多n(n+1)/2次乘法 次乘法 把运算的次数由至多 运算和n次加法运算 减少为n次乘法运算 次加法运算,减少为 运算和 次加法运算 减少为 次乘法运算 次加法运算,大大提高了运算效率 和n次加法运算 大大提高了运算效率 次加法运算 大大提高了运算效率.
例1:用秦九韶算法求多项式 用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值 时的值. 当 时的值 解法二:列表 解法二 列表 2 x=5 2 -5 10 5 -4 25 21 3 105 108
原多项式 的系数
-6 7 540 2670 534 2677
多项式 的值. 的值
v5=v4x+7=534×5+7=2677 ×
例1:用秦九韶算法求多项式 用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值 时的值. 当 时的值 解法一:首先将原多项式改写成如下形式 解法一 首先将原多项式改写成如下形式 : 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=2ห้องสมุดไป่ตู้ × v3=v2x+3=21×5+3=108 × 所以,当 所以 当x=5时,多 时多 项式的值是2677. v5=v4x+7=534×5+7=2677 项式的值是 × v4=v3x-6=108×5-6=534 ×
[问题 能否探索出更好的算法 来解决任意多项式 问题3]能否探索出更好的算法 问题 能否探索出更好的算法,来解决任意多项式 的求值问题? 的求值问题 v0=2 f(x)=2x5-5x4-4x3+3x2-6x+7 v1=v0x-5=2×5-5=5 × 4-5x3-4x2+3x-6)x+7 =(2x v2=v1x-4=5×5-4=21 × 3-5x2-4x+3)x-6)x+7 =((2x v3=v2x+3=21×5+3=108 × 2-5x-4)x+3)x-6)x+7 =(((2x v4=v3x-6=108×5-6=534 × =((((2x-5)x-4)x+3)x-6)x+7 所以,当 多项式的值是2677. 所以 当x=5时,多项式的值是 时 多项式的值是 这种求多项式值的方法就叫秦九韶算法 这种求多项式值的方法就叫秦九韶算法. 秦九韶算法
2 2 2
的值. 这样计算上述多项式的值 一共需要 次乘 的值 这样计算上述多项式的值,一共需要 一共需要9次乘 法运算,5次加法运算 次加法运算. 法运算 次加法运算 第二种做法与第一种做法相比,乘法的运 第二种做法与第一种做法相比 乘法的运 算次数减少了,因而能提高运算效率 因而能提高运算效率.而且对于 算次数减少了 因而能提高运算效率 而且对于 计算机来说,做一次乘法所需的运算时间比做一 计算机来说 做一次乘法所需的运算时间比做一 次加法要长得多,因此第二种做法能更快地得到 次加法要长得多 因此第二种做法能更快地得到 结果. 结果