见这个问题的一些背景知识。 我对这个问题的主要问题得到解决,并建议我问另外一个问题了,我有第二个问题:
print cubic(1, 2, 3, 4) # Correct solution: about -1.65
...
if x > 0:
TypeError: no ordering relation is defined for complex numbers
print cubic(1, -3, -3, -1) # Correct solution: about 3.8473
if x > 0:
TypeError: no ordering relation is defined for complex numbers
一个真正的根和两个复根三次方程收到一个错误,尽管我使用的CMATH模块定义的立方根函数来处理复杂的数字。 为什么是这样?
Python的错误信息是相当不错的,因为这些事情:不像某些语言,我可以提,他们不喜欢的字母随机集合。 所以当Python的抱怨比较
if x > 0:
那
TypeError: no ordering relation is defined for complex numbers
你应该把它在它的一句话:你想比较复杂的数字x
,看它是否是大于零,和Python不知道如何订购复数。 是2j > 0
? 是-2j > 0
? 等在模糊的脸,拒绝诱惑猜测。
现在,在特定情况下,你已经支就是否x.imag != 0
,所以你知道, x.imag == 0
,当你测试x
,你可以简单的实部,IIUC:
>>> x = 3+0j
>>> type(x)
<type 'complex'>
>>> x > 0
Traceback (most recent call last):
File "<ipython-input-9-36cf1355a74b>", line 1, in <module>
x > 0
TypeError: no ordering relation is defined for complex numbers
>>> x.real > 0
True
它不是从你的示例代码什么明确的x
是,但现在看来,这必须是一个复数。 有时,使用复杂的数值方法时,一个近似解将拿出作为,即使精确解应该是真正的复数。
复数没有自然排序,所以不等式x > 0
是没有意义的,如果x
是复杂的。 这是该类型的错误是什么。
文章来源: Why am I receiving a “no ordering relation defined for complex numbers” error?