提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
C代码实现定积分运算
前言
定积分是什么
一、求解定积分
求函数f(x)=x的定积分。求a~b区间范围内的积分(即是求ab区间面积),可以把区间分成n等份,分的越多每一个区间越近似与矩形,求所有矩形面积即为积分结果。
对于第0个矩形的面积s:先令x=a,把光标移到x=a处进行分析,矩形于y的高度则为f(a),因此,此矩形的面积则为S0=f(a)*(b-a)/n;
对于第1个矩形的面积s:因为每个矩形的宽度皆为(b-a)/n,所以第一个矩形光标x= a+(b-a)/n处进行分析,矩形于y的高度则为:f(a+(b-a)/n),那么此矩形的面积则为:S1=f(a+(b-a)/n)*(b-a)/n;
以此类推,对于第i个矩形的面积s:同样因为每个矩形的宽度皆为(b-a)/n,所以先把光标移到x= a+i*(b-a)/n处进行分析,同理,可以得出相应矩形的面积:Si=f(a+i*(b-a)/n)(b-a)/n
值得注意的是,i从1开始或者从0开始没有任何关系,当被积分的矩形足够多的时候,多一个矩形,少一个矩形对结果的影响是九牛一毛,接近于0的。
因此:
每一个矩形面积为:Sn=f(x)(b-a)/n
总面积为:S=S0+S1+S2+…+Sn
二、代码实现
1.求函数f1 f2 f3的积分
代码如下(示例):
#include <stdio.h>
#include <math.h>
void main( )
{
float f1(float x);
float f2(float x);
float f3(float x);
float s1 = 0;
float s2 = 0;
float s3 = 0;
int n; // 被分成的份数
float a,b; // 积分范围
int i; // 循环变量
printf("请输入极限下限:");
scanf("%f",&a);
printf("请输入极限上限:");
scanf("%f",&b);
printf("请输入被分成的份数:");
scanf("%d",&n);
for(i=1; i<=n;i++)
{
s1 = s1 + f1(a+((b-a)/n)*i)*((b-a)/n);
s2 = s2 + f2(a+((b-a)/n)*i)*((b-a)/n);
s3 = s3 + f3(a+((b-a)/n)*i)*((b-a)/n);
}
printf("积分的结果为:%0.4f\n",s1);
printf("积分的结果为:%0.4f\n",s2);
printf("积分的结果为:%0.4f\n",s3);
}
/* y=x */
float f1(float x)
{
float y=0;
y = x;
return y;
}
/* y = x*x */
float f2(float x)
{
float y=0;
y = x*x;
return y;
}
/* y = sin(x) */
float f3(float x)
{
float y=0;
y = (float)sin(x);
return y;
}
运行结果
总结
以上参考以下链接,附上链接,表示感谢:
C语言求定积分
求函数的定积分
c语言实现万能求积分