数学域错误Python
我试着用这个公式做一个二次计算器,但我一直得到一个数学域错误。这是我的代码:数学域错误Python,python,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 您应该使用cmath的sqrt,就像Rogalki或u muss check的答案一样,在您计算之前,增量不是负数(Python3): 编码:utf-8 b^2-4
# 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
您应该使用cmath的sqrt,就像Rogalki或u muss check的答案一样,在您计算之前,增量不是负数(Python3): 编码:utf-8
b^2-4ac,而不是b^2*4ac 你的
-
应该到外面来
>>> appaul = ((-1 * b) + sqrt((b ** 2) - (4 * a * c))) / 2
>>> print appaul
-0.725082782365
这是一个负数。你们正试图找到它的平方根
(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
-1944
回溯(最近一次呼叫最后一次):
文件“solution.py”,第118行,在
appaul=(-1*b)+sqrt(num))/2
ValueError:数学域错误
开头的负数是您试图求其平方根的数。您取的是负数的平方比
b^2-4ac<0
=>你的方程没有解!二次公式中的输入错误-应该是(b**2)-(4*a*c)
,而不是将术语相乘在一起。请尝试使用cmath import sqrt中的-它将允许您对复数进行运算。@gtlambert 9^2-4*3*2大于0,尽管OP的输入错误使其为负值。对于他的情况,它是增量正值。但请记住:对于另一种情况,可能是delta阴性。用新的公式,你又犯了错误
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