首页 > 编程知识 正文

c语言计算级数和,c语言计算数学函数

时间:2023-05-03 08:29:03 阅读:277437 作者:4837

在编程语言的学习中,我们学习过不少的算法,比如累加,累乘,数值交换,排序等等。在一些软件比赛和面试题中,有一类算法不容忽视,属于高频题目,我之前去企业面试的时候就遇到这样的一类题目,题目不算难,掌握方法,很快可以做出来。这类算法叫做----级数算法。

级数计算的关键是“描述出通项”,而通项的描述法有两种:一为直接法、二为间接法又称递推法。

直接法的要领是:利用项次直接写出通项式;递推法的要领是:利用前一个(或多个)通项写出后一个通项。

可以用直接法描述通项的级数计算例子有:

(1)1+2+3+4+5+……

(2)1+1/2+1/3+1/4+1/5+……等等。

可以用间接法描述通项的级数计算例子有:

(1)1+1/2+2/3+3/5+5/8+8/13+……

(2)1+1/2!+1/3!+1/4! +1/5!+……等等。

(1)直接法求通项

打个比方,我写段代码:

例1、求1+1/2+1/3+1/4+1/5+……+1/100的和。

#include <stdio.h>int main(void){ float s; int i; s=0.0; //程序中是利用项次的倒数直接描述出每一项,并进行累加。注意:因为是整数,所以分子必须写成浮点数1.0的形式 for(i=1;i<=100;i++) { s=s+1.0/i ; } printf("1+1/2+1/3+...+1/100=%fn",s); return 0 ;}运行结果:

例2:间接法求通项

这种方法也叫做递推法

例如:

计算下列式子前20项的和:1+1/2+2/3+3/5+5/8+8/13+……。

#include <stdio.h>int main(void){ float sum,fz,fm,t,fz1; int i; sum=1; /*先将第一项的值赋给累加器s*/ fz=1;fm=2; t=fz/fm; /*将待加的第二项存入t中*/ for(i=2;i<=20;i++) { sum=sum+t; /*以下求下一项的分子分母*/ fz1=fz; /*将前项分子值保存到fz1中*/ fz=fm; /*后项分子等于前项分母*/ fm=fz1+fm; /*后项分母等于前项分子、分母之和*/ t=fz/fm; } printf("1+1/2+2/3+...=%fn",sum);}运行结果:


例三:计算级数的值,当通项的绝对值小于eps时计算停止。

#include <stdio.h>#include <math.h>//求出最终的结果 float result(float x,float eps);int main(void){ float x,eps; scanf("%f%f",&x,&eps); printf("n%f,%fn",x,result(x,eps)); return 0 ;}float result(float x,float eps){ int n=1;float s,t; s=1; t=1; do { //以下t为递推算法部分 t=t*x/(2*n); s=s+(n*n+1)*t; n++; }while(fabs(t)>eps); return s;}运行结果:



版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。