我一直在努力简化
exp(2*I*N) - 1)**2/((exp(2*I*N) - 1)**2 - 4*exp(2*I*N)*cos(N)**2)
答案应该是 (sin N)^2,但输出与输入相同。
我尝试了 .rewrite(cos)
然后简化、trigsimp、扩展和几乎所有我可以从帮助资源中快速发现的东西。
最佳答案
用 exp
而不是 cos
重写更有帮助:
expr.rewrite(exp).simplify()
返回 -cos(2*N)/2 + 1/2
,这显然等同于 sin(N)**2
。用
expr.rewrite(exp).simplify().trigsimp()
获取 sin(N)**2
旧答案,可能仍然有值(value):您可能认为 N
是真实的,所以让我们这样声明它。
鉴于混合了复杂的指数函数和三角函数,使用 as_real_imag()
可能有助于分离实部和虚部。直接应用除了放置 re(...) 和 im(...) 之外没有做太多事情,因此建议首先以指数形式重写并扩展正方形/乘积:
N = symbols('N', real=True)
expr = (exp(2*I*N) - 1)**2/((exp(2*I*N) - 1)**2 - 4*exp(2*I*N)*cos(N)**2)
result = [a.trigsimp() for a in expr.rewrite(cos).expand().as_real_imag()]
结果:[sin(N)**2, 0]
,表示表达式的实部和虚部。它可以用 result[0] + I*result[1]
重新组合成一个表达式。
关于python - 简化时 SymPy 中的指数到三角转换 - 一个顽固的表达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52722676/