Forzar SymPy para mantener el orden de los términos

Tengo el siguiente código:

from sympy import * init_printing() x,y = symbols('x y') u = Function('u')(x,y) ux,uy,uxx,uxy,uyy = symbols("u_x u_y u_xx u_xy u_yy") mainEvaluation = uxx - 2*sin(x)*uxy - (cos(x) ** 2) * uyy - 2*ux + (2 - cos(x) + 2*sin(x) )*uy 

Y cuando la salida de print(mainExpression) es

 -2*u_x + u_xx - 2*u_xy*sin(x) + u_y*(2*sin(x) - cos(x) + 2) - u_yy*cos(x)**2 

El problema es: quiero el orden original de las variables.

 u_xx - 2*u_xy*sin(x) - u_yy*cos(x)**2 - 2*u_x + u_y*(2*sin(x) - cos(x) + 2) 

Todo esto se hace en el cuaderno de IPython. ¿Hay alguna manera de mantener el orden?

Lamentablemente, SymPy no realiza un seguimiento del orden de entrada (consulte la otra pregunta que vinculé en un comentario sobre la pregunta). Puede definir su propia función de ordenamiento que ordena las expresiones como lo desee, pero no hay manera de ordenar las cosas exactamente como fueron ingresadas, ya que esa información no se guarda.

intente leer esto http://docs.sympy.org/0.7.2/modules/utilities/misc.html , podría ayudarlo

Nota:

La clave devuelta es útil para colocar los artículos en un orden canónico que será el mismo en todas las plataformas. No es directamente útil para ordenar listas de expresiones:

 >>> a, b = x, 1/x 

Dado que a solo tiene 1 término, su valor de sort_key no se ve afectado por el orden:

 >>> a.sort_key() == a.sort_key('rev-lex') True 

Si a y b se combinan, la clave será diferente porque hay términos que se pueden ordenar:

 >>> eq = a + b >>> eq.sort_key() == eq.sort_key('rev-lex') False >>> eq.as_ordered_terms() [x, 1/x] >>> eq.as_ordered_terms('rev-lex') [1/x, x] 

Pero como las claves para cada uno de estos términos son independientes del valor del pedido, no se ordenan de manera diferente cuando aparecen por separado en una lista:

 >>> sorted(eq.args, key=default_sort_key) [1/x, x] >>> sorted(eq.args, key=lambda i: default_sort_key(i, order='rev-lex')) [1/x, x] 

El orden de los términos obtenidos al usar estas claves es el orden que se obtendría si esos términos fueran factores en un producto.

.