Как лучше всего вычислить диагональ обратной симметричной плотной матрицы (2000 * 2000
)? В настоящее время я сначала вычисляю обратное, используя solve(x)
, а затем извлекаю диагональ (diag(y)
). Хотя это работает, но мне интересно, есть ли лучший способ сделать это, чтобы код работал быстрее. Я попробовал chol2inv()
, но это не сработало, так как моя матрица не является положительно определенной.
Обновление: для всех, кому это может быть интересно, я смог ускорить инверсию матрицы с помощью оптимизированной математической библиотеки Intel MKL. На моей машине инвертирование матрицы 2000 * 2000 занимает 3 секунды. Intel MKL доступен с Microsoft R Open.