2016-10-15 6 views
0

내가 파이썬 이차 방정식 솔버를 쓰고 있어요, 그리고 그것을 잘 작동 된 후 나는 또 다른 시간을 달리고, 그것은 나에게 다음과 같은 오류 준 : 여기 는 이차 수식 솔버 오류

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

이 오류가 발생한 입력을 하나 이상 입력해야합니다. – dkasak

+0

결정자 b * b - 4 * a * c가 음수이므로 방정식에 뿌리가 없습니다 (해답). 이것을 시험해야합니다. 뿌리가 없다면 포물선 전체가 x 축 위나 아래에 놓입니다. –

답변

0

xli에 따르면 이것은 음수 값을 반환하는 sqb-ac4이 원인이며 파이썬 수학 모듈은 음수 값의 제곱근을 취할 수 없습니다.

이 문제를 해결하는 방법은 :

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

감사합니다. 완벽하게 일했습니다. –