Sympy:如何简化包含 exp(I*x) 的表达式

Sympy: How to simplify expression containing exp(I*x)

我想实现这种简化: sqrt(2)*sqrt(pi)*(p**2 + (-p**2 + 4*pi**2)*exp(2*I*p) - 4*pi**2)*exp(-I*p)/(p**2 - 4*pi**2)**2=-2*I*sqrt(2*pi)*sin(p)/(p**2 - 4*pi**2)

但是,sympy.simplify 不能简化这个表达式:

f=sqrt(2)*sqrt(pi)*(p**2 + (-p**2 + 4*pi**2)*exp(2*I*p) -\
 4*pi**2)*exp(-I*p)/(p**2 - 4*pi**2)**2
print(sympy.simplify(f))
#sqrt(2)*sqrt(pi)*(p**2 + (-p**2 + 4*pi**2)*exp(2*I*p) - 4*pi**2)*exp(-I*p)/(p**2 - 4*pi**2)**2

如何用 SymPy 简化这个表达式?

另外,我不想用Piecewise((sqrt(2)*I/(2*sqrt(pi)), Eq(p, -2*pi))...)

稍微按摩一下表情。你知道,对于分数,你通常会分解它们,然后取消同类项。然后你简化之后:

from sympy import *

p = Symbol("p", real=True)
f = sqrt(2)*sqrt(pi)*(p**2 + (-p**2 + 4*pi**2)*exp(2*I*p) - 4*pi**2)*exp(-I*p)/(p**2 - 4*pi**2)**2
f = simplify(expand(cancel(factor(f))))
print(f)

给予

-2*sqrt(2)*I*sqrt(pi)*sin(p)/(p**2 - 4*pi**2)