Java 一元三次方程求解
时间: 2023-07-28 13:09:23 浏览: 75
对于一元三次方程 ax^3 + bx^2 + cx + d = 0 的求解,可以使用牛顿迭代法或者Cardano公式。以下是使用牛顿迭代法求解的示例代码:
```java
public class CubicEquationSolver {
public static void main(String[] args) {
double a = 1;
double b = -6;
double c = 11;
double d = -6;
double[] roots = solveCubicEquation(a, b, c, d);
System.out.println("Roots:");
for (double root : roots) {
System.out.println(root);
}
}
public static double[] solveCubicEquation(double a, double b, double c, double d) {
double x0 = 0.0; // 初始猜测值
for (int i = 0; i < 100; i++) { // 最大迭代次数
double f = a * x0 * x0 * x0 + b * x0 * x0 + c * x0 + d; // 方程的函数值
double df = 3 * a * x0 * x0 + 2 * b * x0 + c; // 方程的导数值
double x1 = x0 - f / df; // 牛顿迭代公式
if (Math.abs(x1 - x0) < 1e-6) { // 判断迭代是否收敛
return new double[]{x1};
}
x0 = x1;
}
return new double[0]; // 没有找到根
}
}
```
你可以根据具体的方程参数,修改代码中的 `a`、`b`、`c`、`d` 的值来求解一元三次方程。运行程序后,将会输出方程的根。注意,牛顿迭代法可能无法找到所有的实根,或者找到复数根。