对于积分区间[a, b],若
则成立
梯形公式
如下图所示,被积分函数f(x)在区间[a, b]的积分值约为各个小梯形的面积之和,而且分割数n越大则近似误差越小。
C语言程序实现梯形公式计算积分
- 计算积分
- 代码
//trapez.c#include #include /*函数定义*/double f(double x){ return (1.0-x)*exp(-1*x);}/*梯形公式计算积分*/double trapez( double a, double b, int n){ double h = (b -a) / n; double s = 0.0; double x; int i; s = ((f(a) + f(b)) / 2) * h; for( i = 1; i < n; i++ ) { x = a + h * i; s += f(x) * h; } return s;}int main(void){ //积分区间[a, b] double a = -1.0, b = 1.0; //区间分割数 int N[5]={10,20,30,50,100}; int i = 0; for( i = 0; i < 5; i++ ) printf("[%3d等分]积分近似值: I = %.5lf", N[i], trapez(a, b, N[i])); return 0;}
- 编译・执行
$ gcc -lm -o trapez trapez.c$ ./trapez[ 10等分]积分近似值: I = 3.11209[ 20等分]积分近似值: I = 3.09265[ 30等分]积分近似值: I = 3.08904[ 50等分]积分近似值: I = 3.08720[100等分]积分近似值: I = 3.08642