Мне нужно рассчитать обратную матрицу и использовать solve
функцию. Хотя он хорошо работает на маленьких матрицах, он solve
имеет тенденцию быть очень медленным на больших матрицах. Мне было интересно, есть ли какая-либо другая функция или комбинация функций (через SVD, QR, LU или другие функции разложения), которые могут дать мне более быстрые результаты.
r
matrix-decomposition
matrix-inverse
Jitendra
источник
источник
solve
метод определенно делает мою работу, но я хочу, чтобы алгоритм был быстрее. Итак, мне просто интересно, есть ли более эффективная (во временном контексте) функция для вычисления инверсии для матрицы такого большого размера.solve
? Конечно, при отсутствии специальной структуры вы не можете выйти за пределы теоретической сложности общей инверсии матрицы.Ответы:
Вы пробовали, что предложил кардинал, и исследовали некоторые альтернативные методы вычисления обратного? Давайте рассмотрим конкретный пример:
solve
chol2inv(chol())
qr.solve()
Таким образом, обратное через разложение Холецки примерно в два раза быстрее
solve
. Конечно, могут быть даже более быстрые способы сделать это. Я только что исследовал некоторые из наиболее очевидных из них здесь. И, как уже упоминалось в комментариях, если матрица имеет особую структуру, то это, вероятно, можно использовать для большей скорости.источник
solve
:-)