用差分法写个能运算极值的代码。C语言
时间: 2024-02-21 08:02:06 浏览: 66
以下是一个用差分法求函数极值的示例代码(C语言):
```c
#include <stdio.h>
#include <math.h>
// 待求极值的函数
double f(double x) {
return pow(x, 3) - 2 * pow(x, 2) + 3 * x - 1;
}
// 求函数在x处的导数
double df(double x, double h) {
return (f(x + h) - f(x - h)) / (2 * h);
}
// 求函数的极值
double find_extremum(double a, double b, double eps) {
double x0, x1, x2, h;
x1 = a;
x2 = b;
h = 0.001;
do {
x0 = x1;
x1 = x2;
x2 = x1 - df(x1, h) / ((df(x1, h) - df(x0, h)) / (x1 - x0));
} while (fabs(x2 - x1) >= eps);
return x2;
}
int main() {
double a, b, eps;
printf("请输入区间[a, b]和精度eps:\n");
scanf("%lf %lf %lf", &a, &b, &eps);
double x = find_extremum(a, b, eps);
printf("函数的极值点为:%lf\n", x);
printf("函数的极值为:%lf\n", f(x));
return 0;
}
```
该程序使用牛顿迭代法求函数的极值点,其中`f(x)`为待求极值的函数,`df(x, h)`为求函数在`x`处的导数的函数,`find_extremum(a, b, eps)`为求函数在区间`[a, b]`内的极值点的函数,`main()`函数为程序入口,通过`scanf()`函数获取待求函数的区间和精度,然后调用`find_extremum()`函数求解。
阅读全文