资源描述:
《Ch03:数值计算方法之常用函数值计算方法.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章常用函数值计算方法本章重点研究基本初等函数值的计算问题,从理论倒算法,再到编程计算的实践解决了如何利用有限步的四则运算,得到微积分学中基本初等函数的具有任意精度的近似值。对于计算机本初等行素质来说,基本方法还是利用泰勒展式进行计算,基本方法是对泰勒展式作适当变形,根据精度要求确定项数,采用效率更高的递推方法求多项时的值。大家应该特别注意的是,利用泰勒展式计算函数值只是在一个较小的范围内效果比较好,对于超出这个范围的问题来说,还需采用一些其他的数学方法对问题作适当的处理。3.1引言:研究的意义在微积分学中,幂函数、指数函数、对数函数、三角函数、以及反三角函数统称
2、为基本初等函数。由基本初等函数经过有限次四则运算和复合运算所形成的函数称为初等函数。结论:我们只要要解决了基本初等函数值计算问题,也就是如何经过有限步的四则运算得所有基本初等函数值的具有任意精度的近似值,计算问题初等函数的求值计算问题。3.1引言:研究的意义尽管各种程序设计语言都提供了基本初等函数求值计算的子程序或库函数,但是完全依赖程序设计语言提供的子程序或库函数进行计算还是存在一些潜在问题,而且也未必能满足所有实际工程计算的需要。作为数值计算方法的研究,也需要从算法到计算的实践解决微积分学中遗留的各种计算问题,并得到可靠的结果。3.2多项式与有理函数值计算方法对
3、于一般形式的多项式A(x)=a0+a1x+…+anxn如果把它看成一般意义下的实函数而涉及到求数值结果时,可以用更易于编程的形式把它表示为PolyValue(x,A,n)=a0+a1x+…+anxn其中A是(2.1)式给出的多项式A(x)的系数构成的(行)向量,亦即A=(a0,a1,…,an)程序设计时,可以把A说明为一个n+1维数组,此时约定A[0]存放a0,A[1]存放a1,…,A[n]存放an。1.求数值解的c语言函数说明对于数值计算问题来说,作为应用程序,专门编写计算PolyValue(x,A,n)的数值结果的C语言函数还是很有意义的,为此,可以把相应的C语
4、言函数说明为doublePolyValue(doublex,double*A,intn)其中x为自变量;*A为A[0]的地址;n为多项式的次数。提示:在我们的课程中,把数学函数名,求数值解的算法名,求数值解的C语言函数名形式上处理得基本相同,有利于把数学问题,求解的算法,C语言代码联系在一起,形成比较完整的、有效的,易于理解的求数值解方法。2逐项求和算法求PolyValue(x,A,n)的数值解最容易想到的方法是按次数由低到高的顺序逐项求和。为此可以在程序中说明一个临时变量power存放x的各次幂,并利用xk=xxk-1来简化计算。我们把这种算法称为逐项求和算法。逐
5、项求和算法实际上特别简单,直接阅读教材第45页的程序3.01的源代码即可掌握这个算法。3程序3.01逐项求和法求多项式的值doublePolyValue(doublex,double*A,intn){doublepower=1.0,y;intk;y=A[0];for(k=1;k<=n;k++){power*=x;y+=A[k]*power;}returny;}注释:程序3.01由于循环体内出现了两次乘法运算,所以计算量为O(2n)。4.秦九韶算法可以把多项式改写为便于递推的形式A(x)=(a0+x(…(ak+x(…(an-1+x(an))…))…))记yk=(ak+
6、x(ak+1+x(…(an-1+x(an))…)))约定yn=an,不难得到递推关系式yn=anyk=ak+x*yk+1,k=n-1,n-2,…,0且y0就是所需要的结果。利用上面的递推格式求多项式的值的算法称为秦九韶算法,一些国外文献称之为Horner算法,其实是我国南宋时期的数学家秦九韶首先提出来的。5程序3.02秦九韶算法求多项式的值doublePolyValue(doublex,double*A,intn){doubley;intk;y=A[n];for(k=n-1;k>=0;k--)y=y*x+A[k];returny;}由于不需要保留yn,yn-1,…,
7、y1等中间结果,所以程序中只用一个变量y来动态地表示它们。秦九韶算法的循环体内只有一次乘法运算,所以算法的计算量为O(n),相当于程序3.01的一半。6秦九韶算法的补充说明对于过去人们用手工计算来说,能节省一半的计算量是很有意义的。如果现在利用高性能计算机机算还在于节省一半的计算量,显然没有实际意义。秦九韶算法现在已经越来越受到重视,还有更重要的原因。假设计算一个基于泰勒展式的多项式的值,不失一般性可以假设它的各项都是正的,注意到级数收敛的必要条件是它的通项将趋近于零。当计算的项数比较大时采用秦九韶算法可明显地提高精度(实际计算表明可以保证精度)。7一般有理函数