Rozwiązywanie równań kwadratowych w Javie

0

Witam. Jestem amatorem z programowania. Mam za zadanie zrobić program liczący podane równanie za pomocą delty. Problem w tym że program który napisałem tą deltę liczy źle... Ktoś mógłby pomóc?

  public static void main(String[] args) {
        
        int a = 1;
        int b = -2;
        int c = -8;
        int d1;
        int d2;
        int d3;
        int d4;
        int f;
        int x1;
        int x2;
        d1 =b^2;//4
        d2= -4*a;  
        d4= d2*c;  //32
        d3= d1+d4;   //36
        
        
        if (d3<0)
             System.out.println(" Delta Ujemna"); 
        else
            System.out.println((int)d3); 
        
        f= (int) +Math.sqrt(d3);
        System.out.println(f); 
        x1=(int) ((-b-f)/2*a);
        x2=(int) ((-b+f)/2*a);
       System.out.println(x1); 
       System.out.println(x2);'  

'

0

EDIT
Kiedy zamieniłeb b^2 na b*b to program zaczął działać. Tylko teraz pytanie czemu?

0
 x1=(int) ((-b-f)/(2*a));
x2=(int) ((-b+f)/(2*a));
0

Po co tyle zmiennych? Dlaczego są typu int? Po co bezsensowne konwersje na typ int? ^ nie jest operatorem potęgowania. Przypomnij sobie też wzory na pierwiastki równania.

public class Delta
{
    public static void main(String[] args)
    {    
        int a = 1;
        int b = -2;
        int c = -8;
        double d1;
        double d2;
        double d3;
        double d4;
        double f;
        double x1;
        double x2;
        d1 = b*b;//4
        d2= -4*a;  
        d4= d2*c;  //32
        d3= d1+d4;   //36
 
 
        if (d3<0)
             System.out.println(" Delta ujemna"); 
        else
        {
            System.out.println((int)d3); 
 
            f = Math.sqrt(d3);
            System.out.println(f); 
            x1 = (-b-f)/(2*a);
            x2 = (-b+f)/(2*a);
            System.out.println(x1); 
            System.out.println(x2);
        }
    }
}
0

Dałem tyle zmiennych ponieważ kombinowałem kiedy mi źle deltę liczyło. Myślałem że jak proces liczenia delty podzielę na kilka kroków wtedy być może będzie działać. Czemu są typu int? Ponieważ miał to być program do liczenia określonego równania, a w tym równaniu były same liczby całkowite... Odnośnie wzorów na pierwiastki równania to co mam sobie przypomnieć?
x1/2=(-b-/+Delta^1/2)/2*a . Ja po prostu za pierwiastek z delty przyjąłem f... Jak gdzieś się mylę to wyprowadźcie mnie z błędu...

0

x1/2=(-b -/+ Delta^(1/2) ) / (2*a) ...

0

Jeśli to jest program do rozwiązywania konkretnego równania, to dlaczego dzielisz przez 2*a, a nie przez 2? Przecież a=1. I dlaczego sprawdzasz znak delty? Sprawdzenie jest błędne, jeśli delta będzie ujemna, to Twój kod będzie mimo wszystko liczył pierwiastek z delty.
4/2*2 != 4/(2*2)
Btw, równania się rozwiązuje, a nie liczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1