c语言求定积分的通用函数
时间: 2024-01-20 09:03:28 浏览: 65
在C语言中,可以使用数值积分方法来求定积分。其中比较常用的数值积分方法是梯形法和辛普森法。下面给出一个求定积分的通用函数:
```c
#include <math.h>
double trapezoidal(double (*func)(double), double a, double b, int n)
{
double h = (b-a)/n;
double integral = 0.5*(func(a) + func(b));
for (int i = 1; i < n; i++) {
double x = a + i*h;
integral += func(x);
}
integral *= h;
return integral;
}
double simpson(double (*func)(double), double a, double b, int n)
{
double h = (b-a)/n;
double integral = 0;
for (int i = 0; i <= n; i++) {
double x = a + i*h;
double fi = func(x);
if (i == 0 || i == n) {
integral += fi;
} else if (i % 2 == 1) {
integral += 4*fi;
} else {
integral += 2*fi;
}
}
integral *= h/3;
return integral;
}
```
其中,`trapezoidal`函数使用梯形法求解定积分,`simpson`函数使用辛普森法求解定积分。两个函数的参数含义相同,其中`func`参数是被积函数,`a`和`b`参数是积分区间端点,`n`参数是分割的区间数。函数返回计算出的定积分值。
阅读全文