1、1.3 1.3 算法案例算法案例 12022-12-2问题提出问题提出 1.1.辗转相除法和更相减损术,是求辗转相除法和更相减损术,是求两个正整数的最大公约数的优秀算法,两个正整数的最大公约数的优秀算法,我们将算法转化为程序后,就可以由计我们将算法转化为程序后,就可以由计算机来执行运算,实现了古代数学与现算机来执行运算,实现了古代数学与现代信息技术的完美结合代信息技术的完美结合.2.2.对于求对于求n n次多项式的值,在我国古次多项式的值,在我国古代数学中有一个优秀算法,即秦九韶算代数学中有一个优秀算法,即秦九韶算法,我们将对这个算法作些了解和探究法,我们将对这个算法作些了解和探究.22022
2、-12-232022-12-2知识探究知识探究(一一):):秦九韶算法的基本思想秦九韶算法的基本思想 思考思考1:1:对于多项式对于多项式f(x)=xf(x)=x5 5+x+x4 4+x+x3 3+x+x2 2+x+1+x+1,求求f(5)f(5)的值的值.4+3+2+1=104+3+2+1=10次乘法运算,次乘法运算,5 5次加法运算次加法运算.若先计算各项的值,然后再相加,若先计算各项的值,然后再相加,那么一共要做多少次乘法运算和多少那么一共要做多少次乘法运算和多少次加法运算?次加法运算?42022-12-2思考思考2:2:在上述问题中,若先计算在上述问题中,若先计算x x2 2的值,的值
3、,然后依次计算然后依次计算x x2 2xx,(x(x2 2x)xx)x,(x(x2 2x)x)xx)x)x的值,这样每次都可以的值,这样每次都可以利用上一次计算的结果,再将这些数与利用上一次计算的结果,再将这些数与x x和和1 1相加,那么一共做了多少次乘法运算相加,那么一共做了多少次乘法运算和多少次加法运算?和多少次加法运算?4 4次乘法运算,次乘法运算,5 5次加法运算次加法运算.52022-12-2思考思考3:3:利用后一种算法求多项式利用后一种算法求多项式f(x)=af(x)=an nx xn n+a+an-1n-1x xn-1n-1+a+a1 1x+ax+a0 0的值,这的值,这个多
4、项式应写成哪种形式?个多项式应写成哪种形式?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-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.62022-12-2思考思考4:4:对于对于f(x)=(af(x)=
5、(an nx+ax+an-1n-1)x+)x+a an-2n-2)x+a)x+a1 1)x+a)x+a0 0,由内向外逐层计算,由内向外逐层计算一次多项式的值,其算法步骤如何?一次多项式的值,其算法步骤如何?第一步,计算第一步,计算v v1 1=a=an nx+ax+an-1n-1.第二步,计算第二步,计算v v2 2=v=v1 1x+ax+an-2n-2.第三步,计算第三步,计算v v3 3=v=v2 2x+ax+an-3n-3.第第n n步,计算步,计算v vn n=v=vn-1n-1x+ax+a0 0.72022-12-2理论迁移理论迁移 例例1 1 已知一个已知一个5 5次多项式为次多
6、项式为 用秦九韶算法求用秦九韶算法求f(5)f(5)的值的值.5432()423.52.61.70.8fxxxxxx=+-+-f(x)=(4x+2)x+3.5)x-2.6)x+1.7)x-0.8.f(x)=(4x+2)x+3.5)x-2.6)x+1.7)x-0.8.v v1 1=4=45+2=225+2=22;v v2 2=22=225+3.5=113.55+3.5=113.5;v v3 3=113.5=113.55-2.6=564.95-2.6=564.9;v v4 4=564.9=564.95+1.7=2826.25+1.7=2826.2;v v5 5=2826.2=2826.25-0.8
7、=14130.2.5-0.8=14130.2.所以所以f(5)=14130.2.f(5)=14130.2.82022-12-2思考思考5:5:上述求多项式上述求多项式 f(x)=af(x)=an nx xn n+a+an-1n-1x xn-1n-1+a+a1 1x+ax+a0 0的值的方法的值的方法称为称为秦九韶算法秦九韶算法,利用该算法求,利用该算法求f(xf(x0 0)的的值,一共需要多少次乘法运算,多少次值,一共需要多少次乘法运算,多少次加法运算?加法运算?思考思考6:6:在秦九韶算法中,记在秦九韶算法中,记v v0 0=a=an n,那么,那么第第k k步的算式是什么?步的算式是什么?
8、v vk k=v=vk-1k-1x+ax+an-kn-k(k=1(k=1,2 2,n)n)最多最多n n次乘法运算,最多次乘法运算,最多n n次加法运算次加法运算92022-12-2知识探究知识探究(二二):):秦九韶算法的程序设计秦九韶算法的程序设计 思考思考1:1:用秦九韶算法求多项式的值,可用秦九韶算法求多项式的值,可以用什么逻辑结构来构造算法?其算法以用什么逻辑结构来构造算法?其算法步骤如何设计?步骤如何设计?第一步,输入多项式的次数第一步,输入多项式的次数n n,最高次,最高次 项的系数项的系数a an n和和x x的值的值.第二步,令第二步,令v=av=an n,i=n-1.i=n
9、-1.第三步,判断第三步,判断i0i0是否成立是否成立.若是,执行第若是,执行第 四步;否则,输出多项式的值四步;否则,输出多项式的值v.v.第四步,输入第四步,输入i i次项的系数次项的系数a ai i.第五步,第五步,v=vx+av=vx+ai i,i=i-1.i=i-1.102022-12-2思考思考2:2:该算法的程序框图如何表示?该算法的程序框图如何表示?开始开始输入输入n,an,x的值的值v=anv=vx+ai输入输入aii0?i=n-1i=i-1结束结束是是输出输出v否否112022-12-2思考思考3:3:该程序框图对应的程序如何表述?该程序框图对应的程序如何表述?开始开始输入
10、输入n,an,x的值的值v=anv=vx+ai输入输入aii0?i=n-1i=i-1结束结束是是输出输出v否否INPUT “n=”INPUT “n=”;n nINPUT “aINPUT “an n=”=”;a aINPUT “x=”INPUT “x=”;x x v=a v=ai=n-1i=n-1WHILE iWHILE i=0=0INPUT“ai=”INPUT“ai=”;b b v=vv=v*x+bx+bi=i-1i=i-1 WENDWENDPRINT vPRINT vENDEND122022-12-2 例例2 2 阅读阅读下列程序,说下列程序,说明它解决的实明它解决的实际问题是什么?际问题是
11、什么?INPUT“x=”INPUT“x=”;a an=0n=0y=0y=0WHWHI ILE nLE n5 5 y=y+(n+1)y=y+(n+1)*anan n=n+1 n=n+1WENDWENDPRINT yPRINT yENDEND求多项式求多项式 在在x=ax=a时的值时的值.234()12345f xxxxx=+132022-12-2练习:按照图练习:按照图1.3-31.3-3中的程序框图给出中的程序框图给出的步骤,求的步骤,求当当x=2x=2时的值。时的值。解:f(x)=(x+2)x+1)x+4)x+1)x+1v0=1v1=v0 x+2=2+2=4v2=v1x+1=8+1=9v3=
12、v2x+4=18+4=22v4=v3x+1=44+1=45v5=v4x+1=90+1=91所以,f(2)=91142)(2345xxxxxxf14小结作业小结作业 评价一个算法好坏的一个重要标志评价一个算法好坏的一个重要标志是运算的次数,如果一个算法从理论上是运算的次数,如果一个算法从理论上需要超出计算机允许范围内的运算次数,需要超出计算机允许范围内的运算次数,那么这样的算法就只能是一个理论算法那么这样的算法就只能是一个理论算法.在多项式求值的各种算法中,秦九韶算在多项式求值的各种算法中,秦九韶算法是一个优秀算法法是一个优秀算法.152022-12-2作业:作业:P48P48习题习题1.3A1.3A组:组:2.2.课时作业课时作业162022-12-2