Как определить расположение полинома при отображении его с латексом? - PullRequest
0 голосов
/ 24 октября 2019

Я не уверен, что это проблема с моим кодом Python или с латексом, но он продолжает перестраивать мое уравнение в выводе.

Код:

ddx = '\\frac{{d}}{{dx}}'

f = (a * x ** m) + (b * x ** n) + d
df = sym.diff(f)

df_string = tools.polytex(df)
f_string = tools.polytex(f)

question_stem = f"Find $_\\displaystyle {ddx}\\left({f_string}\\right)$_"

вывод:

enter image description here

В этом случае a = 9, b = -4, c = 4, m = (-1/2), n = 3, и я хочу, чтобы вывод был впорядок переменной f.

Я пытался изменить порядок на 'lex', и это не сработало, а также .expand () или mode = уравнение

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Существует опция order для StrPrinter. Если вы установите порядок «none», а затем передадите неоцененную Add к _print_Add, вы можете получить желаемый результат.

>>> from sympy.abc import a,b,c,x,m,n
>>> from sympy import S
>>> oargs = Tuple(a * x ** m, b * x ** n,  c) # in desired order
>>> r = {a: 9, b: -4, c: 4, m: -S.Half, n: 3}
>>> add = Add(*oargs.subs(r).args, evaluate=False) # arg order unchanged
>>> StrPrinter({'order':'none'})._print_Add(add)
9/sqrt(x) - 4*x**3 + 4
0 голосов
/ 24 октября 2019

Вероятно, это вообще будет невозможно, поскольку выражения 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
...