Sympy复指数的绝对值

jan*_*jan 5 python sympy simplification

当处理极地形式的复数时,我经历了一种奇怪的行为.例如,做

from sympy import *
simplify(Abs(exp(I)))
Run Code Online (Sandbox Code Playgroud)

我期望结果1,因为如果指数只是虚数,复指数的绝对值应该总是1.然而,sympy给出了答案

Abs(exp(I))
Run Code Online (Sandbox Code Playgroud)

做另的选择

phi=symbols('phi', real=True)
y=exp(I*phi)
sqrt(y*conj(y))
Run Code Online (Sandbox Code Playgroud)

给出了预期的结果,但在我看来不如绝对.我是否错过了一些限制,以防止只使用abs时症状执行此简化?

asm*_*rer 5

simplify 在这方面肯定可以更聪明。

通常,为了使用复数简化事情,请使用expand_complex,它试图将表达式重写为a + b*I、 whereabare real。这对我有用。

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
Run Code Online (Sandbox Code Playgroud)