Python 如何避免复杂分数的同态化简

Python 如何避免复杂分数的同态化简,python,python-3.x,sympy,Python,Python 3.x,Sympy,我在玩SymPy,出于可读性和解释的目的,我想打印一个分母中有虚数的分数(Euler的sin x公式),但每次1/(2j)减少到-0.5j,不管我写什么 有趣的是,如果没有j,分数就不会减少。 下面是一个例子: cosx = (sp.exp(1j * x) + sp.exp(-1j * x))/2 num = sp.exp(1j * x) - sp.exp(-1j * x) sinx = sp.sympify(num/(sp.S(2j)), evaluate=False) 使用sp.pprin

我在玩SymPy,出于可读性和解释的目的,我想打印一个分母中有虚数的分数(Euler的sin x公式),但每次1/(2j)减少到-0.5j,不管我写什么

有趣的是,如果没有
j
,分数就不会减少。 下面是一个例子:

cosx = (sp.exp(1j * x) + sp.exp(-1j * x))/2
num = sp.exp(1j * x) - sp.exp(-1j * x)
sinx = sp.sympify(num/(sp.S(2j)), evaluate=False)
使用
sp.pprint()
cosx是按我想要的方式打印的,而sinx给了我刚才所说的问题。
正如你所看到的,我尽我所能避免这种情况,但它仍然给了我
-0.5*I

我甚至尝试过这种愚蠢的方式,类似于Symphy文档中的一个例子:

sinx = sp.Mul(1, sp.Rational(num, 2j), evaluate=False)
但这给了我sp.Rational的TypeError

那么:如何保持这个虚数为分母呢