书上一串代码,说的是用矩形公式求发f(x)在[a,b]的定积分。但给的部分代码,实在让我无解
先M等分积分区间求得积分近似值,再2M等分求得积分近似值,再4M....当两次积分近似值之差的绝对值小于eps时返回计算结果对于这个函数,是很深沉问题还是本身问题,
谢谢哪位大神解答一下。因为这是个部分程序,所以很迷茫,希望补全,或讲解一下
float sum(float a,float b,int m,float eps)
{
float h,s1=0,s2,x;
int i,flag=1;
while (flag)
{
s2=0;x=a;
h=(b-a)/m;
for (i=1;i<=m;i++)
{
s2+=(f(x)+f(x+h))*h/2;
x=x+h;
}
if (fabs(s1-s2)<eps)
flag=0;
s1=s2;m=m*2;
}
return s2;
}