2016-03-15 98 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 

开头的负数就是你正在努力寻找的平方根数。