Tester si une matrice est semi-définie positive


11

J'ai une liste L de matrices symétriques dont j'ai besoin pour vérifier la semi-définition positive (c'est-à-dire que leurs valeurs propres ne sont pas négatives.)

Le commentaire ci-dessus implique que l'on pourrait le faire en calculant les valeurs propres respectives et en vérifiant si elles ne sont pas négatives (peut-être en prenant soin des erreurs d'arrondi.)

Le calcul des valeurs propres est assez cher dans mon scénario, mais j'ai remarqué que la bibliothèque que j'utilise a un test assez rapide pour la précision positive (c'est-à-dire, si les valeurs propres d'une matrice sont strictement positives.)

D'où l'idée serait que, étant donné une matrice BL , on teste si B+ϵI est défini positif. Si ce n'est pas le cas, B n'est pas semi-défini positif, sinon on peut calculer les valeurs propres de B pour s'assurer qu'il est bien semi-défini positif.

Ma question est maintenant:

Existe-t-il un moyen plus direct et plus efficace de vérifier si une matrice est semi-définie positive, à condition qu'un test efficace de précision positive soit donné?


1
A


1
B+cIccc

Oui, vous pouvez déplacer les valeurs propres et calculer la plus petite valeur propre, mais vous avez toujours le problème de définir une certaine tolérance pour ce que vous accepterez (et de vous assurer que vos valeurs propres sont calculées au moins à cette tolérance!)
Brian Borchers

Je ne sais pas si cela serait utile, mais notez qu'une fois que vous savez qu'une matrice n'est pas définie positive, pour vérifier si elle est semi-définie positive, il vous suffit de vérifier si son noyau n'est pas vide.
Abel Molina

Réponses:


20

Quelle est votre définition de travail de "semi-définie positive" ou "définie positive"? Dans l'arithmétique à virgule flottante, vous devrez spécifier une sorte de tolérance pour cela.

Aλ=1.01030λ=1.0

λ maxϵ|λmax|λmax

Malheureusement, le calcul de toutes les valeurs propres d'une matrice prend beaucoup de temps. Une autre approche couramment utilisée est qu'une matrice symétrique est considérée comme définie positive si la matrice a une factorisation de Cholesky en arithmétique à virgule flottante. Le calcul de la factorisation de Cholesky est un ordre de grandeur plus rapide que le calcul des valeurs propres. Vous pouvez l'étendre à la semi-finesse positive en ajoutant un petit multiple de l'identité à la matrice. Encore une fois, il y a des problèmes de mise à l'échelle. Une approche rapide consiste à faire une mise à l'échelle symétrique de la matrice de sorte que les éléments diagonaux soient 1.0 et ajouter à la diagonale avant de calculer la factorisation de Cholesky. ϵ

Vous devez cependant faire attention à cela, car il y a des problèmes avec l'approche. Par exemple, il y a des circonstances où les et sont définis positifs dans le sens où ils ont des factorisations de Cholesky à virgule flottante, mais n'a pas de factorisation de Cholesky. Ainsi, l'ensemble des "matrices définies positives factorisables à virgule flottante" n'est pas convexe! B ( A + B ) / 2AB(A+B)/2


Pourriez-vous développer ce dernier paragraphe ou publier un lien vers une source? C'est assez bizarre.
Daniel Shapero

1
A. van der Slui est une référence classique à cette mise à l'échelle. Numéros de condition et équilibrage des matrices Numerische Mathematik 14 (1): 14-23, 1969. Il est également discuté dans des manuels tels que Golub et van Loan. Le bit dans le dernier paragraphe provient d'une expérience personnelle durement acquise dans la recherche de ligne de codage dans un code de programmation semi-fini - J'ai rencontré des situations où et ont des factorisations Cholesky par LAPACK, mais n'a pas de factorisation de Cholesky selon LAPACK. Ces types de problèmes commencent à se produire lorsque vous êtes presque singulier. X + α Δ X X + 0,95 α Δ XXX+αΔXX+0.95αΔX
Brian Borchers

Il n'est pas rare non plus de découvrir que certaines matrices peuvent être factorisées par Cholesky en précision étendue ou quadruple, mais pas en arithmétique en double précision ou en simple précision en virgule flottante.
Brian Borchers

3
Plusieurs des codes de points intérieurs primal-dual pour SDP (CSDP, SDPT3, SDPA) renvoient toujours des matrices qui sont définies positives et ont des factorisations Cholesky, tandis qu'un autre solveur populaire (SeDuMi) utilise une décomposition de valeurs propres et renverra des solutions qui ont de très petits négatifs valeurs propres.
Brian Borchers

3

4
On dirait que le nom d'utilisateur révèle à peu près la relation entre l'auteur de la réponse et l'auteur des articles. Un peu plus d'informations sur ce qui est contenu dans le document serait bien; cependant, de toute façon, c'est une question très intéressante et pertinente pour la liste des articles!
Anton Menshov
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.