Passa al tema normale
Discussioni su Analisi Numerica e Ricerca Operativa

Regole del forum

Consulta il nostro regolamento e la guida per scrivere le formule
Rispondi al messaggio

Forzare una matrice ad essere definita positiva

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.

Re: Forzare una matrice ad essere definita positiva

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.

Re: Forzare una matrice ad essere definita positiva

05/04/2022, 14:38

Grazie della risposta.
Ho rimosso la Cholesky ma purtroppo cambia poco.
Rispondi al messaggio


Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000— Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.