Forzare una matrice ad essere definita positiva

Messaggioda Silent » 04/04/2022, 08:50

Buongiorno,
mi trovo ad avere a che fare con delle manipolazioni di matrici (definite positive), il cui risultato sulla carta è ancora una matrice definita positiva. Tuttavia, per problemi di natura numerica, implementando il calcolo in Matlab mi succede spesso che la matrice risultato ha un autovalore negativo (molto prossimo allo zero).
Ho trovato in rete questa funzione che risolve il problema: https://it.mathworks.com/matlabcentral/ ... nearestspd

ma il calcolo rallenta abbastanza la macchina su cui gira.

Che voi sappiate, esiste un metodo (anche un pò più grezzo di quello linkato) che potrei attuare alla matrice finale per far sì che essa torni di nuovo ad essere definita positiva? Nella sostanza lo è già, ma approssimazioni numeriche le impediscono di esserlo.

Grazie in anticipo per qualunque dritta.
Silent
Senior Member
Senior Member
 
Messaggio: 769 di 1612
Iscritto il: 23/02/2013, 15:40

Re: Forzare una matrice ad essere definita positiva

Messaggioda feddy » 04/04/2022, 09:06

Non ero a conoscenza di questo problema, ma vedo che l'algoritmo implementato e' basato su un lavoro di N. Higham, quindi probabilmente dovunque cercherai troverai una referenza a questo, come qui.


Che ordine di grandezza hai per le dimensioni della tua matrice? Ho dato una rapida occhiata, alla fine usa Cholesky per testare se effettivamente e' PD, magari puoi rimuovere quelle righe se non l'hai gia' fatto.
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2919 di 5941
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Forzare una matrice ad essere definita positiva

Messaggioda Silent » 05/04/2022, 14:38

Grazie della risposta.
Ho rimosso la Cholesky ma purtroppo cambia poco.
Silent
Senior Member
Senior Member
 
Messaggio: 770 di 1612
Iscritto il: 23/02/2013, 15:40


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite