大一小白用c语言写牛顿迭代法求解一元三次方程,不知道哪里有问题,希望有无人指教,感谢!
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, d, x = 1, x1 = 1.5,f,fd;
scanf_s("%f %f %f %f", &a, &b, &c, &d);
while (fabs(x - x1) >= 1e-5) {
x1 = x;
f = a * pow(x1, 3) + b * x1 * x1 + c * x1 + d;
fd = 3 * a * x1 * x1 + 2 * b * x1 + c;
x = x1 - f / fd;
printf("x=%f\n", x);
}
return 0;
}
这个是出来的结果
答案应该是
1.0000 2.0000 3.0000
非常感谢
牛顿迭代法如下