ValueError:数学域错误(对于二年级方程函数)

2023-12-07

我试图自己解决这个问题,但我不能。它是一个函数,用于求解 y=0 时的二年级方程,如“ax2+bx+c=0”。当我执行它时,它说我存在数学域错误。如果你能帮助我,那就太好了,谢谢。

a=raw_input('put a number for variable a:')    
b=raw_input('put a number for variable b:')    
c=raw_input('put a number for variable c:')

a=float(a)    
b=float(b)    
c=float(c)`

import math


x=(-b+math.sqrt((b**2)-4*a*c))/2*a    
print x`

x=(-b-math.sqrt((b**2)-4*a*c))/2*a`    
print x

PD:我从 python 开始,所以我很抱歉,这是一场灾难。


这里的问题是标准mathpython 中的库无法处理复杂变量。这sqrt你站在那里反映了这一点。

如果您想处理可能具有复杂变量的函数(例如上面的函数),我建议使用cmath library,其中有一个替换cmath.sqrt功能。

您可以将上面的代码更改为以下内容:

from cmath import sqrt

a = raw_input('put a number for variable a:')    
b = raw_input('put a number for variable b:')    
c = raw_input('put a number for variable c:')

a = float(a)    
b = float(b)    
c = float(c)`

x = (-b + sqrt((b**2) - 4 * a * c)) / 2 * a    
print x`

x = (-b - sqrt((b**2) - 4 * a * c)) / 2 * a`    
print x

它应该可以解决你的问题(我还做了一些编辑,使代码看起来更Pythonic(阅读:pep8 兼容))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ValueError:数学域错误(对于二年级方程函数) 的相关文章

随机推荐