Die Cofaktormatrix ist die Transponierte der Adjugatmatrix . Die Elemente dieser Matrix sind die Cofaktoren der ursprünglichen Matrix.
Der Cofaktor (dh das Element der Cofaktormatrix in Zeile i und Spalte j) ist die Determinante der Submatrix, die durch Löschen der i-ten Zeile und j-ten Spalte aus der ursprünglichen Matrix gebildet wird, multipliziert mit (-1) ^ (i + j).
Zum Beispiel für die Matrix
Das Element der Cofaktormatrix in Zeile 1 und Spalte 2 ist:
Informationen zur Determinante einer Matrix und zu deren Berechnung finden Sie hier .
Herausforderung
Ihr Ziel ist es, die Cofaktormatrix einer Eingabematrix auszugeben.
Hinweis : Es sind integrierte Funktionen zulässig , die Cofaktormatrizen oder adjugierte Matrizen oder Determinanten oder ähnliches auswerten .
Eingang
Die Matrix kann als Befehlszeilenargument, als Funktionsparameter STDIN
oder auf eine Weise eingegeben werden, die für die von Ihnen verwendete Sprache am besten geeignet ist.
Die Matrix wird als Liste von Listen formatiert, wobei jede Unterliste einer Zeile entspricht, die die von links nach rechts geordneten Faktoren enthält. Die Zeilen werden in der Liste von oben nach unten sortiert.
Zum Beispiel die Matrix
a b
c d
wird vertreten durch [[a,b],[c,d]]
.
Sie können die eckigen Klammern und Kommas durch etwas anderes ersetzen, wenn es zu Ihrer Sprache passt und sinnvoll ist (z. B. ((a;b);(c;d))
).
Matrizen enthalten nur Ganzzahlen (die negativ sein können) .
Matrizen sind immer quadratisch (dh die gleiche Anzahl von Zeilen und Spalten).
Sie können davon ausgehen, dass die Eingabe immer korrekt ist (dh kein Formatierungsproblem, nichts anderes als Ganzzahlen, keine leere Matrix).
Ausgabe
Die resultierende Cofaktormatrix kann ausgegeben STDOUT
, von einer Funktion zurückgegeben, in eine Datei geschrieben oder in eine ähnliche Form gebracht werden , die der von Ihnen verwendeten Sprache entspricht.
Die Cofaktormatrix muss genauso formatiert sein, wie die Eingabematrizen angegeben sind, z [[d,-c],[-b,a]]
. Wenn Sie eine Zeichenfolge lesen, müssen Sie eine Zeichenfolge zurückgeben / ausgeben, in der die Matrix genau wie in der Eingabe formatiert ist. Wenn Sie beispielsweise eine Liste von Listen als Eingabe verwenden, müssen Sie auch eine Liste von Listen zurückgeben.
Testfälle
- Eingang:
[[1]]
Ausgabe: [[1]]
- Eingang:
[[1,2],[3,4]]
Ausgabe: [[4,-3],[-2,1]]
- Eingang:
[[-3,2,-5],[-1,0,-2],[3,-4,1]]
Ausgabe: [[-8,-5,4],[18,12,-6],[-4,-1,2]]
- Eingang:
[[3,-2,7,5,0],[1,-1,42,12,-10],[7,7,7,7,7],[1,2,3,4,5],[-3,14,-1,5,-9]]
Ausgabe:
[[9044,-13580,-9709,23982,-9737],[-1981,1330,3689,-3444,406],[14727,7113,2715,-9792,414],[-28448,-2674,-707,16989,14840],[-2149,2569,-2380,5649,-3689]]
Wertung
Das ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes.