为什么我的 python 求解二次公式的代码会这样?
Why is my python code to solve a quadratic formula doing this?
所以我在编码方面是一个新手 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
这是一个基本的 9 年级数学问题:
二次方程并不总是有实值解,因为您不能对负数求平方根。您输入的二次方程的值无法用实数求解。
编辑:您发布了您的价值观:
那么, (1² - 2*6*2) 的平方根是多少?您无法在该问题的实数中找到解决方案,python 也不能,这就是它给您数学域错误的原因。
这样看:6x² + x + 2 = 0 确实无解。提示:查看 graph
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
所以我在编码方面是一个新手 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
这是一个基本的 9 年级数学问题:
二次方程并不总是有实值解,因为您不能对负数求平方根。您输入的二次方程的值无法用实数求解。
编辑:您发布了您的价值观:
那么, (1² - 2*6*2) 的平方根是多少?您无法在该问题的实数中找到解决方案,python 也不能,这就是它给您数学域错误的原因。
这样看:6x² + x + 2 = 0 确实无解。提示:查看 graph
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