Как поставить дробь перед скобками в выводе SymPy? - PullRequest
0 голосов
/ 19 мая 2018

У меня есть выражение SymPy, которое в строковом формате выглядит как

-t*(a+b+c)/2

Когда красиво напечатано в форме LaTeX (включая вывод LaTeX ноутбука), оно слишком высокое и не очень легко читается.

Как мне сложить дробь и поставить ее перед скобками?Вот так:

(-t/2)*(a+b+c)

Пример кода:

from sympy import symbols, Function, Derivative, var, init_printing, pprint, latex

init_printing()
def T(y):
    var('mu')
    return -1 / (2 * mu) * Derivative(y, x, x)

def V(y):
    var('x')
    V = Function('V', commutative=True)(x)
    return V * y

def K(y):
    var('x')
    K = Function('K', commutative=True)(x)
    return K * y

def a1(y):
    var('tau', positive=True)
    return tau * (T(y) + V(y))

def c(A, B):
    def comm(y):
        return A(B(y)) - B(A(y))
    return comm

var('x')
var('t')
f = Function('psi', commutative=False)

c1k = c(a1, K)
print(latex(c1k(f(x,t)).doit().simplify()))

Печатает и показывает

- \frac{\tau \left(2 \frac{d}{d x} K{\left (x \right )} \frac{\partial}{\partial x} \psi{\left (x,t \right )} + \frac{d^{2}}{d x^{2}} K{\left (x \right )} \psi{\left (x,t \right )}\right)}{2 \mu}

Я хотел бы видеть как в latex(), так и в блокноте Jupyter

-\frac{\tau}{2}\left(...\right)

1 Ответ

0 голосов
/ 20 мая 2018

SymPy 1.1.1 по умолчанию разбивает фрагменты длинных фракций.Это привело к жалобе , которая привела к PR , который отключил это поведение в текущей основной ветке.

Для повторного включения предыдущего значения по умолчанию используйте long_frac_ratio=2:

Допустимое отношение ширины числителя к ширине знаменателя, прежде чем мы начнем разбивать длинные дроби,- документы SymPy

>>> print(latex(c1k(f(x,t)).doit().simplify(), long_frac_ratio=2))
- \frac{\tau}{2 \mu} \left(2 \frac{d}{d x} K{\left (x \right )} \frac{\partial}{\partial x} \psi{\left (x,t \right )} + \frac{d^{2}}{d x^{2}} K{\left (x \right )} \psi{\left (x,t \right )}\right)

Настройки могут быть включены в init_printing:

init_printing(long_frac_ratio=2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...