c语言中球积分的函数,C语言积分函数

用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语言中,积分函数怎么写

把积分算式算出来,然后用C写。

比如[a,b]的积分上限和下限,对x积分,就是x^2/2, 代入a,b

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语言计算微积分?

我给一楼加的注释以及修改:

#includestdio.h

#includemath.h

#define ARRAYBOUND 10001

void main()

{

int i = 0; //辅助变量,最常见那种

int n = 0; //将所求定积分函数曲线在x轴方向,平均分成n等分;n越大,结果越精确;不过限于此算法限制nARRAYBOUND,否则溢出.

float x[ARRAYBOUND];//ARRAYBOUND维浮点数组,存放离散的x坐标值

float y[ARRAYBOUND];//ARRAYBOUND维浮点数组,存放每个x坐标对应的函数值;x[i],y[i]满足y[i]=f(x[i]),f是你要求定积分的函数

float x0 = 0.0; //定积分下限

float xn = 0.0; //定积分上限

float h = 0.0; //面积微元宽度

float J = 0.0; //辅助变量

/*f=x^3*/ //这里说明要求定积分的是函数f(x)=x*x*x;(y等于x的立方,x^3是vb的写法)

// printf("input x0,xn,n:");

printf("请分别输入下限(x0),上限(xn),精度(n):");

scanf("%f",x0);

scanf("%f",xn);

scanf("%d",n);

h=(xn-x0)/n;//将函数图形在x方向平分成n份,h是每个面积微元的宽度

x[0]=x0; //将积分下限赋值给x[0]

for(i=0;i=n nARRAYBOUND;i++)

{

x[i]=x[0]+i*h; //计算n个离散的横坐标值,存入x[]数组

y[i]=(float)pow(x[i],3);//计算n个横坐标对应的函数值,存入y[]数组。在此可以改变要求积分的函数

}

// J=0.0;

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

{

//J=J+y[i]+y[i+1];

J+=y[i];//将所有纵坐标值代数相加,存入J

}

//J=J*h/2.0;

J=J*h;//所有微元面积一次求解,因为∑h*y[i]=h*∑y[i];

printf("\nn=%d \n所求定积分值是: %f\n",n,J);

}

我将//J=J+y[i]+y[i+1]改为J+=y[i];将//J=J*h/2.0;改为J=J*h只是帮助lz理解

其实,这两种表达在理论上是等价的,不过我发现修改后,在n同样大小的情况下,结果的精度有一点点下降,还真不知为什么???

这样的话lz应该能理解了吧,其实一楼的算法还有不少值得改进的地方,希望lz能有所突破!!

用C语言编写一个求定积分的程序,用它分别求以下5个函数的定积分:

#includestdio.h

#includemath.h//pow()指数函数头文件;

#define e 2.71828//定义自然常数e;

int main ()

{

double a,b,n1,n2,n3,n4,n5,t;

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

if(ab)//保证上限比下限大;

{

t=a;

a=b;

b=t;

}

n1=a-b+0.5*(a*a-b*b);//a和b是未知数,积分运算后,原式=a和b混合运算的代数式;

n2=a*a-b*b+3*a-3*b;

n3=e*0.5*(a*a-b*b)+a-b;

n4=(pow(a+1,3)-pow(b+1,3))/3;

n5=(pow(a,4)-pow(b,4))/4;

printf("%.2lf %.2lf %.2lf %.2lf %.2lf",n1,n2,n3,n4,n5);

return 0;

}

图1是运行结果,图2是原题的积分结果;通过数学的积分结果可以看出,积分符号的不在了;只剩下上下限a,b组成的代数式;


分享名称:c语言中球积分的函数,C语言积分函数
网页路径:http://hbruida.cn/article/dscgosi.html