求定积分的C语言函数 c语言实现积分的函数

C语言如何求定积分?

4.龙贝格求积公式,求解定积分

创新互联主要从事网站设计制作、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务梧州,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

C/C++ code

#includestdio.h

#includemath.h

#define f(x) (sin(x)/x)

#define N 20

#define MAX 20

#define a 2

#define b 4

#define e 0.00001

float LBG(float p,float q,int n)

{ int i;

float sum=0,h=(q-p)/n;

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

sum+=f(p+i*h);

sum+=(f(p)+f(q))/2;

return(h*sum);

}

void main()

{ int i;

int n=N,m=0;

float T[MAX+1][2];

T[0][1]=LBG(a,b,n);

n*=2;

for(m=1;mMAX;m++)

{ for(i=0;im;i++)

T[i][0]=T[i][1];

T[0][1]=LBG(a,b,n);

n*=2;

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

T[i][1]=T[i-1][1]+(T[i-1][1]-T[i-1][0])/(pow(2,2*m)-1);

if((T[m-1][1]T[m][1]+e)(T[m-1][1]T[m][1]-e))

{ printf("Answer=%f\n",T[m][1]); getch();

return ;

}

}

}

6. 牛顿-科特斯求积公式,求定积分

C/C++ code

#includestdio.h

#includemath.h

int NC(a,h,n,r,f)

float (*a)[];

float h;

int n,f;

float *r;

{ int nn,i;

float ds;

if(n1000||n2)

{ if (f)

printf("\n Faild! Check if 1n1000!\n",n);

return(-1);

}

if(n==2)

{ *r=0.5*((*a)[0]+(*a)[1])*(h);

return(0);

}

if (n-4==0)

{ *r=0;

*r=*r+0.375*(h)*((*a)[n-4]+3*(*a)[n-3]+3*(*a)[n-2]+(*a)[n-1]);

return(0);

}

if(n/2-(n-1)/2=0)

nn=n;

else

nn=n-3;

ds=(*a)[0]-(*a)[nn-1];

for(i=2;i=nn;i=i+2)

ds=ds+4*(*a)[i-1]+2*(*a)[i];

*r=ds*(h)/3;

if(nnn)

*r=*r+0.375*(h)*((*a)[n-4]+3*(*a)[n-3]+3*(*a)[n-2]+(*a)[n-1]);

return(0);

}

main()

{

float h,r;

int n,ntf,f;

int i;

float a[16];

printf("Input the x[i](16):\n");

for(i=0;i=15;i++)

scanf("%d",a[i]);

h=0.2;

f=0;

ntf=NC(a,h,n,r,f);

if(ntf==0)

printf("\nR=%f\n",r);

else

printf("\n Wrong!Return code=%d\n",ntf);

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语言编写一个求定积分的程序

#includestdio.h

#includemath.h

float

f1(float

x)

{

return(1.0+x);

}

float

f2(float

x)

{

return(2.0*x+3.0);

}

float

f3(float

x)

{

return(exp(x)+1);

}

float

f4(float

x)

{

return(pow(1+x,2));

}

float

f5(float

x)

{

return(pow(x,3));

}

float

fsimp(float

a,float

b,float

(*p)(float))

{

float

c,s;

c=(a+b)/2;

s=(b-a)/6*(p(a)+4*p(c)+p(b));

return

s;

}

int

main()

{

float

a,b;

printf("请输入积分下限a的值:");

scanf("%f",a);

printf("请输入积分上限b的值:");

scanf("%f",b);

printf("%f\n",fsimp(a,b,f1));

printf("%f\n",fsimp(a,b,f2));

printf("%f\n",fsimp(a,b,f3));

printf("%f\n",fsimp(a,b,f4));

printf("%f\n",fsimp(a,b,f5));

}

用c语言求定积分

#include

#include

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;

}

int main()


本文名称:求定积分的C语言函数 c语言实现积分的函数
标题URL:http://hbruida.cn/article/dopphse.html