Matrixanalysis

OP #3872598
hi,

ich habe eine C Methode, die mit einer mehrdimensionalen gauss'schen 
Normalverteilung arbeitet. Parameter der Methode sind die Mittelwerte 
und die Kovarianzmatrix. Alle Parameter sind reellwertig.
Siehe auch hier: 
http://de.wikipedia.org/wiki/Mehrdimensionale_Normalverteilung

Nun muss ich zunächst überprüfen, ob die Übergebene Matrix tatsächlich 
eine Kovarianzmatrix sein kann. Das Ding muss also symmetrisch und 
positiv semidefinit sein.
Siehe auch hier: http://de.wikipedia.org/wiki/Kovarianzmatrix

Symmetrie lässt sich einfach abprüfen; für die Semidefinitheit muss ich 
aber zeigen, dass die Eigenwerte alle nicht negativ sind. 
Eigenwertberechnungen erfordern allerdings das Lösen eines Polynoms 
n-ter Ordnung. Und das macht für beliebige Eingangsmatrizen im 
allgemeinen Fall nur wenig Spaß.

Das hätte ich gerne einfacher. Ich habe mir also mal die anderen 
Kriterien angesehen:
http://de.wikipedia.org/wiki/Definitheit#Kriterien_f.C3.BCr_Definitheit

Hier meine Ergebnisse
a) Eigenwerte <-- aufwändig
b) Hauptminoren <-- kann keine Semidefinitheit zeigen
c) Gaußsches Eliminationsverfahren <-- noch aufwändiger
d) Cholesky-Zerlegung <-- kein Nachweis, funktioniert nur falls 
Definitheit vorliegt
e) Diagonaldominante Matrizen <-- nicht in allen Fällen ein Nachweis

damit komme ich also nicht weiter.

Hier wird noch das Rayleigh-Kriterium angeführt. Und wenn der kleinste 
Eigenwert positiv ist, sind alle positiv:
https://inst.eecs.berkeley.edu/~ee127a/book/login/l_sym_sed.html

Das wird aber auf zu einem n-1 Dimensionalen Optimierungsproblem, das 
aber auch zu keiner geschlossenen Lösung führt. Ein Ansatz für 3D wäre 
hier, als Einsvektor in Kugelkoordinaten anzugeben und das Skalarprodukt 
zu minimieren über die beiden Parameter theta und phi.



Eigentlich kann das doch nicht so schwierig sein, oder?
Gast
A. S. schrieb:
> c) Gaußsches Eliminationsverfahren <-- noch aufwändiger
Hä? Easy.
. Sortieren nach führenden Nullen
. Jede Zeile i
.   Index j des ersten Nicht-Null Elementes finden
.   Zeile mit Element an [i][j] multiplizieren.
    für jede nachfolgende Zeile k
.     Wenn [k][j] != 0
.       [k] -=  [i] * [k][j]
.     Höchsten Nicht-Null Index in [k] finden und k mit dem Inversen 
multiplizieren

Fertig.
OP
okay, da meine Suche sonst zu nichts geführt hat, sehe ich mir gerade 
das Gauss-Verfahren nochmal an. Aus  wiki:
> Eine reelle symmetrische quadratische Matrix A ist genau dann positiv
> definit, wenn das Gaußsche Eliminationsverfahren bei Diagonalstrategie,
> das heißt ohne Zeilenvertauschungen, mit n positiven Pivotelementen
> durchgeführt werden kann.

Ich suche nach positiver Semidefinitheit.

Ich möchte also beispielsweise für die Matrix

0 0 0
0 1 0
0 0 0

herausbekommen, dass sie gültig ist, denn die Eigenwerte sind 0,0,1 und 
sie ist symmetrisch.

Das kann Gauss nicht liefern, oder?
Cholesky liefert sehr Wohl kriterium fuer positv semidefinit. Ist 
numeridch super. Bei Gauss ist auf jeden fall pivotsuche noetig, sonst 
wird es instabil.   Sowas nicht selber machen, da gibt es jede menge 
fallstricke, in 'Numerical recipes' abkupfern.
Math rulez!
Cheers
Detlef
OP
was ist denn das besagte kriterium?

auf wiki steht nur dass die Zerlegung existieren muss. Klar. Und wie 
weise ich nach, dass die Zerlegung existiert, wenn sie nur für positiv 
definite Matrizen definiert ist?

Rechnen, bis der Algo durch 0 dividiert?


Sagt mal wenn ich das Rayleigh-Kriterium ein bisschen weiterverfolge. Im 
Prinzip kann ich den Suchraum nach dem kleinsten Eigenwert als die n-1 
dimensionale Oberfläche einer n-dimensionalen Einheitskugel darstellen. 
Und diese Einheitskugel schneidet eine n-dimensionale Wolke, deren 
Hauptachsen alle aufeinander senkrecht stehen, richtig?
Kann ich da nicht mit irgendeiner Gradientenmethode zum kleinsten 
Eigenwert hinwandern (also da wo die Wolke am dünnsten ist)? Es dürfte 
ja keine lokalen Minima geben.
Oder passt mein Bild der "Wolke" nicht mehr, falls negative Eigenwerte 
vorliegen?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.