任意角的sin值在c语言的,Ch03:数值计算方法之常用函数值计算方法.ppt

本文介绍了数值计算中求解基本初等函数值的方法,重点讨论了使用泰勒展开式和多项式函数的计算。通过泰勒展式可以得到函数的任意精度近似值,但在特定范围外可能需要其他数学方法。文章还探讨了C语言中实现多项式求值的算法,包括逐项求和法和秦九韶算法,其中秦九韶算法更为高效,仅需一个变量即可完成计算。
摘要由CSDN通过智能技术生成

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来动态地表示它们。 秦九韶算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值