Как создать функцию, которая оценивает производную функции пользовательского ввода при некотором значении x - PullRequest
0 голосов
/ 20 июня 2020

Я искал в Интернете и через этот веб-сайт, но похожие сообщения, которые создают функцию, которая оценивает производную функции в x, не являются функциями пользовательского ввода. Например, у них будет f=2*x**2, и я хочу создать функцию, которая будет работать практически для любой функции, содержащей операторы алгебры c, выражения триггера и журнала и т. Д. c. Я создал функцию, которая оценивает функцию пользовательского ввода в x, используя импорт numpy / math и eval (), но я не могу полностью воспроизвести это для производной функции пользовательского ввода.

from sympy import sympify, Symbol
import numpy
import math
x = Symbol('x')
y=sympify(input('Type your function:'))
yprime = y.diff(x)

Я обнаружил это из сообщения в Интернете, и он точно вычисляет производную функции пользовательского ввода, но я не мог понять, как добавить функцию, которая оценивает yprime при некотором значении x. Когда я попытался добавить

def fprime(x):
    return eval(yprime, {'x': x, 'np': numpy, 'math': math})

, я получил сообщение об ошибке, что yprime не является строкой, а это не так.

TypeError: eval() arg 1 must be a string, bytes or code object

Я был бы признателен за любую помощь, которую могу получить, и обратите внимание, что я новичок с python.

1 Ответ

1 голос
/ 20 июня 2020

Вы можете попробовать что-то вроде этого:

from sympy import sympify, Symbol
import numpy
import math
x = Symbol('x')
y=sympify(input('Type your function:'))
value=float(input('Type the value to evaluate: '))
yprime = y.diff(x)
 
print(y)
print(yprime)
def fprime(value):
    return float(yprime.subs({x:value}))

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