当执行Sympify时,将切换表达式的顺序(Python的Sympy)

时间:2019-06-03 01:50:20

标签: python math sympy mathjax mathml

我运行了以下程序

from sympy import *

str = "Abs(a)*(β-α)**3/6"
print(str)
print(sympify(str))

执行结果如下。

Abs(a)*(β-α)**3/6
(-α + β)**3*Abs(a)/6

由于执行sympify,表达式的顺序已更改。

我要匹配执行结果,如下所示。

Abs(a)*(β-α)**3/6
Abs(a)*(β-α)**3/6

我该怎么办?


我要执行此操作的原因是,在将表达式转换为mathml格式时,我不想让它看起来很奇怪。

str = "Abs(a)*(β-α)**3/6"
print(mathml(sympify(str),printer='presentation'))

执行上述程序时,将输出以下内容。

<mrow><mfrac><mrow><msup><mfenced><mrow><mrow><mo>-</mo><mi>&#945;</mi></mrow><mo>+</mo><mi>&#946;</mi></mrow></mfenced><mn>3</mn></msup><mo>&InvisibleTimes;</mo><mrow><mfenced clos
e="|" open="|"><mi>a</mi></mfenced></mrow></mrow><mn>6</mn></mfrac></mrow>

如下图所示。

enter image description here

我希望公式看起来像下图。

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您将以下差异应用于SymPy,我认为您的案例会起作用:

b - a

(此更改将打印-a + b而不是excel。)