[Java] p-q-Formel | NaN (Not a Number)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Kritiker, 4. Februar 2010 .

Schlagworte:
  1. 4. Februar 2010
    p-q-Formel | NaN (Not a Number)

    hallo,

    ich bin kompletter anfänger in java und soll mit meinem bis jetzt begrenztem wissen eine klasse zur berechung der koeffizienten einer quadratischen gleichung ausrechnen. das gerüst steht soweit, nur wird mir am ende statt der einzelnen werte stets "NaN" (not a number) ausgegeben.

    mein programmcode:

    Code:
    import java.io.*;
    
    public class QuadratischeGleichungKoeffizienten{
    
     public static void main(String [] args) throws IOException{
     bestimmePUndQ();
     }
     
     public static void bestimmePUndQ() throws IOException{
     double p = 0;
     double q = 0;
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     System.out.println("\nWaehlen Sie p:\n");
     p = Double.parseDouble(br.readLine());
     System.out.println("\nWaehlen Sie q:\n");
     q = Double.parseDouble(br.readLine());
     System.out.print("\n\nx1 = " + berechneNullstelleX1(p,q));
     System.out.print("\t x2 = " + berechneNullstelleX1(p,q) + "\n\n");
     System.out.println("\nerneut berechnen? 0/1 (Nein/Ja)");
     int a = Integer.parseInt(br.readLine());
     fortsetzen(a);
     }
     
     public static double berechneNullstelleX1(double p, double q){
     double x1 = 0;
     x1 = 0.5-(p-(Math.sqrt((p*p)-(4*q))));
     return x1;
     }
    
     public static double berechneNullstelleX2(double p, double q){
     double x2 = 0;
     x2 = 0.5-(p+(Math.sqrt((p*p)-(4*q))));
     return x2;
     }
     
     public static void fortsetzen(int a) throws IOException{
     switch (a){
     case 1 :
     bestimmePUndQ();
     break;
     default :
     System.out.println("\nProgramm beendet...");
     break;
     }
     }
    }
    wo liegt der fehler?
     
  2. 4. Februar 2010
    AW: p-q-Formel | NaN (Not a Number)

    Math.sqrt((p*p)-(4*q)) mit p = 2, q = 3
    (p*p)-(4*q) = 4 - 12 = -8

    wurzel aus -8 is ne imaginäre zahl <- da haste deinen fehler

    Code:
    x1 = -p/2 + Math.sqrt( (p*p)/4 - q)
    
    so in etwa sollte die formel richtig sein
     
  3. 4. Februar 2010
    AW: p-q-Formel | NaN (Not a Number)

    Der Fehler ist nicht, dass NaN rauskommt. Bei manchen Werten kommt einfach kein richtiger Wert raus bei der P-Q-Formel.

    Abgesehen davon ist jedoch deine Formel zur Berechnung falsch. Richtig wäre sie so:

    Code:
    x1 = (-(p/2)) + Math.sqrt( ((p*p) / 4) - q);
    
    Bzw. für x2 mit einem - vor Math.sqrt.
     
  4. 4. Februar 2010
    AW: p-q-Formel | NaN (Not a Number)

    wenn du p quadrierst, dann auch die 2
     
  5. 4. Februar 2010
    AW: p-q-Formel | NaN (Not a Number)

    Tatsache, da war wieder die Flüchtigkeit
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.