Я новый симпатичный пользователь, и я хотел бы знать, каков наилучший способ работы как с функциями, которые определены аналитически, так и из интерполяции некоторых данных.Вот пример:
from sympy import *
import numpy as np
from scipy.interpolate import interp1d
def f(x,y):
return 3*x*exp(y)
def g(z1,z2):
return 5*z1*z2
def f2(x):
return 3*x+2
#Dummy data:
xdata = np.linspace(0.,1.,100)
ydata = 3*xdata+2
#Numerically defined function:
f2num = lambda x: interp1d(xdata,ydata)(x)
#Using only the algebraic functions works as expected:
x,y = symbols('x y')
g(f(x,y),f2(x)).diff(x) #Returns 45*x*exp(y) + (45*x+30)*exp(y)
g(f(x,y),f2(x)).diff(x).evalf(subs={x : 2, y: 3}) #Returns 3615.4
#But I would like to be able to do something analogous using f2num:
g(f(x,y),f2num(x)).diff(x)
g(f(x,y),f2num(x)).diff(x).evalf(subs={x : 2, y: 3})
Каков наилучший способ реализации вышеуказанного поведения?Другими словами, есть ли способ для меня определить sympy.Function, которая будет обрабатывать производную от f2num как неопределенную функцию, если она не оценивается численно?Я попытался поиграть с sympy.Function class и fdiff, но безуспешно.
Спасибо.