【问题标题】:Sympy absolute value of complex exponentialSympy 复指数的绝对值
【发布时间】:2014-06-05 13:53:23
【问题描述】:

在处理极坐标形式的复数时,我遇到了一种奇怪的行为。例如,做

from sympy import *
simplify(Abs(exp(I)))

我希望结果为 1,因为如果指数只是虚数,则复指数的绝对值应该始终为 1。但是,sympy 给出了答案

Abs(exp(I))

做选择

phi=symbols('phi', real=True)
y=exp(I*phi)
sqrt(y*conj(y))

给出了预期的结果,但在我看来不如 abs 清晰。我是否错过了一些限制,阻止 sympy 在仅使用 abs 时执行这种简化?

【问题讨论】:

  • simplify 不是为了执行计算,我猜?
  • 嗯,为什么?简化是否存在也无关紧要。

标签: python sympy simplification


【解决方案1】:

simplify 在这方面肯定会更聪明。

一般来说,要使用复数简化事情,请使用expand_complex,它会尝试将表达式重写为a + b*I,其中ab 是实数。这对我有用。

In [17]: (abs(exp(I))).expand(complex=True)
Out[17]:
   ___________________
  ╱    2         2
╲╱  cos (1) + sin (1)

In [18]: simplify(abs(exp(I)).expand(complex=True))
Out[18]: 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多