Prenez le vecteur des inconnues et appliquez une fonction générique différenciable . Le jacobien est alors donné par une matrice telle que:
Par exemple, supposez m=3
et n=2
. Ensuite (en utilisant l'indexation basée sur 0)
Le jacobien de f
est alors
Le but de ce défi est d'imprimer cette matrice jacobienne.
Contribution
Votre programme / fonction doit prendre en entrée deux entiers positifs m
et n
, qui représentent le nombre de composants de f
et u
respectivement. L'entrée peut provenir de n'importe quelle source souhaitée (stdio, paramètre de fonction, etc.). Vous pouvez dicter l'ordre dans lequel ceux-ci sont reçus, et cela doit être cohérent pour toute entrée dans votre réponse (veuillez préciser dans votre réponse).
Production
Quelque chose qui représente la matrice jacobienne. Cette représentation doit énoncer explicitement tous les éléments de la matrice jacobienne, mais la forme exacte de chaque terme est définie par l'implémentation tant qu'il est sans ambiguïté ce qui est différencié et par rapport à quoi, et chaque entrée est sortie dans un ordre logique. Exemples de formes acceptables pour représenter une matrice:
- Une liste de listes où chaque entrée de la liste extérieure correspond à une ligne du jacobien, et chaque entrée de la liste intérieure correspond à une colonne du jacobien.
- Une chaîne ou une sortie textuelle où chaque ligne est une ligne du jacobien et chaque entrée séparée par un délimiteur dans une ligne correspond à une colonne du jacobien.
- Quelques représentations graphiques / visuelles d'une matrice. Exemple: ce qui est montré par Mathematica lors de l'utilisation de la
MatrixForm
commande - Un autre objet de matrice dense où chaque entrée est déjà stockée en mémoire et peut être interrogée (c'est-à-dire que vous ne pouvez pas utiliser un objet générateur). Un exemple serait la façon dont Mathematica représente en interne un objet Matrix
Exemples de formats d'entrée:
- Une chaîne de la forme
d f_i/d u_j
, oùi
etj
sont des entiers. Ex:d f_1/d u_2
. Notez que ces espaces entred
etf_1
oux_2
sont facultatifs. De plus, les traits de soulignement sont également facultatifs. - Une chaîne de la forme
d f_i(u_1,...,u_n)/d u_j
oud f_i(u)/d u_j
. Autrement dit, les paramètres d'entrée du composant fonctionf_i
sont facultatifs et peuvent être explicitement expliqués ou laissés sous forme compacte. - Une sortie graphique formatée. Ex.: Ce que Mathematica imprime lorsque vous évaluez l'expression
D[f_1[u_,u_2,...,u_n],u_1]
Vous pouvez choisir pour quoi l'index de départ u
et f
sont (veuillez préciser dans votre réponse). La sortie peut être vers n'importe quel récepteur souhaité (stdio, valeur de retour, paramètre de sortie, etc.).
Cas de test
Les cas de test suivants utilisent la convention m,n
. Les index sont affichés sur la base de 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]]
Notation
C'est le golf de code; le code le plus court en octets gagne. Les failles standard sont interdites. Vous êtes autorisé à utiliser toutes les fonctions intégrées souhaitées.
la source
f=
-à- dire , comme c'est la pratique courante ici. R renvoie également la dernière chose évaluée dans une fonction, vous pouvez donc simplement l'utiliser à lav
place dereturn(v)
.Maxima, 68 octets
C'est dommage que je ne connaisse pas Maxima comme je connais mon cher C et Matlab. Mais je vais essayer néanmoins.
Exemple de session utilisant TeXmacs comme interprète Maxima, principalement pour un rendu mathématique soigné:
Il peut très bien y avoir de meilleures façons de faire des listes et autres dans Maxima (je voudrais surtout faire apparaître les fonctions sans les marqueurs de liste, []), mais je ne connais pas assez bien le langage.
la source
Rubis, 53 octets
f
est indexé 0,u
est indexé 1. Essayez-le en ligne!Chaque ligne occupe une ligne en tant que représentation de tableau, comme illustré ci-dessous. S'il n'est pas conforme aux spécifications, faites-le moi savoir et je le corrigerai.
la source
Cheddar ,
7949 octetsApparemment une fourchette de cette réponse .
Pour les
3,2
retours:la source
Gelée, 18 octets
Essaye le!
Étant donné (m, n) = (3, 2) , imprime (avec des espaces marqués comme
·
:)la source
C, 125 octets:
Prend l'entrée sous la forme de 2 entiers séparés par des espaces
b y
et génère la matrice jacobienne sousy
forme de chaînes séparées par des virgules sur lesb
lignes.C It Online! (Ideone) ou Test Suite (Ideone)
la source