вернуть математическую функцию в виде строки - PullRequest
0 голосов
/ 28 февраля 2019

предположим, у меня есть функция:

  def func(t):
      a=5;b=-7;c=4;d=2
      return a*t**3+b*t**2+c*t+d

помимо возврата значения функции, я также пытаюсь получить функцию буквально, так как при вызове я получу:

a*t**3 +b*t**2+c*t +d = <actual mathematical value>

Моя конечная цель - получить правильное выражение LaTeX, чтобы написать утверждение в matplotlib.

Любая помощь?

ОБНОВЛЕНИЕ Уважаемыйвсем, спасибо за ваш ответ.Но я просто не хочу писать функцию еще раз, как вы показали, что-то вроде:

return "a*t**3+b*t**2+c*t+d = " + str(a*t**3+b*t**2+c*t+d)

(я могу проще сделать это прямо в plt.txt, верно?)

Я просто хочу преобразовать функцию, скопированную буквально:

def func(t):
  a=.05;b=-.07;c=.04;d=.02
  return a*t**3+b*t**2+c*t+d

def strf():
  #  return(r"$a*t**3+b*t**2+c*t+d$")
  return (str(func))   
  # expecting this to give the output
  #  r"$a*t**3+b*t**2+c*t+d$"

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019
def func(t):
    a = 5
    b = -7
    c = 4
    d = 2
    exp = "a*t**3+b*t**2+c*t+d"
    return f"{exp} = {eval(exp)}"

Я думаю, что это оно

0 голосов
/ 28 февраля 2019

Вы можете использовать f-строку:

def func(t):
    a = 5
    b = -7
    c = 4
    d = 2
    result = a * t**3 + b * t**2 + c * t + d
    return result, f'a * t**3 + b * t**2 + c * t + d = {result}'

res, str_ = func(5)

print(res)
print(str_)

Вывод:

472
a * t**3 + b * t**2 + c * t + d = 472

Я не рекомендую использовать функцию eval() как в других решениях.

0 голосов
/ 28 февраля 2019

Это то, что вы имеете в виду?

def func(t):
    a = 5
    b = -7
    c = 4
    d = 2
    return "a*t**3+b*t**2+c*t+d = " + str(a*t**3+b*t**2+c*t+d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...