Verifica se una matrice è semi-definita positiva


11

Ho un elenco di matrici simmetriche di cui ho bisogno per verificare la semi-definitività positiva (ovvero i loro autovalori non sono negativi).L

Il commento sopra implica che si potrebbe farlo calcolando i rispettivi autovalori e controllando se non sono negativi (forse dovendo occuparsi degli errori di arrotondamento).

Il calcolo degli autovalori è piuttosto costoso nel mio scenario, ma ho notato che la libreria che sto usando ha un test abbastanza veloce per la determinazione positiva (cioè se gli autovalori di una matrice sono strettamente positivi).

Quindi l'idea sarebbe che, data una matrice , si verifichi se è definito positivo. Se non lo è, allora non è semi-definito positivo, altrimenti si possono calcolare gli autovalori di per assicurarsi che sia effettivamente semi-definito positivo.BLB+ϵIBB

La mia domanda ora è:

Esiste un modo più diretto ed efficace per testare se una matrice è semi-definita positiva, a condizione che sia dato un test efficiente per la definizione positiva?


1
Il test che hai notato nella libreria è probabilmente basato sulla proposizione che la matrice reale simmetrica è definita positiva se e solo se ogni principio guida minore fornisce un determinante positivo, qualcosa che potrebbe essere verificato mediante eliminazione senza ruotare in esatto aritmetica. La sottile difficoltà di estenderlo a un caso semi-definito ha attirato molti autori in errori. So che l'argomento è stato trattato in una domanda Math.SE, quindi proverò a fornire un link. A
Hardmath,


1
Per quelle persone più competenti qui - funzionerebbe per spostare lo spettro in modo positivo aggiungendo per un grande , quindi trovare l'autovalore minimo del sistema spostato (ad es. Con iterazione inversa), quindi verificare se il più piccolo autovalore del sistema spostato è più piccolo del turno ? Lo spostamento potrebbe essere, ad esempio, il più grande autovalore di magnitudine che può essere trovato rapidamente. c c cB+cIccc
Nick Alger,

Sì, puoi spostare gli autovalori e calcolare il più piccolo autovalore, ma hai ancora il problema di impostare una certa tolleranza per ciò che accetti (e di assicurarti che i tuoi autovalori siano calcolati almeno con quella tolleranza!)
Brian Borchers

Non sono sicuro che ciò possa essere utile, ma nota che una volta che conosci una matrice non è definita positiva, per verificare se è semidefinito positivo devi solo verificare se il suo kernel non è vuoto.
Abel Molina,

Risposte:


20

Qual è la tua definizione operativa di "semidefinito positivo" o "definito positivo"? Nell'aritmetica in virgola mobile, dovrai specificare un tipo di tolleranza per questo.

È possibile definirlo in termini di autovalori calcolati della matrice. Tuttavia, dovresti prima notare che gli autovalori calcolati di una matrice si ridimensionano linearmente con la matrice, quindi ad esempio la matrice che ottengo moltiplicando per un fattore di un milione ha i suoi autovalori moltiplicati per un milione. È un autovalore negativo? Se tutti gli altri autovalori della tua matrice sono positivi e dell'ordine di , allora è effettivamente 0 e non dovrebbe essere trattato come autovalore negativo. Pertanto è importante tenere conto del ridimensionamento. λ = - 1,0 10 30 λ = - 1,0Aλ=1.01030λ=-1.0

Un approccio ragionevole è calcolare gli autovalori della tua matrice e dichiarare che la matrice è semidefinita numericamente positiva se tutti gli autovalori sono maggiori di, dove è il più grande autovalore. -ε|λmax|λmax

Sfortunatamente, calcolare tutti gli autovalori di una matrice richiede piuttosto tempo. Un altro approccio comunemente usato è che una matrice simmetrica è considerata definita positiva se la matrice ha una fattorizzazione di Cholesky nell'aritmetica in virgola mobile. Il calcolo della fattorizzazione di Cholesky è un ordine di grandezza più veloce rispetto al calcolo degli autovalori. Puoi estenderlo a semidefinità positiva aggiungendo un piccolo multiplo dell'identità alla matrice. Ancora una volta, ci sono problemi di ridimensionamento. Un approccio rapido è quello di eseguire un ridimensionamento simmetrico della matrice in modo che gli elementi diagonali siano 1.0 e aggiungano alla diagonale prima di calcolare la fattorizzazione di Cholesky. ε

Dovresti stare attento con questo, perché ci sono alcuni problemi con l'approccio. Ad esempio, ci sono circostanze in cui e sono definite postive, nel senso che hanno fattorizzazioni di Cholesky a virgola mobile, ma non ha una fattorizzazione di Cholesky. Quindi l'insieme delle "matrici definite positive realizzabili in virgola mobile di Cholesky" non è convesso! UNB(UN+B)/2


Potresti approfondire l'ultimo paragrafo o pubblicare un link a una fonte? È piuttosto bizzarro.
Daniel Shapero,

1
Un classico riferimento a questo ridimensionamento è A. van der Slui. Numeri di condizione ed equilibrazione delle matrici Numerische Mathematik 14 (1): 14-23, 1969. Viene anche discusso in libri di testo come Golub e van Loan. Il bit nell'ultimo paragrafo proviene dall'esperienza personale vinta duramente nella ricerca di linee di codifica in un codice di programmazione semidefinito: ho riscontrato situazioni in cui e hanno fattorizzazioni Cholesky di LAPACK, ma non ha una fattorizzazione di Cholesky secondo LAPACK. Questi tipi di problemi iniziano a verificarsi quando sei quasi singolare. X + α Δ X X + 0,95 α Δ XXX+αΔXX+0.95αΔX
Brian Borchers,

Inoltre, non è raro scoprire che alcune matrici possono essere fattorizzate in Cholesky con precisione estesa o quadrupla, ma non con la normale precisione doppia o in virgola mobile a precisione singola.
Brian Borchers,

3
Molti dei codici di punti interni primal-dual per SDP (CSDP, SDPT3, SDPA) restituiscono sempre matrici che sono definite positive e hanno fattorizzazioni di Cholesky, mentre un altro solutore popolare (SeDuMi) usa una decomposizione di autovalori e restituirà soluzioni che hanno un negativo molto piccolo autovalori.
Brian Borchers,

3

4
Sembra che il nome utente sveli praticamente il rapporto tra l'autore della risposta e l'autore degli articoli. Un po 'più di informazioni su ciò che è contenuto nel documento sarebbe bello; anche se, comunque, è molto interessante e rilevante per l'elenco delle domande dei documenti!
Anton Menshov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.