Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的python代码要求解二次公式呢?_Python_Math - Fatal编程技术网

为什么我的python代码要求解二次公式呢?

为什么我的python代码要求解二次公式呢?,python,math,Python,Math,因此,我是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 erro

因此,我是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
任何帮助都将不胜感激

编辑: 忘记添加我输入的实际值

A?: 6
B?: 1
C?: 2

这是第九届毕业生的一个基本数学问题:

二次方程并不总是有实值解,因为不能求负数的平方根。您已经输入了一个二次方程的值,而这个二次方程无法在实数范围内求解

编辑:您发布了您的值:

那么,(1²-2*6*2)的平方根是什么?你无法找到这个问题的实数解,python也不能,这就是为什么它会给你一个数学域错误


这样看:6x²+x+2=0实际上没有真正的解决方案。提示:看看

Python可以处理复数,但是
数学
模块不会处理负数的平方根,因为您需要使用它

演示:

输出

(-0.5+0.866025403784j)
(-0.5-0.866025403784j)
虽然数学家通常使用
i
作为负一的平方根的符号,但Python使用
j
;这种惯例在电子工程师中很常见,因为他们用
i
来表示电流


因此,上述输出等于(-1±sqrt(-3))/2

您的代码缩进错误。请更正。为什么要导入随机的?很抱歉,我正计划添加一个随机生成的二次函数,并将解决它所需的步骤显示为另一个功能。至于缩进,这只是将代码放到这篇文章中的一个错误。你了解建议的解决方案吗?是的,我现在意识到输入的数据是导致问题的原因,我应该自己想一个,而不是在谷歌上搜索样本。我明白了,谢谢你的帮助。我将改用cmath模块重写这个。哦,@Debus:很抱歉我误判了你。我假设你不知道复数。我不知道python有一个cmath模块和一个数学模块,现在正在阅读cmath的文档。@Debus:如果你喜欢我的答案,你可以选择它。这样,人们就会知道你的问题得到了令人满意的回答。我们都会得到一些分数
#!/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)