【问题标题】:Sympy: How to simplify expression containing exp(I*x)Sympy:如何简化包含 exp(I*x) 的表达式
【发布时间】:2020-06-24 07:24:50
【问题描述】:

我想实现这种简化: 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))...)

【问题讨论】:

    标签: sympy simplify


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      相关资源
      最近更新 更多