学校最近学习指针,结合书上的讲解和网上的资源,自己学着写了用梯形法算定积分的代码,主要如下:
#include<stdio.h>
#include<math.h>
int main()
{
float v,integral(int ,int ,int ,float (*p)(int ));
int a,b,t,n;
float f1(int );
float f2(int );
float f3(int );
float f4(int );
float f5(int );
scanf("%d %d",&a,&b);
scanf("%d",&t);
n=a-b;
switch (t){
case 1:v=integral(n,a,b,f1); break;
case 2:v=integral(n,a,b,f2); break;
case 3:v=integral(n,a,b,f3); break;
case 4:v=integral(n,a,b,f4); break;
case 5:v=integral(n,a,b,f5); break;
}
printf("定积分是%f",v);
return 0;
}
float integral(int n,int x,int y,float (*p)(int)){
int i,t;
float y1,y2,sum=0.0;
t=n/(x-y);
for(i=x;i<y;i++){
y1=(*p)(i);
y2=(*p)(i+t);
sum+=(y1+y2)*1.0/2;
}
printf("sum=%f\n",sum);
return sum;
}
数学上定积分的计算是看成无穷分间隔极小的矩形面积,此代码只是用间隔为1的梯形计算,那不是改成间隔极小的梯形计算会更精确吗?只是该怎么写,有大佬知道的话请告诉小弟。。。。