Эффективно решить одну и ту же матрицу несколько раз в Matlab? - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть программа, которая включает решение довольно большой матрицы, ~ 3000 ^ 2, несколько раз на каждом временном шаге. Матрица остается прежней, но правая сторона изменяется, например Я решаю Ax = b, Ax = c и т. Д. В настоящее время я просто наивно использую обратную косую черту, так как много раз существуют матричные уравнения, которые мне нужно решить, даже если матрица одинакова в любой момент времени. Есть ли способ воспользоваться преимуществами матрицы, которая осталась прежней, чтобы ускорить процесс?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Если у вас есть MATLAB после R2017b, проверьте объект декомпозиции . Это создаст многоразовую факторизацию вашей матрицы, что сделает последующие линейные решения более эффективными. В частности, ознакомьтесь с первым примером на странице документа, в котором сравнивается использование объекта декомпозиции с выполнением серии линейных решений.

0 голосов
/ 10 сентября 2018
A\b

совпадает с

inv(A)*b

, хотя обычно рекомендуется первый, потому что он обеспечивает более точные результаты и имеет меньше проблем для определенных типов A. Но если последний достаточно хорош для вашего приложения, то обязательно предварительно вычислите inv(A). Это сэкономит много времени при решении многих уравнений, как в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...