1、1.3 1.3 算法案例算法案例 第二学时第二学时 例例2 2 求求325325,130130,270270三个数的最大三个数的最大公约数公约数.由于由于325=1302+65325=1302+65,130=652130=652,因此因此325325与与130130的最大公约数是的最大公约数是65.65.由于由于270=654+10270=654+10,65=106+565=106+5,10=5210=52,因此,因此6565与与270270最大公约数是最大公约数是5.5.故故325325,130130,270270三个数的最大公约三个数的最大公约数是数是5.5.问题提出问题提出 1.1.辗转
2、相除法和更相减损术,是求辗转相除法和更相减损术,是求两个正整数的最大公约数的优秀算法,两个正整数的最大公约数的优秀算法,我们将算法转化为程序后,就能够由计我们将算法转化为程序后,就能够由计算机来执行运算,实现了古代数学与当算机来执行运算,实现了古代数学与当代信息技术的完美结合代信息技术的完美结合.2.2.对于求对于求n n次多项式的值,在我国古次多项式的值,在我国古代数学中有一种优秀算法,即秦九韶算代数学中有一种优秀算法,即秦九韶算法,我们将对这个算法作些理解和探究法,我们将对这个算法作些理解和探究.问题问题1设计求多项式设计求多项式f(x)=2x5-5x4-4x3+3x2-6x+7当当x=5
3、时的值的算法时的值的算法,并写出程序并写出程序.x=5f=2x5-5x4-4x3+3x2-6x+7PRINT fEND程序程序点评点评:上述算法一共做了上述算法一共做了15次乘法运算次乘法运算,5次次加法运算加法运算.优点是简朴优点是简朴,易懂易懂;缺点是不通用缺点是不通用,不能不能解决任意多项多求值问题解决任意多项多求值问题,并且计算效率不高并且计算效率不高.知识探究知识探究(一一):):秦九韶算法的基本思想秦九韶算法的基本思想 思考思考2:2:在上述问题中,若先计算在上述问题中,若先计算x2x2的值,的值,然后依次计算然后依次计算x2xx2x,(x2x)x(x2x)x,(x2x)x)x(x
4、2x)x)x的值,这样每次都能够的值,这样每次都能够运用上一次计算的成果,那么一共做运用上一次计算的成果,那么一共做了多少次乘法运算和多少次加法运算?了多少次乘法运算和多少次加法运算?9次乘法运算,次乘法运算,5 5次加法运算次加法运算.第二种做法与第一种做法相比第二种做法与第一种做法相比,乘法的运乘法的运算次数减少了算次数减少了,因而能提高运算效率因而能提高运算效率.并且对于并且对于计算机来说计算机来说,做一次乘法所需的运算时间比做做一次乘法所需的运算时间比做一次加法要长得多一次加法要长得多,因此第二种做法能更快地因此第二种做法能更快地得到成果得到成果.思考思考3:能否探索更加好的算法能否探
5、索更加好的算法,来解决任意多来解决任意多项式的求值问题项式的求值问题?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=v0 x-5=25-5=5v2=v1x-4=55-4=21v3=v2x+3=215+3=108v4=v3x-6=1085-6=534v5=v4x+7=5345+7=2677因此因此,当当x=5时时,多项式的值是多项式的值是2677.这种求多项式值的办法就叫秦九韶算法这种求多项式值的办法就叫
6、秦九韶算法.5次乘法运算,次乘法运算,5 5次加法运算次加法运算.思考思考4:4:运用最后一种算法求多项式运用最后一种算法求多项式f(x)=anxn+an-1xn-1+a1x+a0f(x)=anxn+an-1xn-1+a1x+a0的值,的值,这个多项式应写成哪种形式?这个多项式应写成哪种形式?f(x)=af(x)=an nx xn n+a+an-1n-1x xn-1n-1+a+a1 1x+ax+a0 0 =(a(an nx xn-1n-1+a+an-1n-1x xn-2n-2+a+a2 2x+ax+a1 1)x+ax+a0 0=(=(a(an nx xn-2n-2+a+an-1n-1x xn-
7、3n-3+a+a2 2)x+ax+a1 1)x+a)x+a0 0 =(=(a(an nx+ax+an-1n-1)x+ax+an-2n-2)x+a)x+a1 1)x+a)x+a0 0.思考思考4:4:对于对于f(x)=(anx+an-1)x+f(x)=(anx+an-1)x+an-2)x+a1)x+a0an-2)x+a1)x+a0,由内向外逐级计,由内向外逐级计算一次多项式的值,其算法环节如何?算一次多项式的值,其算法环节如何?第一步,计算第一步,计算v v1 1=a=an nx+ax+an-1n-1.第二步,计算第二步,计算v v2 2=v=v1 1x+ax+an-2n-2.第三步,计算第三步
8、,计算v v3 3=v=v2 2x+ax+an-3n-3.第第n n步,计算步,计算v vn n=v=vn-1n-1x+ax+a0 0.思考思考5:5:上述求多项式上述求多项式 f(x)=anxn+an-1xn-1+a1x+a0f(x)=anxn+an-1xn-1+a1x+a0的值的的值的办法称为秦九韶算法,运用该算法求办法称为秦九韶算法,运用该算法求f(x0)f(x0)的值,一共需要多少次乘法运算,的值,一共需要多少次乘法运算,多少次加法运算?多少次加法运算?思考思考6:6:在秦九韶算法中,记在秦九韶算法中,记v v0 0=a=an n,那么,那么第第k k步的算式是什么?步的算式是什么?v
9、 vk k=v=vk-1k-1x+ax+an-kn-k(k=1(k=1,2 2,n)n)n次乘法运算,次乘法运算,n次加法运算次加法运算知识探究知识探究(二二):):秦九韶算法的程序设计秦九韶算法的程序设计 思考思考1:1:用秦九韶算法求多项式的值,能用秦九韶算法求多项式的值,能够用什么逻辑构造来构造算法?其算法够用什么逻辑构造来构造算法?其算法环节如何设计?环节如何设计?第一步,输入多项式的次数第一步,输入多项式的次数n n,最高次,最高次 项的系数项的系数a an n和和x x的值的值.第二步,令第二步,令v=av=an n,i=n-1.i=n-1.第三步,输入第三步,输入i i次项的系数
10、次项的系数a ai i.第四步,第四步,v=vx+av=vx+ai i,i=i-1.i=i-1.第五步,判断第五步,判断i0i0与否成立与否成立.若是,则返回第若是,则返回第 二步;否则,输出多项式的值二步;否则,输出多项式的值v.v.思考思考2:2:该算法的程序框图如何表达?该算法的程序框图如何表达?开始开始输入输入n,an,x的值的值v=anv=vx+ai输入输入aii0?i=n-1i=i-1结束结束是是输出输出v否否思考思考3:3:该程序框图对应的程序如何表述该程序框图对应的程序如何表述?开始开始输入输入n,an,x的值的值v=anv=vx+ai输入输入aii0?i=n-1i=i-1结束
11、结束是是输出输出v否否INPUT “n=”INPUT “n=”;n nINPUT “aINPUT “an n=”=”;a aINPUT “x=”INPUT “x=”;x x v=a v=an ni=n-1i=n-1WHILE iWHILE i=0=0INPUT“aINPUT“ai i=”=”;b b v=v*x+b v=v*x+bi=i-1i=i-1 WENDWENDPRINT yPRINT yENDEND理论迁移理论迁移 例例1 1 已知一个已知一个5 5次多项式为次多项式为 用秦九韶算法求用秦九韶算法求f(5)f(5)的值的值.f(x)=(5x+2)x+3.5)x-2.6)x+1.7)x-
12、0.8.f(x)=(5x+2)x+3.5)x-2.6)x+1.7)x-0.8.v v1 1=55+2=27=55+2=27;v v2 2=275+3.5=138.5=275+3.5=138.5;v v3 3=138.55-2.6=689.9=138.55-2.6=689.9;v v4 4=689.95+1.7=3451.2=689.95+1.7=3451.2;v v5 5=3451.25-0.8=17255.2.=3451.25-0.8=17255.2.因此因此f(5)=17255.2.f(5)=17255.2.变式:例变式:例2 2 已知一种已知一种5 5次多项式为次多项式为 用秦九韶算法用
13、秦九韶算法求当求当x=5x=5时,时,V1,V3V1,V3的值及求的值及求f(5)f(5)的值做的值做多少次乘法运算多少次乘法运算.解:解:f(x)=(5x+0)x+3.5)x+0)x+1.7)x-0.8.f(x)=(5x+0)x+3.5)x+0)x+1.7)x-0.8.v v1 1=55+0=25=55+0=25;v v2 2=255+3.5=128.5=255+3.5=128.5;v v3 3=128.55+0=642.5=128.55+0=642.5;v v4 4=642.55+1.7=3214.2=642.55+1.7=3214.2;v v5 5=3214.25-0.8=16070.8
14、.=3214.25-0.8=16070.8.因此因此v1=25v1=25,v3=642.5 v3=642.5,f(5)=16070.8.f(5)=16070.8.例例3 3 阅读阅读下列程序,阐下列程序,阐明它解决的实明它解决的实际问题是什么际问题是什么?INPUT“x=”INPUT“x=”;a an=0n=0y=0y=0WHILE nWHILE n5 5 y=y+(n+1)*any=y+(n+1)*an n=n+1 n=n+1WENDWENDPRINT yPRINT yENDEND求多项式求多项式 在在x=ax=a时的值时的值.小结作业小结作业 评价一种算法好坏的一种重要标志评价一种算法好坏的一种重要标志是运算的次数,如果一种算法从理论上是运算的次数,如果一种算法从理论上需要超出计算机允许范畴内的运算次数,需要超出计算机允许范畴内的运算次数,那么这样的算法就只能是一种理论算法那么这样的算法就只能是一种理论算法.在多项式求值的多个算法中,秦九韶算在多项式求值的多个算法中,秦九韶算法是一种优秀算法法是一种优秀算法.作业:作业:P45P45练习:练习:2.2.P48P48习题习题1.3A1.3A组:组:2.2.