所以我是编码python的新手,所以我决定尝试制作二次方程求解器。输入所有用户输入的变量后,我收到此错误:
Traceback (most recent call last):
File "C:/Users/insertnamehere/Desktop/quadratic formula solver.py", line 6, in <module>
root=math.sqrt((b**2)-4*a*c)
ValueError: math domain error
我的代码是:
import math
a=float(input("A?: "))
b=float(input("B?: "))
c=float(input("C?: "))
root=math.sqrt((b**2)-4*a*c)
x=(-b+root)/2*a
x2=(-b-root)/2*a
print(x)
print(x2)
任何帮助都会受到很多赞赏。
编辑: 忘了添加我输入的实际值。
A?: 6
B?: 1
C?: 2
答案 0 :(得分:3)
Python可以处理复数,但math
模块不会执行负数的平方根,因为您需要使用cmath。
演示:
#!/usr/bin/env python
import cmath
a = 1.0
b = 1.0
c = 1.0
root = cmath.sqrt(b * b - 4.0 * a * c)
x1 = (-b + root) / (2.0 * a)
x2 = (-b - root) / (2.0 * a)
print x1
print x2
<强>输出强>
(-0.5+0.866025403784j)
(-0.5-0.866025403784j)
尽管i
通常被数学家用作负数平方根的符号,但Python使用j
;这种惯例在电子工程师中很常见,因为他们使用i
来表示当前。
所以上面的输出等于(-1±sqrt(-3))/ 2
答案 1 :(得分:1)
这是一个基本的第9个毕业数学问题:
二次方程并不总是具有实值解,因为你不能取负数的平方根。您输入的二次方程的值很难在实数内求解。
编辑:你发布了你的价值观:
那么,是(1 2 - 2 * 6 * 2)的平方根?你无法在实际数字中找到该问题的解决方案,也不能用python,这就是为什么它会给你一个数学域错误。
这样看:6x²+ x + 2 = 0真的没有真正的解决方案。提示:查看graph