我有一个参数数量可变的 python 函数:
F(x1, x2, ... , xN)
我想自动生成 N 个函数,表示 F 对每个参数的导数。
F'_1 = dF/dx1
F'_2 = dF/dx2
...
F'_N = dF/dxN
例如,我可以同时提供
F(x1) = sin(x1)
和
F(x1, x2) = sin(x1) * cos(x2)
并自动获得所有导数。
编辑2:
如果函数 F 是 2 个变量(固定数量的参数),我可以使用
def f(x,y):
return sin(x)*cos(y)
from sympy import *
x, y = symbols('x y')
f_1 = lambdify((x,y), f(x,y).diff(x))
诀窍是使用inspect.getargspec
获取函数所有参数的名称。之后,这是一个简单的列表理解:
import inspect
from sympy import *
def get_derivatives(func):
arg_symbols = symbols(inspect.getargspec(func).args)
sym_func = func(*arg_symbols)
return [lambdify(arg_symbols, sym_func.diff(a)) for a in arg_symbols]
例如:
def f(x, y):
return sin(x)*cos(y)
all_derivatives = get_derivatives(f)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)