I am trying to reverse the order of an expression before printing it for my
documentation, and I want ascending order, but SymPy always gives me
descending order. All of the expressions are polynomials, specifically
partial sums of power series. Since, according to Internet searches, there
is no easy way to do this, I have tried a number of things, including
manipulating the expression tree. The original expression is always Add of
a tuple, and each tuple is a rational number and x**n. When I loop through
the expression and Add the components, I always get the same order. The
elegant solution would be to reverse the tuple and Add it all at once, but
that is deprecated and gives me a tuple instead of a sum.
Here is some sample code, a test program that demonstrates the problem.
from sympy import symbols, Rational, Add, latex, Eq
x = symbols('x')
lhs = symbols('X')
rhs = Rational(3)/Rational(4)*x**3 + Rational(2)/Rational(5)*x**2 +
Rational(1)/Rational(4)*x
X1 = rhs.args
#X2 = X1[::-1] # Why don't I need this? My debugger shows the expression
and the tuple in reverse order.
X2 = X1
# Try the expected order of Add. This produces a sum, but with an extra set
of parantheses, and not the desired order.
X3 = X2[0]
X2R = X2[1:len(X2)]
for indT in range(0, len(X2R)):
termT = X2R[indT]
X3 = Add(X3, termT, evaluate=False)
# Try the other order of Add. This looks the same as X3.
X4 = X2[0]
for indT in range(0, len(X2R)):
termT = X2R[indT]
X4 = Add(termT, X4, evaluate=False)
# Try single step. This is deprecated, gives the correct order, but returns
a tuple instead of a sum.
#X2 = X1[::-1] # Why don't I need this?
X2 = X1
X5 = Add(X2, evaluate=False)
print(latex(Eq(lhs, rhs))) # original order
print(latex(Eq(lhs, X3))) # still original order
print(latex(Eq(lhs, X4))) # still original order
print(latex(Eq(lhs, X5))) # desired order, but tuple instead of sum
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/166a5149-26b2-47f7-9956-943b9d379d92n%40googlegroups.com.