Tome el vector de incógnitas y aplique alguna función genérica diferenciable . El jacobiano está dado por una matriz tal que:
Por ejemplo, supongamos que m=3
y n=2
. Luego (usando indexación basada en 0)
El jacobiano de f
es entonces
El objetivo de este desafío es imprimir esta matriz jacobiana.
Entrada
Su programa / función debe tomar como entrada dos enteros positivos m
y n
, que representan el número de componentes de f
y u
respectivamente. La entrada puede provenir de cualquier fuente deseada (stdio, parámetro de función, etc.). Puede dictar el orden en que se reciben, y esto debe ser coherente para cualquier entrada a su respuesta (especifique en su respuesta).
Salida
Algo que representa la matriz jacobiana. Esta representación debe explicar explícitamente todos los elementos de la matriz jacobiana, pero la forma exacta de cada término es la implementación definida siempre que no sea ambigua lo que se diferencia y con respecto a qué, y cada entrada se emite en un orden lógico. Ejemplos de formas aceptables para representar una matriz:
- Una lista de listas donde cada entrada de la lista externa corresponde a una fila del jacobiano, y cada entrada de la lista interna corresponde a una columna del jacobiano.
- Una cadena o salida textual donde cada línea es una fila del jacobiano, y cada entrada separada por delimitador en una línea corresponde a una columna del jacobiano.
- Alguna representación gráfica / visual de una matriz. Ejemplo: lo que muestra Mathematica cuando usa el
MatrixForm
comando - Algún otro objeto de matriz denso donde cada entrada ya está almacenada en la memoria y puede consultarse (es decir, no puede usar un objeto generador). Un ejemplo sería cómo Mathematica representa internamente un objeto Matrix
Ejemplos de formatos de entrada:
- Una cadena de la forma
d f_i/d u_j
, dondei
yj
son enteros. Ej:d f_1/d u_2
. Tenga en cuenta que estos espacios entred
yf_1
ox_2
son opcionales. Además, los guiones bajos también son opcionales. - Una cadena de la forma
d f_i(u_1,...,u_n)/d u_j
od f_i(u)/d u_j
. Es decir, los parámetros de entrada del componente de funciónf_i
son opcionales y pueden explicarse explícitamente o dejarse en forma compacta. - Una salida gráfica formateada. Ej .: qué imprime Mathematica cuando evalúa la expresión
D[f_1[u_,u_2,...,u_n],u_1]
Puede elegir para qué es el índice inicial u
y para qué f
(especifique en su respuesta). La salida puede ser a cualquier sumidero deseado (estándar, valor de retorno, parámetro de salida, etc.).
Casos de prueba
Los siguientes casos de prueba utilizan la convención m,n
. Los índices se muestran basados en 0.
1,1
[[d f0/d u0]]
2,1
[[d f0/d u0],
[d f1/d u0]]
2 2
[[d f0/d u0, d f0/d u1],
[d f1/d u0, d f1/d u1]]
1,2
[[d f0/d u0, d f0/d u1]]
3,3
[[d f0/d u0, d f0/d u1, d f0/d u2],
[d f1/d u0, d f1/d u1, d f1/d u2],
[d f2/d u0, d f2/d u1, d f2/d u2]]
Puntuación
Este es el código de golf; el código más corto en bytes gana. Las lagunas estándar están prohibidas. Se le permite usar los complementos deseados.
fuente
f=
, como es una práctica común aquí. R también devuelve lo último evaluado en una función, por lo que puede usarlo env
lugar dereturn(v)
.Máximo, 68 bytes
Es una pena que no conozca a Maxima como si conociera a mis queridos C y Matlab. Pero lo intentaré de todos modos.
Ejemplo de sesión usando TeXmacs como intérprete de Maxima, principalmente para la representación matemática ordenada:
Puede haber mejores formas de hacer listas y cosas así en Maxima (especialmente me gustaría hacer que las funciones aparezcan sin los marcadores de lista, []), pero no conozco el idioma lo suficientemente bien.
fuente
Ruby, 53 bytes
f
está indexado a 0,u
está indexado a 1. Pruébalo en línea!Cada fila ocupa una línea como una representación de matriz como se ve a continuación. Si no cumple con las especificaciones, avíseme y lo solucionaré.
fuente
Cheddar ,
7949 bytesAparentemente un tenedor de esta respuesta .
Para
3,2
devoluciones:fuente
Jalea, 18 bytes
¡Pruébalo!
Dado (m, n) = (3, 2) , impresiones (con espacios marcados como
·
:)fuente
C, 125 bytes:
Toma la entrada como 2 enteros separados por espacios
b y
, y genera la matriz jacobiana comoy
cadenas separadas por comas en lasb
líneas.¡C en línea! (Ideone) o Test Suite (Ideone)
fuente