用矩形法求定积分的通用函数。
1.矩形法求定积分的公式:将积分图形分成指定数量的矩形,求取各个矩形的面积,最终累加得到结果
积分区间【a,b】;
分割数量:n;
每个矩形边长:dx=(b-a)/n;
被积分函数:f(x) (f-对应不同的被积分函数sin/cos/exp)(x=a+dx*n)计算矩形高度
求取每个矩形面积S=S1+S2+......Sn;
编程:函数指针
调用一个函数。
#include<stdio.h>
#include<math.h>
float fsin(float x)
{
return sin(x);
}
float fcos(float x)
{
return cos(x);}
float fexp(float x)
{
return exp(x);
}
float integral(float(*p)(float),float a,float b,int n)
{
int i;
float x,h,s;
h=(b-a)/n;
x=a;
s=0;
for(i=1;i<=n;i++)
{x=x+h;
s=s+(*p)(x)*h;
}
return(s);
}
int main()
{
float a1,b1,a2,b2,a3,b3,c,(*p)(float);
int n=20;
printf("input a1,b1,a2,b2,a3,b3:");
scanf("%f,%f,%f,%f,%f,%f",&a1,&b1,&a2,&b2,&a3,&b3);
p=fsin;
c=integral(p,a1,b1,n);
printf("The integral of sin(x) is:%f\n",c);
p=fcos;
c=integral(p,a2,b2,n);
printf("The integral of cos(x) is:%f\n",c);
p=fexp;
c=integral(p,a3,b3,n);
printf("The integral of exp(x) is:%f\n",c);
return 0;
}