思路就是将区间无限细分
小区间梯形就可以看成矩形,小矩形所有面积相加,就是定积分
#include "stdio.h"
#include "math.h"
double f(double x)//被积函数
{
return x*x;
}
double fun(double p,double q,int n)//p,q分别表示积分下上限,n为细分的区间数,越大值越精确
{
int i;
double sum=0,h=(q-p)/n;
for (i=1;i<=n;i++) //f(p+i*h)*h就是小矩形的面积,加到sum上去。
sum+=f(p+i*h)*h;
return sum;
}
int main()
{
printf("(x*x)在(0,1)上定积分为%lf\n",fun(0,1,1000000));//区间数自己设越大值越精确
}
结果:
数学分析:
f(x)=x^2=x*x;
定积分:x*x*x/3+c(常数)
在区间(0,1)上定积分:1/3=0.333333
结果正确。