算法案例(秦九韶算法)
- 格式:ppt
- 大小:1.01 MB
- 文档页数:20
秦九韶公式算法范文首先,我们假设需要求解的多项式为f(x)=a_n*x^n+a_{n-1}*x^{n-1}+...+a_1*x^1+a_0。
公式中的a_i代表多项式的系数,n代表多项式的次数,x代表自变量的值。
步骤一:初始化我们需要设置一个初始值,假设初始值为result = a_n。
这个初始值实际上是多项式的最高次项的系数。
步骤二:迭代计算从最高次项开始,依次迭代计算多项式的系数。
我们从n-1次项开始处理,每次处理一个系数ai。
-第一次迭代:result = result * x + a_{n-1}。
-第二次迭代:result = result * x + a_{n-2}。
-以此类推,直到处理完所有的系数a0为止。
步骤三:输出结果迭代计算结束后,result即为多项式f(x)在x点的值。
通过这种递推的方式,我们可以有效地计算多项式在给定自变量值下的值,而不需要对多项式进行一次次的乘法和加法操作。
这使得计算速度大大提高。
除了求多项式的值,秦九韶公式还可以应用于多项式相乘、除法和求导等问题。
下面举例说明其应用。
1.多项式相乘:假设有两个多项式f(x)和g(x),它们的次数分别为n和m。
我们可以利用秦九韶公式进行多项式的相乘运算。
首先,我们将f(x)和g(x)展开成多项式的系数形式,例如:f(x)=a_n*x^n+a_{n-1}*x^{n-1}+...+a_1*x^1+a_0g(x)=b_m*x^m+b_{m-1}*x^{m-1}+...+b_1*x^1+b_0。
然后,我们利用秦九韶公式分别求出f(x)和g(x)在给定x点的值。
最后,将得到的两个值相乘即可得到多项式相乘的结果。
2.多项式插值:假设我们已知n+1个点的坐标(xi, yi),我们需要求解通过这些点的多项式函数。
首先,我们利用这n+1个点,构建一个n次多项式P(x),通过求解多项式的系数a0, a1, ..., an。
然后,我们可以利用秦九韶公式求出n次多项式P(x)在给定x点的值。
《算法案例:秦九韶算法》教学教案第一篇:《算法案例:秦九韶算法》教学教案秦九韶算法学习目标1.了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质。
2.掌握数据排序的原理能使用直接排序法与冒泡排序法给一组数据排序,进而能设计冒泡排序法的程序框图及程序,理解数学算法与计算机算法的区别,理解计算机对数学的辅助作用。
学习重难点重点:1.秦九韶算法的特点2.两种排序法的排序步骤及计算机程序设计难点:1.秦九韶算法的先进性理解2.排序法的计算机程序设计学法与学习用具学法:1.探究秦九韶算法对比一般计算方法中计算次数的改变,体会科学的计算。
2.模仿排序法中数字排序的步骤,理解计算机计算的一般步骤,领会数学计算在计算机上实施的要求。
学习用具:电脑,计算器,图形计算器学习设想(一)创设情景,揭示课题我们已经学过了多项式的计算,下面我们计算一下多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值,并统计所做的计算的种类及计算次数。
根据我们的计算统计可以得出我们共需要10次乘法运算,5次加法运算。
我们把多项式变形为:f(x)=x2(1+x(1+x(1+x)))+x+1再统计一下计算当x=5时的值时需要的计算次数,可以得出仅需4次乘法和5次加法运算即可得出结果。
显然少了6次乘法运算。
这种算法就叫秦九韶算法。
(二)研探新知/ 41.秦九韶计算多项式的方法f(x)=anxn+an-1xn-1+an-2xn-2+Λ+a1x+a0=(anxn-1+an-1xn-2+an-2xn-3+Λ+a1)x+a0=((anxn-2+an-1xn-3+Λ+a2)x+a1)x+a0=ΛΛ=(Λ((anx+an-1)x+an-2)x+Λ+a1)+a0例1 已知一个5次多项式为f(x)=5x5+2x4+3.5x3-2.6x2+1.7x-0.8 用秦九韶算法求这个多项式当x=5时的值。
解:略思考:(1)例1计算时需要多少次乘法计算?多少次加法计算?(2)在利用秦九韶算法计算n次多项式当x=x0时需要多少次乘法计算和多少次加法计算?练习:利用秦九韶算法计算f(x)=0.83x5+0.41x4+0.16x3+0.33x2+0.5x+1 当x=5时的值,并统计需要多少次乘法计算和多少次加法计算?例2 设计利用秦九韶算法计算5次多项式f(x)=a5x5+a4x4+a3x3+a2x2+a1x+a0当x=x0时的值的程序框图。
第二课时案例2 秦九韶算法(一)导入新课大家都喜欢吃苹果吧,我们吃苹果都是从外到里一口一口的吃,而虫子却是先钻到苹果里面从里到外一口一口的吃,由此看来处理同一个问题的方法多种多样.怎样求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值呢?方法也是多种多样的,今天我们开始学习秦九韶算法.(二)推进新课、新知探究、提出问题(1)求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值有哪些方法?比较它们的特点.(2)什么是秦九韶算法?(3)怎样评价一个算法的好坏?讨论结果:(1)怎样求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值呢?一个自然的做法就是把5代入多项式f(x),计算各项的值,然后把它们加起来,这时,我们一共做了1+2+3+4=10次乘法运算,5次加法运算.另一种做法是先计算x2的值,然后依次计算x2·x,(x2·x)·x,((x2·x)·x)·x的值,这样每次都可以利用上一次计算的结果,这时,我们一共做了4次乘法运算,5次加法运算.第二种做法与第一种做法相比,乘法的运算次数减少了,因而能够提高运算效率,对于计算机来说,做一次乘法运算所用的时间比做一次加法运算要长得多,所以采用第二种做法,计算机能更快地得到结果.(2)上面问题有没有更有效的算法呢?我国南宋时期的数学家秦九韶(约1202~1261)在他的著作《数书九章》中提出了下面的算法:把一个n次多项式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次多项式f(x)的值就转化为求n个一次多项式的值.上述方法称为秦九韶算法.直到今天,这种算法仍是多项式求值比较先进的算法.(3)计算机的一个很重要的特点就是运算速度快,但即便如此,算法好坏的一个重要标志仍然是运算的次数.如果一个算法从理论上需要超出计算机允许范围内的运算次数,那么这样的算法就只能是一个理论的算法.(三)应用示例例1 已知一个5次多项式为f(x)=5x5+2x4+3.5x3-2.6x2+1.7x-0.8,用秦九韶算法求这个多项式当x=5时的值.解:根据秦九韶算法,把多项式改写成如下形式:f(x)=((((5x+2)x+3.5)x-2.6)x+1.7) x-0.8,按照从内到外的顺序,依次计算一次多项式当x=5时的值:v 0=5;v 1=5×5+2=27;v 2=27×5+3.5=138.5;v 3=138.5×5-2.6=689.9;v 4=689.9×5+1.7=3 451.2;v 5=3 415.2×5-0.8=17 255.2;所以,当x=5时,多项式的值等于17 255.2.算法分析:观察上述秦九韶算法中的n 个一次式,可见v k 的计算要用到v k-1的值,若令v 0=a n ,我们可以得到下面的公式:⎩⎨⎧=+==--).,,2,1(,10n k a x v v a v k n k kn 这是一个在秦九韶算法中反复执行的步骤,因此可用循环结构来实现.算法步骤如下:第一步,输入多项式次数n 、最高次的系数a n 和x 的值.第二步,将v 的值初始化为a n ,将i 的值初始化为n-1.第三步,输入i 次项的系数a i .第四步,v=vx+a i ,i=i-1.第五步,判断i 是否大于或等于0.若是,则返回第三步;否则,输出多项式的值v. 程序框图如下图:程序:INPUT “n=”;nINPUT “an=”;aINPUT “x=”;xv=ai=n-1WHILE i >=0PRINT “i=”;iINPUT “ai=”;av=v*x+ai=i-1WENDPRINT vEND点评:本题是古老算法与现代计算机语言的完美结合,详尽介绍了思想方法、算法步骤、程序框图和算法语句,是一个典型的算法案例.变式训练请以5次多项式函数为例说明秦九韶算法,并画出程序框图.解:设f(x)=a5x5+a4x4+a3x3+a2x2+a1x+a0首先,让我们以5次多项式一步步地进行改写:f(x)=(a5x4+a4x3+a3x2+a2x+a1)x+a0=((a5x3+a4x2+ a3x+a2)x+a1)x+a0=(((a5x2+a4x+ a3)x+a2)x+a1)x+a0=((((a5x+a4)x+ a3)x+a2)x+a1)x+a0.上面的分层计算,只用了小括号,计算时,首先计算最内层的括号,然后由里向外逐层计算,直到最外层的括号,然后加上常数项即可.程序框图如下图:例2 已知n次多项式P n(x)=a0x n+a1x n-1+…+a n-1x+a n,如果在一种算法中,计算k x0(k=2,3,4,…,n)的值需要k-1次乘法,计算P3(x0)的值共需要9次运算(6次乘法,3次加法),那么计算P10(x0)的值共需要__________次运算.下面给出一种减少运算次数的算法:P0(x)=a0,P k+1(x)=xP k(x)+a k+1(k=0,1,2,…,n-1).利用该算法,计算P3(x0)的值共需要6次运算,计算P10(x0)的值共需要___________次运算.答案:65 20点评:秦九韶算法适用一般的多项式f(x)=a n x n+a n-1x n-1+…+a1x+a0的求值问题.直接法乘法运算的次数最多可到达2)1(nn,加法最多n次.秦九韶算法通过转化把乘法运算的次数减少到最多n次,加法最多n次.例3 已知多项式函数f(x)=2x5-5x4-4x3+3x2-6x+7,求当x=5时的函数的值.解析:把多项式变形为:f(x)=2x5-5x4-4x3+3x2-6x+7=((((2x-5)x-4)x+3)x-6)x+7.计算的过程可以列表表示为:最后的系数2 677即为所求的值.算法过程:v0=2;v1=2×5-5=5;v2=5×5-4=21;v3=21×5+3=108;v4=108×5-6=534;v5=534×5+7=2 677.点评:如果多项式函数中有缺项的话,要以系数为0的项补齐后再计算.(四)知能训练当x=2时,用秦九韶算法求多项式f(x)=3x5+8x4-3x3+5x2+12x-6的值.解法一:根据秦九韶算法,把多项式改写成如下形式:f(x)=((((3x+8)x-3)x+5)x+12)x-6.按照从内到外的顺序,依次计算一次多项式当x=2时的值.v0=3;v1=v0×2+8=3×2+8=14;v2=v1×2-3=14×2-3=25;v3=v2×2+5=25×2+5=55;v4=v3×2+12=55×2+12=122;v5=v4×2-6=122×2-6=238.∴当x=2时,多项式的值为238.解法二:f(x)=((((3x+8)x-3)x+5)x+12)x-6,则f(2)=((((3×2+8)×2-3)×2+5)×2+12)×2-6=238.(五)拓展提升用秦九韶算法求多项式f (x)=7x7+6x6+5x5+4x4+3x3+2x2+x当x=3时的值.解:f(x)=((((((7x+6)+5)x+4)x+3)x+2)x+1)xv0=7;v1=7×3+6=27;v2=27×3+5=86;v3=86×3+4=262;v4=262×3+3=789;v5=789×3+2=2 369;v6=2 369×3+1=7 108;v7=7 108×3+0=21 324.∴f(3)=21 324.(六)课堂小结1.秦九韶算法的方法和步骤.2.秦九韶算法的计算机程序框图.(七)作业已知函数f(x)=x3-2x2-5x+8,求f(9)的值.解:f(x)=x3-2x2-5x+8=(x2-2x-5)x+8=((x-2)x-5)x+8 ∴f(9)=((9-2)×9-5)×9+8=530.。
高一 第一章 算法初步第三节 第2课时 秦九韶算法撰稿人: 朱光明 审稿人: 授课时间: 课标要求校本化1.用转化的数学思想方法理解秦九韶算法;2.掌握用秦九韶算法计算高次多项式的值;3.提高学生的逻辑思维能力.一.课前预习学案认真自学课本37-39,完成下列问题:如何求多项式f(x)=x 5+x 4+x 3+x 2+x+1当x=5时的值?一个自然的做法:把5代入多项式f(x),计算各项的值,然后把它们加起来,这时你一共做了__次乘法运算,__次加法运算;另一种做法:先计算x 2的值,然后一次计算x 2﹒x ,( x 2﹒x)﹒x ,( (x 2﹒x)﹒x)﹒x 的值,这样每次都可以用上一次的结果,这时你用了__次乘法运算,__次加法运算. 计算机适合乘法运算少的. 二.课中学习学案【合作探究】秦九韶算法1.功能:它是一种用于计算 的值的方法;2.改写后的形式:1110()......n n n n f x a x a x a x a --=++++=3.计算方法:从括号最内层开始,由内向外逐层计算.11n n v a x a -=+;212n v v x a -=+;3v = ;......n v = .这样,求n 次多项式()f x 的值就转化为求 的值,整个计算过程中进行了 次乘法,进行了 次加法.4.用秦九韶算法时要正确将多项式的形式进行改写,当多项式函数中间出现空项时,要以系数为零的齐次项补充.【典例分析】例1.根据秦九韶算法能把多项式f(x)=3x5+4x4+5x3+6x2+7x+1改写成________________的形式;当x=5时求f(x)的值_____.在这个计算过程中需要__次乘法运算,__次加法运算.例2.将上题以解答题的形式规范作答.【达标反馈】1.多项式f(x)=15x5+32x4+21x3+8x2+6x+8,则f(2)=___.2.用秦九韶算法求多项式f(x)=5x5+7x4+6x3+3x2+x+1,当x=3的值.【知识梳理】1.用转化的数学思想方法理解秦九韶算法;2.掌握用秦九韶算法计算高次多项式的值;3.试总结秦九韶算法的特点.(把求一个n次多项式的值转化为求n个一次多项式的值)三.课后巩固学案【提升巩固】1.用秦九韶算法计算多项式f(x)=3x6+4x5+5x4+6x3+7x2+8x+1,当x=4时,需要做乘法和加法的次数分别是()A 6,6B 5,6C 5,5D 6,52.f(x)=3x3+2x2+x+4,则f(10)等于()A 3214B 3210C 2214D 903.多项式f(x)=10x9+21x8+5x7+4x6+3x4+2x3+3x2+x+1,则f(5)等于()A 28079706B 28089706C 28179706D 281897064.多项式f(x)=4x6+7x4+64x3+8x2+6x+1,则f(3)= ___5.用秦九韶算法计算多项式f(x)= x7+4x5+3x2+1,当x=1.3时的值需要将多项式改写为6.用秦九韶算法求多项式f(x)=9x6+21x5+7x4+64x3+8x2+6x+1,当x=2的值.7.写出求一般多项式f(x)=an x n+ a1-nx1-n+···+a1x+a,当x=x的算法程序。