3

我有一个带有可变数量参数的python函数:

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

我想针对每个参数自动生成表示 F 的导数的 N 个函数。

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

例如,我可以同时给出 F(x1) = sin(x1) 和 F(x1, x2) = sin(x1) * cos(x2) 并自动获得所有导数。


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))
4

1 回答 1

6

诀窍是用来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)
于 2013-01-06T01:19:54.740 回答