Вероятно, это вообще будет невозможно, поскольку выражения SymPy переупорядочиваются при каждой манипуляции, и даже при простом преобразовании выражения во внутренний формат.
Вот код, который может работать для вашей конкретной ситуации. :
from sympy import *
from functools import reduce
a, b, c, m, n, x = symbols("a b c m n x")
f = (a * x ** m) + (b * x ** n) + c
a = 9
b = -4
c = 4
m = -Integer(1)/2
n = 3
repls = ('a', latex(a)), ('+ b', latex(b) if b < 0 else "+"+latex(b)), \
('+ c', latex(c) if c < 0 else "+"+latex(c)), ('m', latex(m)), ('n', latex(n))
f_tex = reduce(lambda a, kv: a.replace(*kv), repls, latex(f))
# only now the values of the variables are filled into f, to be used in further manipulations
f = (a * x ** m) + (b * x ** n) + c
, что оставляет следующее в f_tex
:
9 x^{- \frac{1}{2}} -4 x^{3} 4