Метод Sympy / I Python для отображения метки функции с выражением - PullRequest
0 голосов
/ 30 мая 2020

Я искал способ отобразить как метку функции, так и выражение функции при работе в Jupyter или любом другом терминале I Python, но мне так и не удалось найти решение в Интернете.

Короче говоря, я хотел сказать что-то вроде display(f), и он должен вернуть:
f (x) = a 2 x 2 + a 1 x + a 0
вместо краткого:
a 2 x 2 + a 1 x + a 0

Итак, я решил поделиться тем, что придумал, на случай, если у других возникнут похожие проблемы.

Я нахожу это особенно полезным, особенно если вы хотите скрыть код в своем блокноте Jupyter, как описано в Как скрыть код в ячейках в I Python Блокнот

Вот функция:

from sympy import latex
from IPython.display import Math

def parade(expr, func, y=None, label=None):
    """Returns a latex expression to display using IPython.display.display()
    Parameters:
        repr: the representation of the function e.g. 'f(x)'
        func: the sympy functions symbol e.g. f
        y (optional): The value or expression this function is equal to.
        label (optional): Append a latex formula label
    Returns:
        the latex expression to display. 
        """
    expression = ('{expr} = {func}'.format(expr=expr, func=latex(func)))
    if y is not None:
        expression += ' = {y}'.format(y=latex(y))
    if label is not None:
        expression += '\\tag{label}'.format(label=latex(label))
    return Math(expression)

Чтобы использовать тип функции:

from sympy import symbols
from IPython.display import display

x, a_0, a_1, a_2 = symbols('x a_0 a_1 a_2')
f = a_2 * x**2 + a_1 * x + a_0

display(parade('f(x)', f)) 

, она выводит:
f (x) = a 2 x 2 + a 1 x + a 0

Если есть есть способ улучшить это, я был бы признателен, если бы вы могли поделиться им.

...