用复合辛普森公式计算定积分c语言
时间: 2024-01-10 08:04:23 浏览: 233
以下是使用复合辛普森公式计算定积分的C语言代码:
```c
#include <stdio.h>
#include <math.h>
double f(double x) {
return sin(x); // 定义被积函数
}
double integral(double a, double b, int n) {
double h = (b - a) / n;
double x[n+1], y[n+1];
for (int i = 0; i <= n; i++) {
x[i] = a + i * h;
y[i] = f(x[i]);
}
double sum1 = 0, sum2 = 0, sum3 = 0;
for (int i = 1; i < n; i += 2) {
sum1 += y[i];
}
for (int i = 2; i < n; i += 2) {
sum2 += y[i];
}
for (int i = 0; i <= n; i += 2) {
sum3 += y[i];
}
return (h / 3) * (f(a) + 4 * sum1 + 2 * sum2 + 4 * sum3 + f(b)); // 返回积分值
}
int main() {
double a = 0, b = M_PI; // 积分区间
int n = 10; // 子区间数
double result = integral(a, b, n);
printf("The definite integral of sin(x) from 0 to pi is: %lf\n", result);
return 0;
}
```
其中,`f(x)`函数定义了被积函数,`integral(a, b, n)`函数使用复合辛普森公式计算定积分的值,`main()`函数中调用`integral()`函数并输出结果。在本例中,计算 sin(x) 在 [0, π] 区间内的定积分。
阅读全文