使用math.fmod()的python奇怪结果

使用math.fmod()的python奇怪结果,python,modulus,Python,Modulus,我正在玩弄Python3.4中的数学模块,在使用fmod函数时,我得到了一些奇怪的结果,我很难从Python网站上获得详细信息 一个简单的例子如下: from math import * x = 99809175801648148531 y = 6.5169020832937505 sqrt(x)-cos(x)**fmod(x, y)*log10(x) 它返回: (9990454237.014296+8.722374238018135j) 如何解释这一结果?什么是j? 它是一个像我一样的虚

我正在玩弄Python3.4中的数学模块,在使用fmod函数时,我得到了一些奇怪的结果,我很难从Python网站上获得详细信息

一个简单的例子如下:

from math import *

x = 99809175801648148531
y = 6.5169020832937505
sqrt(x)-cos(x)**fmod(x, y)*log10(x)
它返回:

(9990454237.014296+8.722374238018135j)
如何解释这一结果?什么是j? 它是一个像我一样的虚数吗? 如果是,为什么是j而不是我?
非常欢迎您提供有关fmod的任何信息以及一些参考资料的链接。

您得到的结果是a,因为您将负数幂化
i
j
仅仅是表示的符号选择,
i
更多地用于数学,
j
更多地用于工程。您可以在Python选择使用的文档中看到:


这里,
j
i
相同,
-1
的平方根。这是工程中常用的惯例,其中
i
用于表示电流

在你的例子中出现复数的原因是你把一个负数提升到分数次幂。有关详细讨论,请参阅。

cos(x)是负数。当你将一个负数提升到一个非整数次方时,得到一个复杂的结果并不奇怪。负数的大多数根是复杂的

>>> x = 99809175801648148531
>>> y = 6.5169020832937505

>>> cos(x)
-0.7962325418899466
>>> fmod(x,y)
3.3940870272073056
>>> cos(x)**fmod(x,y)
(-0.1507219382442201-0.436136801343955j)

虚数可以用“i”或“j”表示。我相信原因是历史的。数学家更喜欢用“i”来表示想象。电气工程师不想把电流的“i”和“i”混淆起来,所以他们使用了“j”。现在,两者都被使用。

虚数被表示为
a+bj
,而不是
a+bi
i
j
只是表示复数单位的符号选择,
i
更多地用于数学,
j
更多地用于工程。是的,这是电气工程的惯例(因为在打字时,
i
看起来很像
1
)。你可以在这本书里读到更多