【发布时间】:2016-09-16 21:56:26
【问题描述】:
我正在尝试制作一个输出给定三次方程的根的程序。因此,我决定使用三次公式 (http://www.math.vanderbilt.edu/~schectex/courses/cubic/) 制作一个版本。这个公式应该能够输出其中一个根的结果。
但是,它似乎不起作用,我不确定是代码还是想法有缺陷。此处的系数 1、-6、11 和 -6 应创建 1、2 或 3 的输出。而是输出 NaN。这同样适用于我尝试使用的其他系数。感谢您的所有帮助!
public class CubicFormula {
public static void main(String[] args) {
System.out.println(new CubicFormula().findRoots(1.0, -6.0, 11.0, -6.0));
}
public double findRoots(double a, double b, double c, double d) {
double p = -(b)/(3*a);
double q = Math.pow(p, 3) + (b*c - 3*a*d)/(6*Math.pow(a, 2));
double r = c/(3*a);
return Math.cbrt(q + Math.sqrt(Math.pow(q, 2.0) + Math.pow((r - Math.pow(p, 2.0)), 3)))
+ Math.cbrt(q - Math.sqrt(Math.pow(q, 2.0) + Math.pow((r - Math.pow(p, 2.0)), 3))) + p;
}
}
【问题讨论】:
标签: java polynomial-math