Solución:
La forma más fácil de obtener el jacobiano es
D[a,{b}]
Para obtener el formato de una matriz, haría MatrixForm[D[f, {x}]
, o D[f, {x}]//MatrixForm
, como dice el comentario de azdahak.
No hay un tipo de matriz especial en MMA; siempre se almacena internamente como una lista de listas.
Editar
Dado que esta pregunta es en parte sobre formato de la matriz y sus elementos, pensé que vale la pena agregar una definición que haga que la salida de cálculo se vea más bonita, y en el caso del jacobiano le permite escribir matrices simbólicas como esta:
$ left ( begin {array} {cc} frac { parcial f _ { text {x}}} { parcial x} & frac { parcial f _ { text {x}}} { parcial y } \ frac { f _ {parcial} { text {y}}} { x parcial} & frac { f _ {parcial} { text {y}}} { y parcial} \ end {matriz} derecha) $
La definición se publicó inicialmente como un comentario en el Blog de Wolfram:
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]
]
]
]
]
Con esto, puede obtener la forma de matriz anterior con derivadas parciales tradicionales como esta:
Primero defina los componentes del vector con subíndices como es convencional. Para evitar confusiones entre subíndices y nombres de variables, utilice cadenas para los subíndices:
fVector = Array[Subscript[f, {"x", "y"}[[#]]][x, y] &, 2]
Luego forma el jacobiano y muéstralo en TraditionalForm
:
D[fVector, {{x, y}}] // MatrixForm // TraditionalForm
El resultado es como se muestra arriba.
Editar
En esta respuesta a Cómo hacer una salida tradicional para derivados, publiqué una versión más nueva del formato derivado que contiene un InterpretationFunction
que le permite evaluar las derivadas a pesar de su forma condensada mostrada.
Ver: matriz jacobiana
La matriz jacobiana y el determinante se pueden calcular usando los comandos de Mathematica:
JacobianMatrix[f_List?VectorQ, x_List] :=
Outer[D, f, x] /; [email protected]@(Dimensions/@{f,x})
JacobianDeterminant[f_List?VectorQ, x_List] :=
Det[JacobianMatrix[f, x]] /;
Equal @@ (Dimensions /@ {f, x})
Alguna información adicional.
a = {x1^3 + 2 x2^2, 3 x1^4 + 7 x2}
b = {x1, x2}
JacobianMatrix[a, b] // MatrixForm
O tal vez lo que quieres tenga este aspecto:
JacobianMatrix[b, a] // MatrixForm
Grad[a,b]
también produce el jacobiano.
a = {x1^3 + 2 x2^2, 3 x1^4 + 7 x2};
b = {x1, x2};
Grad[a, b] // MatrixForm
Esto tiene la ventaja adicional de permitirle calcular el jacobiano en diferentes sistemas de coordenadas.