c语言求解定积分

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:27:36
按照要求利用所学上机程序求解定积分。
1/(1+x*x*x)在0-1区间上的积分

(1)利用梯形法求解, n=500。 0.8356481
(2)利用定步长抛物线法求解,n=500。 0.8356487

梯形法
main()
{
float x[500],h,b,l;
int i;
b=1.0/500;
for(i=0;i<500;i++)
x[i]=(i+1)*b;
h=0.0;
for(i=0;i<499;i++)
h=1.0/(1+x[i]*x[i]*x[i])+h;
l=1.0/(1+0)+1.0/(1+1*1*1)+h*2;
l=l*b/2.0;
printf("n=500 %.7f\n",l);
/*for(i=0;i<499;i++)
printf("%10f",x[i]);
printf("\n");*/
}

抛物线
main()
{
double x[1001],t1,t2,t3; /*1001=2*500+1*/
double he,b;
int i;
x[0]=0.0; /*jifenxiaxian*/
he=0.0;
b=1.0/2.0/500.0;
for(i=1;i<2*500+1;i++)
x[i]=x[i-1]+b;
for(i=0;i<1000;i=i+2)
{
t1=1.0/(1.0+x[i]*x[i]*x[i]);
t2=1.0/(1.0+x[i+1]*x[i+1]*x[i+1]);
t3=1.0/(1.0+x[i+2]*x[i+2]*x[i+2]);
he=1.0*b/3.0*(t1+4.0*t2+t3)+he;
}
printf("n=500 %.7f\n",he);
/*for(i=0;i<1001;i++)
printf("%12f&qu