Sympy 简化欧拉公式不起作用

Sympy simplify Euler's formula not working

我正在做物理作业并尝试使用欧拉公式简化表达式。最小的无效示例如下所示。

from sympy import *
x, phi = symbols("x varphi", real=True)

simplify(x * (E**(I*phi) + E**(-I*phi)))

我的 Jupiter 笔记本输出完全相同的东西

而使用欧拉公式的期望表达式是

不过,sympy其实知道如何用欧拉公式来表示余弦函数,因为去掉x后它输出的简化表达式很好:

simplify(E**(I*phi) + E**(-I*phi))

给予

由于乘法的分配律 属性 适用于复数,我不明白为什么 sympy 无法计算出第一个表达式的所需简化。

可能是设计使然。作为解决方法,您可以执行

expr=x* (E**(I*phi) + E**(-I*phi))
expr.rewrite(cos)

这给出了

2*x*cos(varphi)