我正在使用Python 3.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的一些资源的链接都是非常受欢迎的。
答案 0 :(得分:1)
您获得的结果是complex number,因为您取消了负数。 i
和j
只是表示imaginary number unit,i
在数学中使用更多且j
更多地用于工程的符号选择。您可以在Python选择使用j
:
https://docs.python.org/2/library/cmath.html#conversions-to-and-from-polar-coordinates
答案 1 :(得分:0)
此处j
与i
的平方根-1
相同。这是工程中常用的惯例,其中i
用于表示电流。
在您的情况下出现复数的原因是您将负数提升到分数幂。有关进一步的讨论,请参阅How do you compute negative numbers to fractional powers?。
答案 2 :(得分:0)
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'混淆当前,所以他们使用'j'。现在,两者都被使用了。