已知f(x)=cos x + x,求a~b f(x)的定积分,算法采用梯形法,梯形法就是将曲边梯形分成若干个小的曲边梯形,然后用相应的小的梯形代替窄小的曲边梯形
1.将积分区间b-a等分为n份,每份长度h=(b-a)/n
2.使用梯形面积计算定积分,近似公式为:
编程中建议m取1000~2000
定义一个函数名为f的被积函数,参数为x,类型为double
定义一个累加函数s,计算累加公式
代码如下:
#include<iostream>
#include<cmath>
#define n 1024
using namespace std;
double f(double x)//计算f(x)
{
return cos(x) + x;
}
double s(int a,double h)//计算累加
{
double sum=0.0;
for(int i=1; i < n; ++i){
sum += f(a + i * h);
}
return sum;
}
int main()
{
int a,b;
double result=0.0;
cin>>a>>b;
double h=(b - a) / 1024.0;
result=((f(a) + f(b)) / 2.0 + s(a,h)) * h;
cout<<result<<endl;
return 0;
}