- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ch03:数值计算方法之常用函数值计算方法
第3章 常用函数值计算方法 本章重点研究基本初等函数值的计算问题,从理论倒算法,再到编程计算的实践解决了如何利用有限步的四则运算,得到微积分学中基本初等函数的具有任意精度的近似值。 对于计算机本初等行素质来说,基本方法还是利用泰勒展式进行计算,基本方法是对泰勒展式作适当变形,根据精度要求确定项数,采用效率更高的递推方法求多项时的值。 大家应该特别注意的是,利用泰勒展式计算函数值只是在一个较小的范围内效果比较好,对于超出这个范围的问题来说,还需采用一些其他的数学方法对问题作适当的处理。 3.1 引言:研究的意义 在微积分学中,幂函数、指数函数、对数函数、三角函数、以及反三角函数统称为基本初等函数。 由基本初等函数经过有限次四则运算和复合运算所形成的函数称为初等函数。 结论:我们只要要解决了基本初等函数值计算问题,也就是如何经过有限步的四则运算得所有基本初等函数值的具有任意精度的近似值,计算问题初等函数的求值计算问题。 3.1 引言:研究的意义 尽管各种程序设计语言都提供了基本初等函数求值计算的子程序或库函数,但是完全依赖程序设计语言提供的子程序或库函数进行计算还是存在一些潜在问题,而且也未必能满足所有实际工程计算的需要。 作为数值计算方法的研究,也需要从算法到计算的实践解决微积分学中遗留的各种计算问题,并得到可靠的结果。 3.2多项式与有理函数值计算方法 对于一般形式的多项式 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语言函数说明为 double PolyValue(double x,double*A,int n) 其中x为自变量;*A为A[0]的地址;n为多项式的次数。 提示:在我们的课程中,把数学函数名,求数值解的算法名,求数值解的C语言函数名形式上处理得基本相同,有利于把数学问题,求解的算法,C语言代码联系在一起,形成比较完整的、有效的,易于理解的求数值解方法。 2 逐项求和算法 求PolyValue(x,A,n)的数值解最容易想到的方法是按次数由低到高的顺序逐项求和。为此可以在程序中说明一个临时变量power存放x的各次幂,并利用xk=xxk-1来简化计算。我们把这种算法称为逐项求和算法。 逐项求和算法实际上特别简单,直接阅读教材第45页的程序3.01的源代码即可掌握这个算法。 3 程序3.01 逐项求和法求多项式的值 double PolyValue(double x,double*A,int n) { double power=1.0,y; int k; y=A[0]; for(k=1;k=n;k++) { power*=x; y+=A[k]*power; } return y; } 注释:程序3.01由于循环体内出现了两次乘法运算,所以计算量为O(2n)。 4.秦九韶算法 可以把多项式改写为便于递推的形式 A(x)=( a0+ x(…(ak+x(…(an-1+x(an))…))…)) 记 yk=(ak+x(ak+1+x(…(an-1+x(an))…))) 约定yn=an,不难得到递推关系式 yn=an yk=ak+x*yk+1,k=n-1,n-2,…,0 且y0就是所需要的结果。 利用上面的递推格式求多项式的值的算法称为秦九韶算法,一些国外文献称之为Horner算法,其实是我国南宋时期的数学家秦九韶首先提出来的。 5 程序3.02 秦九韶算法求多项式的值 double PolyValue(double x,double*A,int n) { double y; int k; y=A[n]; for(k=n-1;k=0;k--)y=y*x+A[k]; return y; } 由于不需要保留yn,yn-1,…,y1等中间结果,所以程序中只用一个变量y来动态地表示它们。 秦九韶算法的
您可能关注的文档
最近下载
- 中医经方临床运用培训课件.ppt
- 汽车装配与调试技术课程标准.docx
- 毕业论文低频电涡流传感器测量电路设计.doc
- S2168001-社会计算导论-智算学部.pptx
- 《古建筑修缮工程施工规程》.pdf
- 对企业有利的劳动合同.docx
- 班主任带班育人方略《做有温度的班主任》宣讲演讲PPT课件.pptx
- 答案-国开电大(本科)《当代中国政治制度》在线形考(形考任务二)试题.docx
- 大学物理 II-(热学、振动和波、光学、量子)(北京交大)中国大学MOOC慕课 章节测验期末考试客观题答案.docx
- 【专项复习】2024年小学六年级下册小升初数学专题复习(8)比的性质求比值和化简比及比的应用(知识归纳+典例精析+拔高训练)(1).docx
文档评论(0)