Мнимые числа - PullRequest
       62

Мнимые числа

1 голос
/ 05 августа 2011

У меня есть метод, который занимает 3 double с и вычисляет корни по квадратичной формуле:

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) я получу абсолютное значение дискриминанта и вычислю радикал. Я собираюсь вывести корни пользователю, так что не беспокойтесь о i , у меня есть анализатор String, который точно знает, куда поместить i . Есть идеи по поводу более эффективного метода?

1 Ответ

3 голосов
/ 05 августа 2011

Если вы действительно хотите начать использовать комплексные / мнимые числа, я бы предложил реализовать класс, представляющий комплексное число.

Пример этого можно найти здесь: http://www.math.ksu.edu/~bennett/jomacg/c.html

Если вы каким-то образом построите свои расчеты из смеси значений типа double, массивов и строк, через некоторое время это определенно станет грязным.

...