【问题标题】:python strange result using math.fmod()python 使用 math.fmod() 的奇怪结果
【发布时间】:2014-12-25 18:32:32
【问题描述】:

我正在使用 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是什么? 它是像 i 这样的虚数吗? 如果是这样,为什么是 j 而不是 i? 非常欢迎任何信息以及指向有关 fmod 的一些资源的链接。

【问题讨论】:

  • 虚数表示为a+bj 而不是a+bi
  • ij 只是表示复数单元的符号选择,i 更多用于数学,j 更多用于工程。
  • 是的,这是电气工程的惯例(因为i 看起来很像1 打字书写)。您可以在SO thread 中阅读更多内容

标签: python modulus


【解决方案1】:

你得到的结果是一个complex number,因为你取了一个负数。 ij 只是表示imaginary number uniti 更多用于数学和j 更多用于工程的符号选择。你可以在文档中看到 Python 选择使用j

https://docs.python.org/2/library/cmath.html#conversions-to-and-from-polar-coordinates

【讨论】:

    【解决方案2】:

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

    在您的情况下出现复数的原因是您将负数提高到分数幂。更多讨论请参见How do you compute negative numbers to fractional powers?

    【讨论】:

      【解决方案3】:

      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”。现在,两者都被使用了。

      【讨论】:

        猜你喜欢
        • 2016-01-22
        • 2016-07-26
        • 1970-01-01
        • 2022-10-06
        • 2010-09-14
        • 2011-12-19
        • 1970-01-01
        • 1970-01-01
        • 2017-05-14
        相关资源
        最近更新 更多