【发布时间】:2014-07-12 23:49:39
【问题描述】:
如何在 sympy 中定义函数导数的数值计算? 我有一些函数可以用样条函数来描述,它是使用 scipy.interpolate 导出的。 我想用这个函数操作一些表达式,然后用样条计算表达式。
我可以使用 lambdify 使 sympy 函数以样条曲线的形式进行数值计算。 但是如何定义一个 sympy 函数的导数以作为样条进行数值计算?
例如
import sympy as sp
import numpy as np
from scipy.interpolate import InterpolatedUnivariateSpline
from sympy.ultilitis.lambdify import implemented_function, lambdify
r = sp.symbols('r')
B = sp.symbols('B', cls=sp.Function)
B_spline = InterpolatedUnivariateSpline([1,2,3,4],[1,4,9,16])
B_der_spline = InterpolatedUnivariateSpline([1,2,3,4],[2,4,6,8])
B = implemented_function(B, lambda r: B_spline(r))
class A(sp.Function):
nargs = 2
@classfunction
def eval(cls, r, B):
return r**2*B(r)
A_eval = lambdify(r, A(r,B))
A_eval(3)
>>> 81.0
A_diff_eval = lambdify(r, sp.diff(A(r,B)))
A_diff_eval(3)
>>> NameError: global name 'Derivative' is not defined
【问题讨论】: