2010-12-15 9 views

Antwort

6

Die adjugate ist wahrscheinlich nicht was Sie eigentlich wollen.

Wenn Sie das normale Adjungiert (die konjugierte Transponierte) wollen, dann wird es x' Ihnen für x geben. (Das nicht-konjugierte Transponierung ist x.' oder transpose(x). conj(x) das komplexe Konjugat gibt, und arbeitet auf Matrizen und Vektoren als auch.)

Wenn Sie tatsächlich die adjugate (aka classical adjoint) wollen, glaube ich nicht, Octave hat es eingebaut. Es gibt ein paar Möglichkeiten, dies zu berechnen. Wenn Sie Invertierbarkeit annehmen können, dann ist es nur det(x)*inv(x). Wenn nicht, ist es ein bisschen komplizierter. Im Allgemeinen ist das Adjugat die Transponierte der Cofaktormatrix. Die Cofaktor-Matrix ersetzt jedes Element in der ursprünglichen Matrix durch seinen Cofaktor (plus oder minus dessen Minor, der die Determinante der ursprünglichen Matrix ohne diese Zeile und Spalte ist. Die Plus- oder Minus-Regel ist für die determinante Erweiterung die gleiche - wenn die Summe der Reihe und Spalte ist gerade, es ist positiv, wenn es negativ ist, ist es ungerade).

Die einfachste codewise ist wahrscheinlich, die SVD (die eingebaut ist) zu verwenden - das Adjugat ist ein Antihomomorphismus mit adj (xy) = adj (y) adj (x). Die SVD von x ist eine Menge von Matrizen u, s, v, mit u * s * v '= x, s diagonal, u und v beide unitär. adj (x) = adj (u * s * v ') = adj (v') adj (s) adj (u). Für invertierbare Matrizen ist das Adjugat nur die Determinante mal die Inverse. Für unitäre Matrizen ist dies nur die konjugierte Transponierte. adj (x) = det (v ') v adj (s) det (u) u' = det (v '* u) v adj (s) u'. Das Adjugat einer Diagonalmatrix s ist relativ einfach zu berechnen - jeder Eintrag von der Diagonalen ist Null und jeder Eintrag auf der Diagonale ist das Produkt der anderen.

+1

Was ich wollte, war Matrix zu adjugieren und det (x) * inv (x) ist eine Lösung, danke. –

Verwandte Themen