【发布时间】:2021-03-01 18:06:04
【问题描述】:
我使用 sympy 用虚数指数项 (exp(i.a)) 进行符号计算,但我在简化方面遇到了问题。 例如,我得到了以下函数(经过一些哈密顿对角化和时间演化,这不是本题的问题):
import sympy as sp
w, th, t =sp.symbols("omega theta t", real=True)
myFunc = (sp.exp(sp.I*w*t)*sp.sin(th)**2 + sp.exp(-sp.I*w*t)*sp.cos(th)**2)*(sp.exp(sp.I*w*t)*sp.cos(th)**2 + sp.exp(-sp.I*w*t)*sp.sin(th)**2) + sp.sin(2*th)**2*sp.sin(w*t)**2
在计算过程中,sin(w.t) 和 cos(w.t) 项是由 exp(-i.wt) 和 exp(i.wt) 隐式生成的。这个是正常的。但是,我无法使用 https://docs.sympy.org/latest/tutorial/simplification.html 中的不同方法来简化它们。
然而,在上面的例子中,如果 sinus(wt) 被明确地替换为 (exp(iwt)-exp(-iwt)) /(2.i))
firstStep=myFunc.subs(sp.sin(w*t),((sp.exp(sp.I*w*t)-sp.exp(-sp.I*w*t))/(2*sp.I)))
(sp.simplify(firstStep)) 按预期输出 1。
是否有一些 sympy 函数可以直接简化这些表达式,其中包含 exp(i.wt)、exp(-i.wt) 项与 sin(wt)、cos(wt) 项混合?
感谢回答
【问题讨论】:
标签: sympy