2017-01-23 19 views
0

私は、2次方程式を解いて根を印刷するプログラムを作っています。私がメインプログラムに入る前に、私は平方根を作ろうとしています。私が得ているエラーは、 "数学的なドメインのエラー"と言います。誰かが私に助けをして、それがうまくいかない理由について助けてくれたらそれはすばらしいことです。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

おそらく、負の数にevaulateする値を入力します。 '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)== i(またはある意味ではj)の複素数の数学。しかし、あなたが二次方程式を学習しているという事実を考えると、今は複素数を学ぶ必要はないでしょう。 b ** 2 - 4 * a * c> = 0をテストするだけです。> 0の場合は2つの解を見つけます。== 0なら1つの解を見つけることができます。そして確かにx1 = intとx2 = intはあなたをどこにも連れません。 –

関連する問題