Herausforderung
Bei neun Zahlen a, b, c, d, e, f, g, h, i
als Eingabe, die der Quadratmatrix entsprechen:
Finden Sie die Inverse der Matrix und geben Sie ihre Komponenten aus.
Inverse Matrix
Das Inverse einer Matrix 3 mal 3 folgt der folgenden Gleichung:
Und kann wie folgt berechnet werden:
Wobei die Matrix der Cofaktoren ist:
Und ist die transponierte C :
Und ist die Determinante von M :
Gearbeitetes Beispiel
Angenommen, die Eingabe lautet 0, -3, -2, 1, -4, -2, -3, 4, 1
. Dies entspricht der Matrix:
Berechnen wir zunächst die so genannte Determinante mit der obigen Formel:
Als nächstes berechnen wir die Matrix der Cofaktoren:
Wir müssen dann transponieren (Flip die Zeilen und Spalten) zu erhalten C T :
Schließlich können wir die Inverse finden als:
So wäre die Ausgabe 4, -5, -2, 5, -6, -2, -8, 9, 3
.
Regeln
Die angegebene Matrix hat immer eine Umkehrung (dh keine Singularität). Die Matrix kann selbstinvers sein
Die angegebene Matrix ist immer eine 3 x 3-Matrix mit 9 ganzen Zahlen
Die Zahlen in der Eingabe sind immer ganze Zahlen im Bereich
Nicht ganzzahlige Komponenten der Matrix können als Dezimalzahl oder als Bruchzahl angegeben werden
Beispiele
Input > Output
1, 0, 0, 0, 1, 0, 0, 0, 1 > 1, 0, 0, 0, 1, 0, 0, 0, 1
0, -3, -2, 1, -4, -2, -3, 4, 1 > 4, -5, -2, 5, -6, -2, -8, 9, 3
1, 2, 3, 3, 1, 2, 2, 1, 3 > -1/6, 1/2, -1/6, 5/6, 1/2, -7/6, -1/6, -1/2, 5/6
7, 9, 4, 2, 7, 9, 3, 4, 5 > -1/94, -29/94, 53/94, 17/94, 23/94, -55/94, -13/94, -1/94, 31/94
Gewinnen
Der kürzeste Code in Bytes gewinnt.
quelle
APL (Dyalog Classic), 1 Byte
Probieren Sie es online!
Wenn eine flache Lis erforderlich ist, sind dies 8 Bytes
Probieren Sie es online!
quelle
R,
51352785 BytesProbieren Sie es online!
Machen Sie zuerst eine dieser Golfherausforderungen. Entschuldigung, wenn meine Formatierung falsch ist!
Dank Giuseppe wurden zusätzliche 11 Bytes eingespart! Dank JAD wurden weitere 19 Bytes eingespart!
quelle
solve
, ist die Lösung gerechtsolve
, da sie alle Anforderungen der Frage erfüllt. Es nimmt eine Matrix als Eingabe und gibt eine Matrix zurück.Gelee , 3 Bytes
Probieren Sie es online!
Angenommen, wir können Eingaben vornehmen und eine 2D-Liste von ganzen Zahlen bereitstellen. Wenn eine flache Liste von ganzen Zahlen wirklich für Ein- und Ausgabe erforderlich ist, dann dies funktioniert für 6 Byte.
quelle
æ*
- Matrixexponentiation,-
- Exponent, der gleich ist-
ist ein Syntaxzeichen für negative Literale, standardmäßig jedochJavaScript (ES6), 123 Byte
2 Byte dank @ Mr.Xcoder
gespeichert 1 Byte dank @ETHproductions gespeichert
Nimmt die Eingabe als 9 verschiedene Werte an.
Probieren Sie es online!
quelle
J , 2 Bytes
Nur ein eingebautes Primitiv
Probieren Sie es online!
quelle
Python 2 , 139 Bytes
Probieren Sie es online! (Hat
return
stattprint
für eine einfache Prüfung.)quelle
Sauber , 143 Bytes
Probieren Sie es online!
quelle
Python 3, 77 Bytes
Nimmt die Eingabe als flache Liste.
Es sind 63 Bytes, wenn die Eingabe als 2D-Array verwendet wird:
quelle
Perl, 226 + 4 (
-plF,
Flag) = 230 BytesProbieren Sie es online aus .
quelle
Perl 5, 179 Bytes
Probieren Sie es online aus .
quelle
Nein, 168 Bytes
Probieren Sie es online aus
quelle
Google Sheets , 16 Bytes
Die Eingabe liegt im Bereich
A1:C3
Built-Ins sind langweilig
quelle
Pari / GP , 6 Bytes
Multiplikative Inverse im MatrixringMn .
Probieren Sie es online!
quelle
Clojure, 165 Bytes
Es tut mir leid, dass dies C in transponiert ausgibt, und ich fühle mich faul, diese langen Zeichenfolgen erneut zu machen, um es im Moment zu korrigieren.
quelle
APL (Dyalog), 7 Bytes
Nimmt Eingaben als flache Liste und gibt sie als flache Liste aus
Probieren Sie es online!
quelle