2016-03-15 52 views
0

我正在嘗試使用公式創建一個二次型計算器,並且我不斷收到一個數學域錯誤。我們在這裏我的代碼:數學域錯誤Python

# coding: utf-8 

from math import sqrt 
a = 3 
b = 9 
c = 2 

appaul = ((-1 * b) + sqrt((b ** 2) * (-4 * a * c)))/2 

print appaul 
+5

您正在使用負數的sqrt。 'b^2 - 4ac < 0' =>沒有解決方案! – gtlambert

+1

您的二次公式中的錯字 - 應該是'(b ** 2) - (4 * a * c)',而不是相乘的項。 – whrrgarbl

+2

嘗試'從cmath導入sqrt' - 它可以讓你操作複雜的數字。 –

回答

-1

ü應使用開方從CMATH像Rogalki的答案或u弄亂檢查,delta不是你的計算研究

+0

是delta正數。但請記住:另一種情況可能是三角洲負面。新的配方再次出現錯誤 – qvpham

1

的修正你的代碼(Python 3中)之前負:

編碼:UTF-8

from math import sqrt 

a = 3 

b = 9 

c = 2 

appaul = (-b + sqrt(b**2 - 4*a*c))/2*a 

print(appaul) 
0
appaul = ((-1 * b) + sqrt((b ** 2) - (4 * a * c)))/2 

b^2 - 4AC,非b^2 * 4AC。

0

-應該來外

>>> appaul = ((-1 * b) + sqrt((b ** 2) - (4 * a * c)))/2 
>>> print appaul 
-0.725082782365 
0

這是一個負數。你正在試圖找到它的平方根。

(b ** 2) * (-4 * a * c) 

要看到它的效果,在執行這個

num = (b ** 2) * (-4 * a * c) 
print num 
appaul = ((-1 * b) + sqrt(num))/2  
print appaul 

結果 -

-1944 
Traceback (most recent call last): 
    File "solution.py", line 118, in <module> 
    appaul = ((-1 * b) + sqrt(num))/2 
ValueError: math domain error 

開頭的負數就是你正在努力尋找的平方根數。