2016-10-15 9 views
0

その後、私はそれを別の時間を走った、そしてそれは私に次のエラーを与えた、私はpythonの二次方程式の解法を書いて、それがうまく働いた。二次式のソルバーエラー

Traceback (most recent call last): 
    File "/Users/brinbrody/Desktop/PythonRunnable/QuadraticSolver.py", line 18, in <module> 
    rted = math.sqrt(sqb-ac4) 
ValueError: math domain error 

は、ここに私のコードです:

#Quadratic Formula Solver 

#Imports 
import math 

#User Inputs 
a = int(input("a = ")) 
b = int(input("b = ")) 
c = int(input("c = ")) 

#Variables 
sqb = b**2 
ac4 = 4*a*c 
a2 = 2*a 
negb = 0-b 

#Calculations 
rted = math.sqrt(sqb-ac4) 
top1 = negb + rted 
top2 = negb - rted 
low1 = round(top1/a2, 2) 
low2 = round(top2/a2, 2) 

#Output 
print("Possible Values of x:") 
print("1.",low1) 
print("2. ",low2) 

このエラーは、私が試したすべての入力と一致しています。

+3

これは、SQB-ac4'がマイナスであること 'によるものです。 – xli

+1

少なくとも1つの入力例にこのエラーを発生させる必要があります。 – dkasak

+0

あなたの決定因子b * b - 4 * a * cは負であるため、あなたの方程式には根(解)がありません。これをテストする必要があります。根がない場合は、放物線全体がx軸の上または下に横たわっています。 –

答えて

0

xliは、sqb-ac4が負の値を返しているため、Pythonの数学モジュールは負の値の平方根をとることができません。

この問題を解決する方法は次のとおりです。

import sys 
determin = sqb - ac4 
if determin < 0: 
    print("Complex roots") 
    sys.exit() 
else: 
    rted = math.sqrt(determin) 
+0

ありがとうございます。完璧に働いた。 –