How to make Jacobian automatically in Mathematica

The easiest way to get the Jacobian is

D[a,{b}]

To get the format of a matrix, you would do MatrixForm[D[f, {x}], or D[f, {x}]//MatrixForm, as the comment by azdahak says.

There is no special matrix type in MMA - it's internally always stored as a list of lists.

Edit

Since this question is partly about the format of the matrix and its elements, I thought it's worth adding a definition that makes calculus output look prettier, and in the case of the Jacobian lets you write symbolic matrices like this:

$\left( \begin{array}{cc} \frac{\partial f_{\text{x}}}{\partial x} & \frac{\partial f_{\text{x}}}{\partial y} \\ \frac{\partial f_{\text{y}}}{\partial x} & \frac{\partial f_{\text{y}}}{\partial y} \\ \end{array} \right)$

The definition was initially posted as a comment on the Wolfram Blog:

Derivative /: 
 MakeBoxes[Derivative[α__][f1_][vars__Symbol], 
  TraditionalForm] := 
 Module[{bb, dd, sp}, 
  MakeBoxes[dd, _] ^= 
   If[Length[{α}] == 1, "\[DifferentialD]", "\[PartialD]"];
  MakeBoxes[sp, _] ^= "\[ThinSpace]";
  bb /: MakeBoxes[bb[x__], _] := RowBox[Map[ToBoxes[#] &, {x}]];
  FractionBox[ToBoxes[bb[dd^Plus[α], f1]], 
   ToBoxes[Apply[bb, 
     Riffle[Map[bb[dd, #] &, 
       Select[({vars}^{α}), (# =!= 1 &)]], sp]
   ]
  ]
 ]
]

With this, you can get the above matrix form with traditional partial derivatives like this:

First define the vector components with subscripts as is conventional. To avoid confusion between subscripts and variable names, use strings for the subscripts:

fVector = Array[Subscript[f, {"x", "y"}[[#]]][x, y] &, 2]

Then form the Jacobian and display it in TraditionalForm:

D[fVector, {{x, y}}] // MatrixForm // TraditionalForm

The result is as shown above.

Edit

In this answer to How to make traditional output for derivatives I posted a newer version of the derivative formatting that contains an InterpretationFunction which allows you to evaluate the derivatives despite their condensed displayed form.


See: Jacobian matrix

The Jacobian matrix and determinant can be computed using the Mathematica commands:

JacobianMatrix[f_List?VectorQ, x_List] :=
    Outer[D, f, x] /; Equal@@(Dimensions/@{f,x})

JacobianDeterminant[f_List?VectorQ, x_List] :=
    Det[JacobianMatrix[f, x]] /;
      Equal @@ (Dimensions /@ {f, x})

Some additional info.

a = {x1^3 + 2 x2^2, 3 x1^4 + 7 x2}
b = {x1, x2}
JacobianMatrix[a, b] // MatrixForm

output

Or maybe what you want looks like this:

 JacobianMatrix[b, a] // MatrixForm

enter image description here


Grad[a,b] also produces the Jacobian.

a = {x1^3 + 2 x2^2, 3 x1^4 + 7 x2};
b = {x1, x2};
Grad[a, b] // MatrixForm

This has the added advantage of letting you compute the Jacobian in different coordinate systems.

enter image description here