SymPy中指数到三角函数的转换和化简 - 一个棘手的表达式

4

我一直在尝试简化

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以及从帮助源中快速发现的所有方法。

1个回答

4

使用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]


新的答案真是太棒了!第一个答案无法处理包含多个这样术语的表达式,但这个可以! - physicophilic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接