W
- это высокая и тощая реальная матрица, а diag(S)
- диагональная матрица, состоящая из +1
или -1
на диагонали. Я хочу собственное разложение A = W * diag(S) * W'
, где одинарная кавычка обозначает транспонирование. Основная проблема в том, что A
довольно большой. Поскольку A
является симметричным, с недостатком ранга, и я действительно знаю максимальный ранг A
(из W
), я думаю, что я должен быть в состоянии сделать это эффективно. Есть идеи, как к этому подойти?
Моя конечная цель - вычислить матричную экспоненту A
без использования MATLAB expm
, который довольно медленный для больших матриц и не использует недостаток ранга. Если A = U * diag(Z) * U'
является собственным разложением, exp(A) = U * diag(exp(Z)) * U'
.
При нахождении ортогонального U
такого, что W * diag(S) * W' = U' * diag(Z) * U'
выглядит многообещающим, чтобы иметь простой алгоритм, мне нужна помощь по линейной алгебре.