Nach positiver oder halb-positiver definitiver Matrix suchen

7

Ich möchte überprüfen, ob eine Matrix mit Python positiv oder halb-positiv ist.

Wie kann ich das tun? Gibt es dafür eine spezielle Funktion in scipy oder in anderen Modulen?

    
sramij 06.04.2011, 08:51
quelle

5 Antworten

0

Eine gute Lösung besteht darin, alle Minoren von Determinanten zu berechnen und zu überprüfen, ob sie alle nicht negativ sind.

    
sramij 19.04.2011, 11:40
quelle
15

Ich nehme an, Sie wissen bereits, dass Ihre Matrix symmetrisch ist.

Ein guter Test für positive Bestimmtheit (eigentlich der Standard!) ist es, seine Cholesky-Faktorisierung zu berechnen. Es ist erfolgreich, wenn Ihre Matrix positiv definit ist.

Dies ist der direkteste Weg, da er O (n ^ 3) -Operationen (mit einer kleinen Konstante) benötigt, und Sie würden mindestens n Matrix-Vektor-Multiplikationen benötigen, um "direkt" zu testen.

    
Alexandre C. 06.04.2011 09:03
quelle
6

Cholesky-Zerlegung ist eine gute Option, wenn Sie mit positiv definiten (PD) Matrizen arbeiten.

Allerdings wird der folgende Fehler auf eine positive semi -Definite (PSD) -Matrix geworfen: sag,

%Vor%

Bei PSD-Matrizen können Sie scipy / numpy's eigh () verwenden, um zu überprüfen, ob alle Eigenwerte nicht-negativ sind.

%Vor%

Sie werden jedoch höchstwahrscheinlich Probleme mit der numerischen Stabilität haben. Um diese zu überwinden, können Sie die folgende Funktion verwenden.

%Vor%

Dies gibt True auf Matrizen zurück, die bis zu einer gegebenen Toleranz ungefähr PSD sind.

    
Tomer Levinboim 23.06.2013 21:48
quelle
3
Prüfen, ob die ganzen Eigenwerte einer symmetrischen Matrix A nicht negativ sind, ist zeitaufwändig, wenn A sehr groß ist, während das Modul scipy.sparse.linalg.arpack eine gute Lösung darstellt, da man die zurückgegebenen Eigenwerte durch Angabe von Parametern anpassen kann. siehe Scipy.sparse.linalg.arpack für weitere Informationen)

Da wir wissen, ob beide Enden des Spektrums von A nichtnegativ sind, müssen die restlichen Eigenwerte auch nicht negativ sein. Also können wir das so machen:

%Vor%

Dadurch müssen wir nur zwei Eigenwerte berechnen, um PSD zu überprüfen, ich denke, dass es sehr nützlich für große A

ist     
AnnabellChan 02.12.2014 08:42
quelle
0

Eine einfachere Methode besteht darin, die Determinanten der Minderjährigen für diese Matrix zu berechnen.

    
sramij 06.04.2011 11:58
quelle