c语言中写定积分的函数 c语言中写定积分的函数怎么写

用C语言编写一个求定积分的程序

这是辛普森积分法。

创新互联网站建设服务商,为中小企业提供成都网站设计、成都网站制作服务,网站设计,网站改版维护等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联

给你写了fun_1( ),fun_2(),请自己添加另外几个被积函数。

调用方法 t=fsimp(a,b,eps,fun_i);

a,b --上下限,eps -- 迭代精度要求。

#includestdio.h

#includestdlib.h

#include math.h

double fun_1(double x)

{

return 1.0 + x ;

}

double fun_2(double x)

{

return 2.0 * x + 3.0 ;

}

double fsimp(double a,double b,double eps, double (*P)(double))

{

int n,k;

double h,t1,t2,s1,s2,ep,p,x;

n=1; h=b-a;

t1=h*(P(a)+P(b))/2.0;

s1=t1;

ep=eps+1.0;

while (ep=eps)

{

p=0.0;

for (k=0;k=n-1;k++)

{

x=a+(k+0.5)*h;

p=p+P(x);

}

t2=(t1+h*p)/2.0;

s2=(4.0*t2-t1)/3.0;

ep=fabs(s2-s1);

t1=t2; s1=s2; n=n+n; h=h/2.0;

}

return(s2);

}

void main()

{

double a,b,eps,t;

a=0.0; b=3.141592653589793238; eps=0.0000001;

// a definite integral by Simpson Method.

t=fsimp(a,b,eps,fun_1);

printf("%g\n",t);

t=fsimp(a,b,eps,fun_2);

printf("%g\n",t);

// ...

printf("\n Press any key to quit...");

getch();

}

用C语言求定积分

实际问题描述:

求定积分近似值

程序代码如下:

#include

#include

void main()

{

int i,n=1000;

float a,b,h,t1,t2,s1,s2,x;

printf("请输入积分限a,b:");

scanf("%f,%f",a,b);

h=(b-a)/n;

for(s1=0,s2=0,i=1;i=n;i++)

{

x=a+(i-1)*h;

t1=(float)exp(-x*x/2);t2(float)=exp(-(x+h)*(x+h)/2);

s1=s1+t1*h;        /*矩形面积累加*/

s2=s2+(t1+t2)*h/2;        /*梯形面积累加*/

}

printf("矩形法算得积分值:%f.\n",s1);

printf("梯形法算得积分值:%f.\n",s2);

}

程序运行结果如下:

矩形法算得积分值:0.855821

梯形法算得积分值:0.855624

由上面的比较可知,梯形法的精度要高于矩形法。

c语言 求定积分的通用函数

对于一重定积分来说其求解可以使用梯形法进行求解,计算公式如下所示:

其中,f(x)为被积函数,为横坐标的两点间的间隔,越小,则计算出的结果越精确。

对于求解此类问题可以使用C语言中的回调函数编写通用的计算函数,代码如下:

#include stdio.h

#include stdlib.h

#includemath.h

//功能:返回f(x)在积分区间[a,b]的值

//参数:FunCallBack 指向用于计算f(x)的函数

//      a  积分区间的起始值

//      b  积分区间的结束值

//      dx 横坐标的间隔数,越小计算结果越准确

double Calculate(double (*FunCallBack)(double x),

double a,double b,double dx)

{

double doui;

double total = 0;        //保存最后的计算结果

for (doui = a; doui = b; doui += dx)

{

total += FunCallBack(doui)*dx;

}

return total;

}

double f2(double x)

{

return x*x;

}

double f(double x)

{

return x;

}

double f3(double x)

{

return x*x*x ;

}

int main()

{

double total;

total = (Calculate(f, 2, 3, 0.000001));

printf("total = %lf\n", total);

total = (Calculate(f2, 2, 3, 0.000001));

printf("total = %lf\n", total);

total = (Calculate(f3, 2, 3, 0.000001));

printf("total = %lf\n", total);

return 0 ;

}

其中,函数f,f2,f3为自行编写的关于x的被积函数。

运行结果:

total = 2.500000

total = 6.333331

total = 16.249991


网页题目:c语言中写定积分的函数 c语言中写定积分的函数怎么写
网页路径:http://pwwzsj.com/article/ddojjip.html