用牛顿迭代法求下面方程在1.5附近的根。 2x^3-4x^2+3x-6=0
这个程序使用牛顿迭代法求方程 2x^3 - 4x^2 + 3x - 6 = 0
在 1.5 附近的根。
#include <stdio.h>
#include <math.h>
// 方程 f(x)
double f(double x) {
return 2 * pow(x, 3) - 4 * pow(x, 2) + 3 * x - 6;
}
// 方程 f(x) 的导数 f'(x)
double f_prime(double x) {
return 6 * pow(x, 2) - 8 * x + 3;
}
int main() {
double x = 1.5, epsilon = 1e-5, x_next;
do {
x_next = x - f(x) / f_prime(x);
if (fabs(x_next - x) < epsilon) {
break;
}
x = x_next;
} while (1);
printf("方程的根: %.5f\n", x_next);
return 0;
}
代码说明:
- 初始猜测值设为 1.5。
- 使用牛顿迭代公式不断更新
x
,直到前后两次的差值小于epsilon
。 - 使用
fabs
函数计算绝对值差。