Я пытаюсь сделать программу, которая выводит корни данного кубического уравнения. Поэтому я решил сделать версию с использованием кубической формулы (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;
}
}
В дополнение к отмене мнимых частей для реальных корней корни куба, возможно, должны быть сложными (полярными) корнями в зависимости от варианта используемой формулы. (т. е. 'cbrt (-1)' должно быть '-0.5 + sqrt (3) i' вместо' -1'.) – Mysticial