Решение кубической формулы Java - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь создать программу, в которой при вставке входных данных для переменных она решает корни. Вот что у меня сейчас есть:

import javax.swing.JOptionPane;

public class perfTaskTest
{
    public static void main(String[]args)
    {
        double a = 0;
        double b = 0;
        double c = 0;
        double d = 0;
        double root1, root2, root3, rootsTester, place, place2, place3;
        String Input;
        Input = JOptionPane.showInputDialog(null, "What is your a value?");
        try{
            a = Integer.parseInt(Input);
        }
        catch(NumberFormatException e)
        {
            JOptionPane.showMessageDialog(null, "Not a number. Try again.");
            System.exit(0);
        }

        Input = JOptionPane.showInputDialog(null, "What is your b value?");
        try{
            b = Integer.parseInt(Input);
        }
        catch(NumberFormatException e)
        {
            JOptionPane.showMessageDialog(null, "Not a number. Try again.");
            System.exit(0);
        }
        Input = JOptionPane.showInputDialog(null, "What is your c value?");
        try{
            c = Integer.parseInt(Input);
        }
        catch(NumberFormatException e)
        {
            JOptionPane.showMessageDialog(null, "Not a number. Try again.");
            System.exit(0);
        }
        Input = JOptionPane.showInputDialog(null, "What is your d value?");
        try{
            d = Integer.parseInt(Input);
        }
        catch(NumberFormatException e)
        {
            JOptionPane.showMessageDialog(null, "Not a number. Try again.");
            System.exit(0);
        }
        place = Math.cbrt((((Math.pow(-b,3)/(27*Math.pow(a,3))) +
                (((b*c)/(6*Math.pow(a,2))) -((b)/(a*2))))));

        place2 = (Math.sqrt(Math.pow((((Math.pow(-b,3))/(27*Math.pow(a,3))) +
                (((b*c)/(6*Math.pow(a,2))) -((d)/(2*a)))), 2)+(Math.pow((((c)/(3*a))-
                        ((b*b)/(9*a*a))),3))));

        System.out.println(place);
        System.out.println(place2);
    }
}

В настоящее время он не выводит правильное место2, и я не знаю, почему он не вычисляет его правильно (возможно, скобки).

Уравнение, которое я использую:

image

...