c语言编程定积分lnx,C语言用辛普森公式求lnx在0到100上的定积分的源程序
有用点击右侧采纳即可!
代码如下:
#include <math.h>
#include <stdio.h>
double simpson(double (*f)(double), double a, double b, int n) {
double h = (b - a) / (2 * n);
double sum = f(a) + f(b);
for (int i = 1; i <= n; i++) {
double x = a + 2 * i * h;
sum += 2 * f(x);
}
for (int i = 1; i < n; i++) {
double x = a + (2 * i - 1) * h;
sum += 4 * f(x);
}
return sum * h / 3;
}
double ln(double x) {
return log(x);
}
double sinx(double x) {
return sin(x);
}
int main() {
int n = 10000;
double a = 0, b = 100;
double result = simpson(ln, a, b, n);
printf("lnx在0到100上的定积分的近似值为: %.15lf\n", result);
result = simpson(sinx, a, b, n);
printf("sinx在0到100上的定积分的近似值为: %.15lf\n", result);
return 0;
}
```c
#include <stdio.h>
#include <math.h>
#define PI 3.1415926535
double f1(double x) {
return log(x);
}
double f2(double x) {
return sin(x);
}
double simpson(double (*f)(double), double a, double b, int n) {
double h = (b - a) / (2 * n);
double sum = 0;
int i;
for (i = 0; i <= 2 * n; i++) {
if (i == 0 || i == 2 * n) {
sum += f(a + i * h);
} else if (i % 2 == 0) {
sum += 2 * f(a + i * h);
} else {
sum += 4 * f(a + i * h);
}
}
return h / 3 * sum;
}
int main() {
double a = 1;
double b = 3;
int n = 100;
double result1 = simpson(f1, a, b, n);
double result2 = simpson(f2, 0, PI / 2, n);
printf("The definite integral of ln(x) from %f to %f is approximately %f\n", a, b, result1);
printf("The definite integral of sin(x) from %f to %f is approximately %f\n", 0, PI / 2, result2);
return 0;
}
```