编制数值积分的复合梯形算法、复合辛普森算法程序;c语言实现
时间: 2024-06-09 15:02:37 浏览: 108
用C语言辛普森算法积分算法
5星 · 资源好评率100%
编制数值积分的复合梯形算法、复合辛普森算法是比较常用的数值积分方法。其中,复合梯形算法是将积分区间等分为多个小区间,每个小区间内用梯形公式求解积分,然后将每个小区间的积分值相加得到整个区间的积分值。复合辛普森算法则是将积分区间等分为多个小区间,每个小区间内用辛普森公式求解积分,同样将每个小区间的积分值相加得到整个区间的积分值。
下面是使用C语言实现复合梯形算法、复合辛普森算法的程序:
```c
#include <stdio.h>
#include <math.h>
double f(double x) {
// 定义被积函数
return cos(x);
}
double trapezoidal(double a, double b, int n) {
// 复合梯形算法
double h = (b - a) / n;
double sum = 0.0;
for (int i = 1; i < n; i++) {
double x = a + i * h;
sum += f(x);
}
return h * (f(a) + f(b) + 2.0 * sum) / 2.0;
}
double simpson(double a, double b, int n) {
// 复合辛普森算法
double h = (b - a) / n;
double sum1 = 0.0, sum2 = 0.0;
for (int i = 1; i < n; i++) {
double x = a + i * h;
if (i % 2 == 0) {
sum1 += f(x);
} else {
sum2 += f(x);
}
}
return h * (f(a) + f(b) + 4.0 * sum1 + 2.0 * sum2) / 3.0;
}
int main() {
double a = 0.0, b = M_PI_2; // 积分区间为[0, pi/2]
int n = 100; // 将区间等分为100份
printf("Trapezoidal method: %lf\n", trapezoidal(a, b, n));
printf("Simpson's method: %lf\n", simpson(a, b, n));
return 0;
}
```
阅读全文