本文章原创,转载请注明出处~
原理:如下图,若要求a,b区间之间的面积,则对a,b区间进行分割,用分割后的矩形面积相加作为区域面积的近似,分割的越细,近似程度越高
由此,可设计原型如下:
Double integration(Interval*i,double accuracy);
以下我给出一份自写的sample code,已经过个人验证,可以参考试试~~
#include <stdio.h>
#include <math.h>
#define pi 3.1415926
typedef struct
{
double x1_coordinate;
double x2_coordinate;
double(*func)(double)
}Interval;
double integration(Interval*i,double accuracy);
int main()
{
Interval i;
i.x1_coordinate=0;
i.x2_coordinate=pi/2;
i.func=sin;
printf("%f\n", integration(&i, 0.000001));
i.x2_coordinate=pi;
printf("%f\n", integration(&i, 0.000001));
i.x2_coordinate=2*pi;
printf("%f\n", integration(&i, 0.000001));
return 0;
}
double integration(Interval*i,double accuracy)
{
double sum=0,temp_coordinate=i->x1_coordinate;
int c=0;//counter
c=(i->x2_coordinate-i->x1_coordinate)/accuracy;
for(int c1=0; c1<c; c1++)
{
temp_coordinate+=accuracy;
sum+=(i->func(temp_coordinate))*accuracy;
}
return sum;
}