Jacobian仅为向量值函数定义。不能使用填充有常数的数组来计算雅可比;必须知道基本函数及其偏导数,或它们的数值近似值。当你认为一个常数(关于某事物)的(偏)导数是0时,这是显而易见的。
在Python中,可以使用符号数学模块(如SymPy或SymEngine)计算函数的jacobian。以下是维基百科的一个简单示例:
使用SymEngine模块:Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import symengine
>>>
>>>
>>> vars = symengine.symbols('x y') # Define x and y variables
>>> f = symengine.sympify(['y*x**2', '5*x + sin(y)']) # Define function
>>> J = symengine.zeros(len(f),len(vars)) # Initialise Jacobian matrix
>>>
>>> # Fill Jacobian matrix with entries
... for i, fi in enumerate(f):
... for j, s in enumerate(vars):
... J[i,j] = symengine.diff(fi, s)
...
>>> print J
[2*x*y, x**2]
[5, cos(y)]
>>>
>>> print symengine.Matrix.det(J)
2*x*y*cos(y) - 5*x**2