输入的漂亮打印表达式

时间:2016-04-07 22:19:19

标签: sympy

我想打印一个表达式来仔细检查它是我想要的,没有任何操作或简化。这是一个简单的例子:

from sympy import *
import abc
init_session()

sigma_1, sigma_0, mu_1, mu_0,x = symbols("sigma_1 sigma_0 mu_1 mu_0 x")
diff = log(1/(sqrt(2*pi*sigma_1**2)) * exp(-(x-mu_1)**2/(2*sigma_1**2))) - log(1/(sqrt(2*pi*sigma_0**2)) * exp(-(x-mu_0)**2/(2*sigma_0**2)))
diff

enter image description here

这有点操纵了表达式,但我希望看到它按照我输入的顺序打印出来,所以我可以很容易地检查它已经记下来的公式。

有办法吗?

1 个答案:

答案 0 :(得分:1)

使用

可以避免一些简化
sympify("log(1/(sqrt(2*pi*sigma_1**2)) * exp(-(x-mu_1)**2/(2*sigma_1**2))) - log(1/(sqrt(2*pi*sigma_0**2)) * exp(-(x-mu_0)**2/(2*sigma_0**2)))", evaluate=False)

但是,有些简化是无法避免的。例如,无法以相同的顺序保留术语,而1/xx**-1等表达式在内部以相同的方式表示。话虽如此,肯定会有sympify(evaluate=False)可以改进的地方。