想象中的数字

时间:2011-08-05 16:02:41

标签: java math complex-numbers quadratic

我有一个方法需要3 double s并通过二次公式计算根:

public static double[] quadraticFormula(double a, double b, double c) throws ArithmeticException {
    double root1 = 0;
    double root2 = 0;

    //sqrt(b^2 - 4ac)
    double discriminant = (b * b) - (4 * a * c);

    if (Double.isNaN(discriminant)) {
        throw new ArithmeticException(discriminant + " is not a number!");
    }

    if (discriminant > 0) {
        //Two roots
        root1 = (-b + Math.sqrt(discriminant)) / (2 * a);
        root2 = (-b - Math.sqrt(discriminant)) / (2 * a);
    } else if (discriminant == 0) {
        //One root
        root1 = (-b + Math.sqrt(discriminant)) / (2 * a);
    } else if (discriminant < 0) {
        //Imaginary roots
    }

    return new double[] { root1, root2 };
}

我想对此进行扩展并添加对虚数的支持。我怎么做到这一点?我的第一个想法是,在else if (discriminant < 0)中,我会得到判别式的绝对值和因子。我要将root输出给用户,所以不要打扰 i ,我有一个String解析器,它确切地知道放置 i 的位置。有关更有效方法的任何想法吗?

1 个答案:

答案 0 :(得分:3)

如果您真的想要使用复杂/虚构数字,我建议您实现一个代表复数的类。

这方面的例子可以在这里找到: http://www.math.ksu.edu/~bennett/jomacg/c.html

如果你以某种方式建立你的双打,数组和字符串混合的计算,它会在一段时间后变得凌乱。