【发布时间】:2012-12-20 03:05:23
【问题描述】:
我有一个参数数量可变的python函数:
F(x1, x2, ... , xN)
我想自动生成 N 个函数,表示 F 对每个参数的导数。
F'_1 = dF/dx1
F'_2 = dF/dx2
...
F'_N = dF/dxN
例如,我可以同时提供 F(x1) = 罪(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))
【问题讨论】:
-
要明确 - 函数类似于
def F(x): return math.sin(x)? (也就是说,它不是sin(x)的符号表示,而是一个实际的Python函数?) -
如果 F(x) 有可能是非符号的,那就更好了。 (即使用lambdify获取符号表达式)。
-
您是否已经有一种方法可以在具有一个参数的函数上生成数值导数?
-
我需要符号导数函数。即对于 sin(x),我希望 cos(x) 不是数值导数。
-
已发布答案 - 它假定您想要每个函数的
lambidy版本。如果你取出lambdify部分,你会看到结果是[cos(x)*cos(y), -sin(x)*sin(y)]。
标签: python lambda python-2.7 scipy sympy