多项式求值的秦九韶方法.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:34 大小:252KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

多项式求值的秦九韶方法.ppt

多项式求值的秦九韶方法.ppt

预览

免费试读已结束,剩余 24 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

由于x的k次幂实际上等于其次幂再乘上x,而前k+1项的部分和等于前k项的部分和再加上第k+l项,因此,逐项求和的方法可以归结为如下的递推关系:这样,就可以利用初值(3.4.3),对于k=1,2,…直到n,反复利用公式(3.4.2)进行计算,最后就可以得到。其算法描述如下:PROCEDURECPOLY(A,n,x,P)FORi=2TOnDOOUTPUTPRETURN在这个算法中,为了计算一个x点处的函数,共需要作2n-1次乘法和n次加法。还能不能减少乘法的次数呢?我们可以将式(3.4.1)的右端按降幂次序重新排列,并将它表述成如下嵌套形式这种多项式求值的方法是由我国宋代的一位数学家秦九韶最先提出的,我们称之为秦九韶方法,在有的书上也叫霍纳(Horner)方法。其算法描述如下:算法3.2多项式求值的秦九韶方法.输入:存放的系数数组A(0:n);自变量x值。其中。输出:值P。PROCEDURECHORNER(A,n,x,P)FORi=n-1TO0BY-1DOOUTPUTPRETURN由秦九韶算法可以看出,多项式函数的求值只要用一个很简单的循环就能完成,并且在这个循环中只需要作n次乘法和n次加法就够了。它在实际使用中是一个很有效的方法。例.中国剩余定理(孙子定理)若k>2,且m1,m2,…mk是两两互素的k个正整数,令M=m1m2…mk=m1M1=m2M2=…=mkMk。则同余式组:x1=b1(modm1),x2=b2(modm2),…xk=bk(modmk)其正整数解是:X≡b1M1’M1+b2M2’M2+…+bkMk’Mk(modM)其中Mi’是满足同余式:Mi’Mi≡1(modmi)(i=1,2…k)∴用孙子定理解同余式组:xi=bi(modmi)(i=1,2…k)的算法步骤如下:2.对半法查找(二分法)算法由初等函数f(x)=0构成的方程,如果有f(a)f(b)<0,则可以肯定方程f(x)=0在(a,b)至少有一个实数根。选择(a,b)的中点c,若f(c)=0,则根就是x=c。若f(c)<0或f(c)>0,则用c值取代相应的a或b(取代原则是:保证有f(a)f(b)<0),这样(a,b)的长度就只有原来的一半,我们可以更小的范围找到根。当有根的区间的长度足够小(通常是小于预先指定的误差),这时区间内任意两点的距离都小于区间的长度,所以区间内的任意一点都可以用来当方程根的近似值。这个就是对半求根法参考算法:第四步判断函数值是否为0。(1)如果为0,就是方程的解,问题就得到了解决。(2)如果函数值不为0,则分下列两种情形:①若,则确定新的有解区间为;②若,则确定新的有解区间为第五步判断新的有解区间的长度是否小于精确度:(1)如果新的有解区间长度大于精确度,则在新的有解区间的基础上重复上述步骤;(2)如果新的有解区间长度小于或等于精确度,则取新的有解区间的中点为方程的近似解。对半求根的过程可以用如下框图表示(图4-1)用流程图表示如下:例(对半法求方程解):方程x-3sinx=0有一个根,试把它求出来,要求准确到0.0001。例闰年问题:输入年份y,判断该年份是否为闰年并输出结果。设y为年份,按照历法的规定,如果y为闰年,那么或者y能被4整除但不能被100整除,或者y能被400整除。可以用选择结构将上述算法表示如下:若y不能被4整除,则输出“y不是闰年”;若y能被4整除,则判断y是否被100整除,则:小球运动问题问题:小球从10米高处自由下落,每次弹回的高度大约是下落高度的70%。当小球弹起的高度不足最初高度的千分之一时,小球很快就会停止跳动。计算小球在整个弹跳过程中所经历的总路程(忽略高度不足原高度千分之一的部分)。分析问题小球的运动由多次的下落和弹起构成,但弹起的次数并不容易知道。小明把小球每次下落和弹起的路程列出,如表3-1所示,试图寻找一些规律。设计算法根据上述的分析,我们可以写出解决问题的算法如下:例一个关于栽树数量的I.Q.题老师后来告诉小陆,她用的是穷举法。穷举算法的思路是,列举出所有可能的情况,逐个判断有哪些是符合问题所要求的条件,从而得到问题的解答。问题a、b、c是三个整数,100>a>b>c>10,a×b×c==30723,且a>b+c,试确定a、b、c的值。分析问题解决这个问题应当从a×b×c==30723入手。把30723三个整数相乘的积,只能有有限种情况,我们可以把这些情况一一罗列出来,然后分析哪一种情况是符合条件的。从而找到答案。(在列举所有情况时,注意三个因子都大于10,这可以减少列举的工作量)。把30723分解为3个大于10的因子的乘积只有5种情况①11×19×147(三个因子的和是177)②11