Prevent Sympy from rearranging the equation

假如想象 提交于 2019-11-26 18:34:33

问题


Perhaps im overlooking the obvious but how do you prevent sympy from rearranging equations?

Im using Sympy in the iPython notebook so i can easily copy-paste the Latex code to Lyx, but i want the equations in the same order as i defined them.

For example, the formula for grey-body radiation as a function of its temperature:

Sympy automatically places the Temperature component to the front, which gives a very unusual representation of the formula. Is there anyway to prevent this?


回答1:


Currently, there is no way in SymPy to print things exactly as they are entered, because that information isn't even saved anywhere.

I believe in a multiplication, symbols are ordered alphabetically, with capital letters coming before lowercase letters (basically, the order from ord). The best trick I can come up with is to use the symbol_names option to latex, which lets you change the name used for a Symbol in its LaTeX representation. The ordering will still be based on the original symbol's name, so you can trick it:

>>> from sympy.abc import epsilon, omega, t
>>> latex(epsilon*sigma*t**4, symbol_names={t:"T"})
\epsilon \sigma T^{4}

If you want this to pretty print nicely in the notebook, you'll have to write a custom version of the printing extension that passes your symbol_names dict to latex. See https://github.com/sympy/sympy/blob/master/sympy/interactive/printing.py (ideally one could just pass the latex options to init_printing, I'll open an issue in the SymPy bug tracker for that).




回答2:


If you want the arguments of a product to appear in a given order you can create a Mul from those args and then tell the printer that you don't want them reordered as shown here for an Add. So for your example you could do

>>> var('epsilon, sigma, T')
(epsilon, sigma, T)
>>> this = Mul(epsilon, sigma, T**4, evaluate=False)
>>> StrPrinter({'order':'none'})._print_Mul(this)
epsilon*sigma*T**4


来源:https://stackoverflow.com/questions/14624511/prevent-sympy-from-rearranging-the-equation

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!