Ich arbeite an einer Nur-Header-Matrixbibliothek, um einen angemessenen Grad an linearer Algebra in einem möglichst einfachen Paket bereitzustellen, und ich versuche, einen Überblick über den aktuellen Stand der Technik zu erhalten: die SVD von a komplexe Matrix.
Ich mache eine zweiphasige Zerlegung, Bidiagonalisierung, gefolgt von einer Berechnung des Singularwerts. Im Moment verwende ich die Householder-Methode für die Bidiagonalisierung (ich glaube, LAPACK verwendet diese Methode auch), und ich denke, das ist ungefähr so gut wie es derzeit ist (es sei denn, jemand kennt einen -Algorithmus dafür.) .
Die Singularwertberechnung steht als nächstes auf meiner Liste, und ich bin ein wenig unschlüssig, was die üblichen Algorithmen dafür sind. Ich habe hier gelesen , dass die Forschung auf eine inverse Iterationsmethode zusteuerte, die Orthogonalität mit -Komplexität garantiert . Ich würde gerne davon oder von anderen Fortschritten erfahren.