我一直在尝试简化
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)
,然后使用simplify、trigsimp、expand以及从帮助源中快速发现的所有方法。
使用exp
替代cos
的重写方式更有帮助:
expr.rewrite(exp).simplify()
返回 -cos(2*N)/2 + 1/2
,它明显等价于 sin(N)**2
。使用以下方法进行清理:
expr.rewrite(exp).simplify().trigsimp()
求得 sin(N)**2
。
旧答案,仍有价值:您可能希望将 N
声明为实数。
由于涉及复指数和三角函数,使用 as_real_imag()
分离实部和虚部可能会有所帮助。但是,在直接应用之前,先进行指数的重写和平方/乘积的展开是可取的:
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]
。