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.
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.
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:
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
Tags und Links python math scipy scientific-computing