Prendi il vettore di incognite e applica alcune funzioni generiche differenziabili . Il giacobino è quindi dato da una matrice tale che:
Ad esempio, supponiamo m=3
e n=2
. Quindi (utilizzando l'indicizzazione basata su 0)
Il giacobino di f
è allora
L'obiettivo di questa sfida è stampare questa matrice giacobina.
Ingresso
Il tuo programma / funzione dovrebbe assumere come input due numeri interi positivi m
e n
, che rappresentano il numero di componenti di f
e u
rispettivamente. L'ingresso può provenire da qualsiasi sorgente desiderata (stdio, parametro di funzione, ecc.). È possibile dettare l'ordine in cui questi vengono ricevuti e questo deve essere coerente per qualsiasi input alla risposta (specificare nella risposta).
Produzione
Qualcosa che rappresenta la matrice giacobina. Questa rappresentazione deve esplicitare tutti gli elementi della matrice giacobina, ma la forma esatta di ogni termine è l'implementazione definita fintanto che non è chiaro ciò che viene differenziato e rispetto a ciò, e ogni voce viene emessa in un ordine logico. Esempi di forme accettabili per rappresentare una matrice:
- Un elenco di elenchi in cui ciascuna voce dell'elenco esterno corrisponde a una riga del giacobino e ciascuna voce dell'elenco interno corrisponde a una colonna del giacobino.
- Una stringa o output testuale in cui ogni riga è una riga del giacobino e ogni delimitatore separato in una riga corrisponde a una colonna del jacobiano.
- Qualche rappresentazione grafica / visiva di una matrice. Esempio: cosa viene mostrato da Mathematica quando si usa il
MatrixForm
comando - Qualche altro oggetto matrice denso in cui ogni voce è già archiviata in memoria e può essere interrogata (cioè non è possibile utilizzare un oggetto generatore). Esempio potrebbe essere il modo in cui Mathematica rappresenta internamente un oggetto Matrix
Esempi di formati di immissione:
- Una stringa del modulo
d f_i/d u_j
, dovei
ej
sono numeri interi. Es:d f_1/d u_2
. Si noti che questi spazi trad
ef_1
ox_2
sono opzionali. Inoltre, i trattini bassi sono facoltativi. - Una stringa del modulo
d f_i(u_1,...,u_n)/d u_j
od f_i(u)/d u_j
. Ossia, i parametri di input del componente funzionef_i
sono facoltativi e possono essere esplicitamente indicati o lasciati in forma compatta. - Un output grafico formattato. Es .: cosa stampa Mathematica quando valuti l'espressione
D[f_1[u_,u_2,...,u_n],u_1]
È possibile scegliere quale sia l'indice iniziale u
e f
quali (specificare nella risposta). L'output può essere su qualsiasi sink desiderato (stdio, valore di ritorno, parametro di output, ecc.).
Casi test
I seguenti casi di test usano la convenzione m,n
. Gli indici vengono visualizzati in base 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]]
punteggio
Questo è il codice golf; vince il codice più breve in byte. Sono vietate le scappatoie standard. È consentito utilizzare qualsiasi componente incorporato desiderato.
f=
, poiché è pratica comune qui. R restituisce anche l'ultima cosa valutata in una funzione, quindi puoi semplicemente usarev
invece direturn(v)
.