C语言编写定积分通用函数 c语言求积分

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

这是辛普森积分法。

创新互联建站长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为闽清企业提供专业的成都网站设计、成都网站建设,闽清网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

给你写了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程序设计:编制求解定积分的通用函数

#includestdio.h

#includemath.h

float f1(float a)

{

float z;

z=a+1;

return(z);

}

float f2(float a)

{

float z;

z=2*a+3;

return(z);

}

void integral(float a,float b,float (*fun)(float ))

{

float i,trace,hight1,hight2,area,sum=0;

trace=(b-a)/1000;

for ( i=a;ib;i+=trace )

{

hight1=(*fun)(a);

a+=trace;

hight2=(*fun)(a);

area=(((hight1+hight2)*trace)/2);

sum+=area;

}

printf("sum=%f\n",sum);

}

void main()

{

float a,b,sum1;

printf("*************************\n");

printf("请输入该定积分的上下区间a和b:\n");

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

integral(a,b,f1(a));

integral(a,b,f2(a));

}

怎样编写c语言积分函数

积分分为两种,数值积分,公式积分。

公式积分:部分函数可以直接用公式求得其不定积分函数。C语言中可以直接用积分公式写出其积分函数。

数值积分:按照积分的定义,设置积分范围的步长,用梯形面积累加求得其积分。

以【f(x)=x*sin(x) 从1到2的积分】为例:

#include math.h

#include stdio.h

double integral(double(*fun)(double x),double a,double b,int,n){

double s,h,y;

int i;

s=(fun(a)+fun(b))/2;

h=(b-a)/n; /*积分步长*/

for(i=1;in;i++)

s=s+fun(a+i*h);

y=s*h;

return y;/*返回积分值*/

}

double f(double x){

return(x*sinx)  /*修改此处可以改变被积函数*/

}

int main(){

double y;

y=integral(f,1.0,2.0,150);/*修改此处可以改变积分上下限和步数,步长=(上限-下限)/步数*/

printf("y=%f\n",y);

return 0;

}


分享文章:C语言编写定积分通用函数 c语言求积分
网页地址:http://scyanting.com/article/doiesch.html