Смесь числовых и алгебраических производных с симп - PullRequest
0 голосов
/ 24 сентября 2019

Я новый симпатичный пользователь, и я хотел бы знать, каков наилучший способ работы как с функциями, которые определены аналитически, так и из интерполяции некоторых данных.Вот пример:

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, но безуспешно.

Спасибо.

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