Nehmen Sie den Vektor der Unbekannten
und wenden Sie eine generische differenzierbare Funktion an
. Der Jacobianer wird dann durch eine Matrix gegeben,
so dass:
Nehmen wir zum Beispiel an m=3und n=2. Dann (mit 0-basierter Indizierung)
Der Jakobianer von fist dann
Das Ziel dieser Herausforderung ist es, diese Jacobi-Matrix zu drucken.
Eingang
Ihr Programm / Funktion sollte nehmen als Eingabe zwei positive ganze Zahlen sind mund n, die die Anzahl der Komponenten darstellen fund ujeweils. Die Eingabe kann von jeder gewünschten Quelle stammen (stdio, Funktionsparameter usw.). Sie können die Reihenfolge bestimmen, in der diese empfangen werden. Dies muss für jede Eingabe in Ihre Antwort konsistent sein (bitte in Ihrer Antwort angeben).
Ausgabe
Etwas, das die jakobianische Matrix darstellt. Diese Darstellung muss explizit alle Elemente der Jacobi-Matrix buchstabieren, aber die genaue Form jedes Begriffs ist eine Implementierung, die definiert ist, solange eindeutig ist, was und in Bezug auf was unterschieden wird, und jeder Eintrag in einer logischen Reihenfolge ausgegeben wird. Beispiel akzeptable Formen zur Darstellung einer Matrix:
- Eine Liste von Listen, wobei jeder Eintrag der äußeren Liste einer Zeile des Jacobian entspricht und jeder Eintrag der inneren Liste einer Spalte des Jacobian entspricht.
- Eine Zeichenfolge oder Textausgabe, bei der jede Zeile eine Zeile des Jacobian ist und jeder durch Trennzeichen getrennte Eintrag in einer Zeile einer Spalte des Jacobian entspricht.
- Einige grafische / visuelle Darstellung einer Matrix. Beispiel: Was wird von Mathematica bei Verwendung des
MatrixFormBefehls angezeigt ? - Ein anderes dichtes Matrixobjekt, bei dem jeder Eintrag bereits im Speicher gespeichert ist und abgefragt werden kann (dh Sie können kein Generatorobjekt verwenden). Ein Beispiel wäre, wie Mathematica intern ein Matrix-Objekt darstellt
Beispiel für Eingabeformate:
- Eine Zeichenfolge des Formulars
d f_i/d u_j, wobeiiundjGanzzahlen sind. Bsp. :d f_1/d u_2. Beachten Sie, dass diese Leerzeichen zwischendundf_1oderx_2optional sind. Zusätzlich sind die Unterstriche optional. - Eine Zeichenfolge der Form
d f_i(u_1,...,u_n)/d u_joderd f_i(u)/d u_j. Das heißt, die Eingabeparameter der Funktionskomponentef_isind optional und können entweder explizit geschrieben oder in kompakter Form belassen werden. - Eine formatierte grafische Ausgabe. Beispiel: Was Mathematica druckt, wenn Sie den Ausdruck auswerten
D[f_1[u_,u_2,...,u_n],u_1]
Sie können den Startindex auswählen uund fangeben (bitte in Ihrer Antwort angeben). Die Ausgabe kann an eine beliebige Senke erfolgen (Standard, Rückgabewert, Ausgabeparameter usw.).
Testfälle
Die folgenden Testfälle verwenden die Konvention m,n. Indizes werden 0-basiert angezeigt.
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]]
Wertung
Das ist Code Golf; Der kürzeste Code in Bytes gewinnt. Standardlücken sind verboten. Sie dürfen alle gewünschten Einbauten verwenden.





f=, wie dies hier üblich ist. R gibt auch das letzte in einer Funktion ausgewertete Element zurück, sodass Sie esvstattdessen anstelle von verwenden könnenreturn(v).