Я работаю над библиотекой матриц только для заголовков, чтобы обеспечить некоторую разумную степень возможностей линейной алгебры в максимально простом пакете, и я пытаюсь рассмотреть, каково текущее состояние техники: вычисление SVD сложная матрица.
Я делаю двухфазную декомпозицию, бидиагонализацию с последующим вычислением сингулярных значений. Прямо сейчас я использую метод домохозяина для бидиагонализации (я полагаю, что LAPACK также использует это), и я думаю, что это примерно так же хорошо, как и в настоящее время (если кто-то не знает алгоритма для него ..) ,
Вычисление сингулярных значений является следующим в моем списке, и я несколько не в курсе того, что такое общие алгоритмы для этого. Я читал здесь, что исследование направлено на метод обратной итерации, который гарантирует ортогональность со сложностью . Мне было бы интересно услышать об этом или других достижениях.