2017-01-23 139 views
0

我正在製作一個解決二次方程並打印根的程序。在進入主程序之前,我只是試圖讓平方根起作用。我收到的錯誤說「數學域錯誤」。如果有人可以給我一些幫助,爲什麼它不工作,這將是偉大的。Python數學域錯誤

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

可能是您輸入的數值會變成負數。 'math.sqrt'不會給你複數。 – 098799

+0

行'x1 = int'和'x2 = int'不會做任何有用的事情。 – chepner

回答

0

已知sqrt在嘗試將其與負數一起使用時出現此錯誤。

結果很可能是一個複雜的號碼,如098799在註釋中規定,「math.sqrt不會給你複數」

而不是使用:

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

嘗試使用:

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

它與cmath,因爲它提供了訪問數學函數的複數。

+0

那麼cmath是什麼意思? – user3093377

+0

複雜的數學,其中sqrt(-1)==我(或某人說j)。但考慮到你只是學習二次方程,我認爲你現在不需要學習複數。你應該測試b ** 2 - 4 * a * c> = 0。如果它> 0,你會發現2個解決方案,如果它是== 0,你會找到一個解決方案。實際上x1 = int和x2 = int不會讓你在任何地方。 –