Я хочу найти собственное разложение симметричной матрицы, которое выглядит, например, так:
0 2 2 0
2 0 0 2
2 0 0 2
0 2 2 0
У него есть вырожденное собственное пространство, в котором вы, очевидно, имеете определенную свободу выбора собственных векторов. Есть ли библиотека для c ++, которую я могу заставить найти ортогональную основу такой, что H = UDU^{T}
?
В настоящее время я использую Eigen :: SelfAdjointEigenSolver. Это дает «неправильный» результат, так как тогда я должен использовать H = UDU^{-1}
. Матрицы будут иметь размеры 10000x10000 позже, поэтому я хочу опустить дополнительную инверсию матрицы.
Кто-нибудь знает о такой вещи?