Saltar al contenido

Cómo hacer jacobiano automáticamente en Mathematica

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

producción

O tal vez lo que quieres tenga este aspecto:

 JacobianMatrix[b, a] // MatrixForm

ingrese la descripción de la imagen aquí

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.

ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *