Использование сингулярного разложения для вычисления собственных значений и собственных векторов симметричных матриц

Я знаю, что для симметричной матрицы сингулярные значения равны модулям собственных значений. Если матрица также является положительно полуопределенной, собственное разложение и разложение по сингулярным значениям идентичны. Мой вопрос касается симметричных матриц, которые не являются положительно полуопределенными, т. е. имеют хотя бы одно отрицательное собственное значение.

Я экспериментировал со случайно сгенерированными симметричными матрицами и обнаружил, что для положительного собственного значения собственный вектор после соответствующего выбора знака идентичен как левому, так и правому сингулярным векторам. Для отрицательного собственного значения собственный вектор равен левому или правому сингулярному вектору и равен оставшемуся сингулярному вектору, умноженному на -1. Я не смог привести контрпример.

Если это наблюдение верно для всех симметричных матриц, разложение по собственным значениям может быть легко получено из сингулярного векторного разложения для таких матриц путем замены знаков сингулярного значения и одного из сингулярных векторов, когда сингулярные векторы различаются знаками.

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

Ниже я привожу пример, сгенерированный написанной мной программой, которая использует циклический метод Якоби из научной библиотеки GNU для вычисления собственных значений и собственных векторов, а также функцию из mymathlib.com для вычисления SVD. Собственные значения и сингулярные значения были отсортированы по убыванию абсолютного значения. Знаки выбирались так, чтобы первая компонента собственных векторов и левых сингулярных векторов была положительной.

Мои вопросы: является ли мой предложенный алгоритм вычисления собственных значений и собственных векторов действительным для всех симметричных матриц? Если да, то есть ли причина предпочесть для таких вычислений другие методы, такие как циклический метод Якоби, а не SVD?

Matrix
------
69 47 -1 512
47 1 32 43
-1 32 27 40
512 43 40 88

Eigenvalues
-----------
599.067
-435.442
43.6227
-22.2481

Eigenvectors
------------
0.694513 0.711505 0.105479 0.0169263
0.10848 -0.0122921 -0.492832 -0.863248
0.0544405 0.0629158 -0.862857 0.498554
0.709169 -0.699751 0.0383271 0.0772006

Singular values
---------------
599.067
435.442
43.6227
22.2481

Left singular vectors
---------------------
0.694513 0.711505 0.105479 0.0169263
0.10848 -0.0122921 -0.492832 -0.863248
0.0544405 0.0629158 -0.862857 0.498554
0.709169 -0.699751 0.0383271 0.0772006

Right singular vectors
----------------------
0.694513 -0.711505 0.105479 -0.0169263
0.10848 0.0122921 -0.492832 0.863248
0.0544405 -0.0629158 -0.862857 -0.498554
0.709169 0.699751 0.0383271 -0.0772006

Обновлять

Цяочу Юань ответил, что для симметричной матрицы с различными сингулярными значениями мое наблюдение верно, т. е. что собственные значения и собственные векторы могут быть выведены из разложения по сингулярным числам. Однако в случае симметричной матрицы с повторяющимися сингулярными значениями алгоритм SVD не может гарантировать получение правильного решения, потому что svd может иметь кратности, соответствующие собственным значениям, которые различны (разные по знаку).

Мне потребовалось некоторое время, чтобы полностью понять ответ (сначала нужно было узнать, что собственные векторы — и сингулярные векторы — не уникальны в матрицах с повторяющимися собственными значениями). Затем я провел численные эксперименты и обнаружил, что контрпримеры к моему наблюдению могут быть легко сгенерированы как QDQ T , где Q — ортогональная матрица, сгенерированная QR-разложением случайной матрицы, а D — подходящая диагональная матрица с парой элементов отличающиеся только знаком.

Ответы (1)

Когда все сингулярные значения различны (что верно для случайных матриц с высокой вероятностью), это верно и легко доказывается. Писать А "=" U Д В Т . Затем А Т "=" В Д U Т "=" А "=" U Д В Т . В случае различных сингулярных значений сингулярные векторы уникальны в масштабе; следует, что если матрица А симметричен, то его левый и правый сингулярные векторы равны ± 1 раз друг друга. в + 1 случае они являются собственными векторами с собственным значением сингулярного значения, а в 1 случае они являются собственными векторами с собственным значением, отрицательным от сингулярного значения.

Когда сингулярные значения не отличаются друг от друга, возникает большая неясность в выборе SVD. Что верно в этом случае, так это то, что всегда можно найти SVD, где сингулярные векторы являются собственными векторами, но нет никаких причин, по которым алгоритм SVD гарантированно выдаст такой SVD. Проблема в том, что сингулярные значения могут иметь более высокие кратности, чем собственные значения, например, собственные значения могут быть ± 1 и тогда все сингулярные значения 1 .

Спасибо! Я построил новые матрицы ED E' из собственных векторов E из приведенного выше примера и новых диагональных матриц D либо с четырьмя различными, либо с двумя различными и двумя равными элементами. С 4 различными элементами алгоритмы сходились к одному и тому же результату. С 2 уникальными и 2 одинаковыми элементами оба алгоритма нашли все 4 собственных значения и сходились к одним и тем же e/s-векторам для уникальных элементов, но дали немного разные e/s-векторы для повторяющихся элементов. Могут ли эти слегка различающиеся диагонализации быть разными представлениями одной и той же матрицы? Или более сложная сходимость, если повторяются e-значения?
Дополнение к предыдущему комментарию: также для повторяющихся собственных значений левые и правые сингулярные векторы были равны в пределах машинной точности, если собственные значения были положительными, и отличались знаком только для отрицательных собственных значений.
@vibo: я ничего не знаю о вычислительных аспектах конкретных алгоритмов (в частности, я не знаю, как они разрывают связи при множественности), но что происходит, когда вы подключаетесь А "=" [ 1 0 0 1 ] алгоритму SVD?
Он возвращает S= [ 1 1 ] У= [ 1 0 0 1 ] В= [ 1 0 0 1 ] где U — левые, а V — правые сингулярные векторы. Насколько я понял из кода, алгоритм не заботится о связях. Он удаляет недиагональные элементы в двухэтапном процессе, при этом проверяя, что элементы на диагонали неотрицательны. Почему алгоритм должен заботиться о связях?