以Python的功能,并产生所有衍生品(Take Python Function and Gener

2019-08-05 17:50发布

我有不同的参数个数Python函数:

F(x1, x2, ... , xN)

我想自动生成表示F的衍生物相对于每个参数N个函数。

F'_1 = dF/dx1
F'_2 = dF/dx2
...
F'_N = dF/dxN

例如,我可以给两个F(X)= SIN(X)和F(X1,X2)= SIN(X)* cos(2次),并自动获得所有的衍生物。


EDIT2:如果函数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))

Answer 1:

诀窍是使用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)


文章来源: Take Python Function and Generate All Derivatives