63,594
社区成员




#include <iostream.h>
#include <math.h>
double f(double);
int k,m;
double a=1,b=9,kexi=1e-6,q,sum=0;
double T[20][20]={0};
void main()
{
T[0][0]=(b-a)*(f(a)+f(b))/2;
k=1;
flag: //这个是怎样的,实在看不明白。
q=int(pow(2,k-1)); // pow()这个在参数方面也有问题。
for(int i=1;i <=q;i++)
{
sum+=f(a+(2*i-1)*(b-a)/(q*2));
}
T[0][k]=0.5*(T[0][k-1]+(b-a)*sum/q);
for(m=1;m <=k;m++)
{
T[m][k-m]=(pow(4,m)*T[m-1][k-m+1]-T[m-1][k-m])/(pow(4,m)-1);
}
if(fabs(T[k][0]-T[k-1][0]) <kexi)
cout < <"满足精度的积分近似值为" < <T[k][0] < <endl;
else
{
k++;
goto flag;
}
}
double f(double x)
{
return sqrt(x);
}
//楼主还是重贴一次代码吧。用格式贴现率