解3次方程c++
时间: 2023-12-03 08:44:06 浏览: 63
解3次方程的通式为 ax^3 + bx^2 + cx + d = 0,其中 a, b, c, d 为实数且 a 不等于0。
可以使用牛顿迭代法或者三分法求解该方程。以下是使用牛顿迭代法的代码示例:
```c++
#include <iostream>
#include <cmath>
using namespace std;
const double eps = 1e-6; // 精度要求
double a, b, c, d;
double f(double x) {
return a * x * x * x + b * x * x + c * x + d;
}
double f1(double x) {
return 3 * a * x * x + 2 * b * x + c;
}
double newton() {
double x0 = 1; // 初值
double x1 = x0 - f(x0) / f1(x0);
while (abs(x1 - x0) > eps) {
x0 = x1;
x1 = x0 - f(x0) / f1(x0);
}
return x1;
}
int main() {
cin >> a >> b >> c >> d;
double ans = newton();
printf("%.6lf", ans);
return 0;
}
```
需要输入方程的系数 a, b, c, d,输出解 x 的值。
注意:牛顿迭代法需要初值 x0,不同的初值可能会得到不同的解。同时,如果方程有多个根,可能会得到其中一个根而其他根则无法求解。因此,如果需要求解所有的根,可以使用其他方法,例如三分法。
阅读全文