Sto lavorando su una libreria di matrici solo intestazione per fornire un ragionevole grado di capacità di algebra lineare nel più semplice pacchetto possibile, e sto cercando di esaminare quale sia l'attuale stato dell'arte: calcolare l'SVD di un matrice complessa.
Sto facendo una decomposizione in due fasi, bidiagonalizzazione seguita da un singolo calcolo del valore. In questo momento sto usando il metodo capofamiglia per la bidiagonalizzazione (credo che LAPACK usi anche questo), e penso che sia buono come lo è attualmente (a meno che qualcuno non conosca un algoritmo per esso ..) .
Il calcolo del valore singolare è il prossimo nella mia lista, e sono un po 'fuori dal giro su ciò che gli algoritmi comuni sono per fare questo. Ho letto qui che la ricerca si stava dirigendo verso un metodo di iterazione inversa che garantisce l'ortogonalità con complessità . Sarei interessato a conoscere questo o altri progressi.