2017-01-23 3 views
0

Ich mache ein Programm, das die quadratische Gleichung löst und die Wurzeln ausdruckt. Bevor ich zum Hauptprogramm komme, versuche ich nur, die Quadratwurzel zu arbeiten. Der Fehler, den ich bekomme, sagt "Math Domain Fehler". Wenn mir jemand helfen könnte, warum es nicht funktioniert, wäre das großartig.Python math Domänenfehler

import math 

    a = int(sys.argv[1]) 
    b = int(sys.argv[2]) 
    c = int(sys.argv[3]) 
    x1 = int 
    x2 = int 
    # variables into solving equation and assign answers 
    print(math.sqrt((b**2)-(4*a*c))) 
+4

Wahrscheinlich geben Sie Werte ein, die eine negative Zahl ergeben. 'math.sqrt' gibt dir keine komplexen Zahlen. – 098799

+0

Die Zeilen 'x1 = int' und' x2 = int' machen nichts Sinnvolles. – chepner

Antwort

0

Es ist bekannt, dass sqrt dieser Fehler gibt, wenn Sie versuchen, es mit einer negativen Zahl zu verwenden.

Das Ergebnis ist wahrscheinlich eine komplexe Zahl, und wie in den Kommentaren von 098799, "math.sqrt wird Ihnen keine komplexen Zahlen geben".

Statt mit:

import math 
print(math.sqrt((b**2)-(4*a*c))) 

Versuchen Sie es mit:

import cmath 
print(cmath.sqrt((b**2)-(4*a*c))) 

Es arbeitet mit cmath, weil sie den Zugang zu mathematischen Funktionen für komplexe Zahlen liefert.

+0

Was bedeutet cmath? – user3093377

+0

Komplexe Mathematik, in der sqrt (-1) == i (oder j wie manche sagen). Aber angesichts der Tatsache, dass Sie gerade quadratische Gleichungen lernen, glaube ich nicht, dass Sie jetzt komplexe Zahlen lernen müssen. Sie sollten nur testen, dass b ** 2 - 4 * a * c> = 0. Wenn es> 0 ist, werden Sie 2 Lösungen finden, wenn es == 0 ist, werden Sie eine Lösung finden. Und tatsächlich wird x1 = int und x2 = int dich nirgendwohin bringen. –