10.13 写一个用矩形法求定积分的通用函数,分别求sinx,cosx,expx的0-1的定积分
#include <stdio.h>
#include <math.h>
int main(){
int n=3000;
float a=0,b=1,(*p)(float);
float integral(float a, float b, int n, float (*p)(float));
float fsin(float);
float fcos(float);
float fexp(float);
//求sinx的定积分
p=fsin;//函数名就是该函数的指针
float x=integral(a, b, n, p);//调用指向函数的指针时,不向指针指向的函数中传参
printf("sinx的0到1定积分= %8.2f
",x);
//求cosx的定积分
p=fcos;//函数名就是该函数的指针
float y=integral(a, b, n, p);
printf("cosx的0到1定积分= %8.2f
",y);
//求sinx的定积分
p=fexp;//函数名就是该函数的指针
float z=integral(a, b, n, p);
printf("expx的0到1定积分= %8.2f
",z);
return 0;
}
//矩形法求定积分
float integral(float a, float b, int n, float (*p)(float)){
int i;
float h,x=a,s=0;
h=(b-a)/n;//h步长,n分的份数
for(i=0; i<n; i++){
x=x+h;
s=s+(*p)(x)*h;
}
return s;
}
float fsin(float x){
return sin(x);
}
float fcos(float x){
return cos(x);
}
float fexp(float x){
return exp(x);
}
结果: