用C语言编写一个用梯形法求定积分的通用函数
时间: 2024-05-04 10:20:29 浏览: 111
以下是一个用梯形法求定积分的通用函数的C语言代码:
```c
#include <stdio.h>
#include <math.h>
double func(double x); // 定义被积函数
double trapezoid(double a, double b, int n) {
double h = (b - a) / n; // 计算步长
double sum = (func(a) + func(b)) / 2; // 初始化积分和
for (int i = 1; i < n; i++) {
double x = a + i * h; // 计算当前点的x值
sum += func(x); // 加上当前点的函数值
}
sum *= h; // 乘上步长
return sum;
}
int main() {
double a = 0; // 积分区间的下限
double b = M_PI / 2; // 积分区间的上限
int n = 100; // 分割区间的数量
double result = trapezoid(a, b, n); // 计算定积分
printf("The result is: %lf\n", result); // 输出结果
return 0;
}
double func(double x) {
return sin(x); // 定义被积函数
}
```
这个函数中,`trapezoid`函数用来计算定积分,其中`a`和`b`分别表示积分区间的下限和上限,`n`表示分割区间的数量。函数中使用了一个`for`循环来对每个区间进行梯形面积的计算,并将得到的面积累加到积分和`sum`中。最后,函数将`sum`乘上步长`h`,得到最终的积分结果。在`main`函数中,我们定义了被积函数`func`,并将其作为参数传递给`trapezoid`函数进行计算。
阅读全文