Использование функции inv() в Matlab приводит к сбою, используя всю оперативную память

У меня есть разреженная матрица в Matlab 43916x43916, которая рассчитывается по этому уравнению:

B=(speye(nV,nV)-alpha*NeMatrix+beta*NeMatrix*NeMatrix);

будучи nVa int, alphaa int, NeMatrix разреженной матрицей и beta int.

Я не могу сделать inv(B), потому что это увеличивает использование оперативной памяти до тех пор, пока не произойдет сбой. Я пробовал LU уже без успеха.

Как я могу альтернативно вычислить эту обратную матрицу?


person SamuelNLP    schedule 25.04.2013    source источник


Ответы (1)


Обратной будет плотная матрица. Таким образом, вы должны проверить, сможете ли вы справиться с матрицей такого размера. Попробуйте, например, настроить ones(nV,nV) ... Если у вас достаточно памяти, вы можете рассмотреть возможность вычисления обратного столбца. i-й столбец будет B\ei, где ei — i-й единичный вектор.

ОДНАКО, в численных вычислениях вам вряд ли понадобится обратная матрица B. В большинстве случаев достаточно B\v, где v — вектор. Так что вам лучше проверить, действительно ли вам нужна полная инверсия...

person Jan    schedule 25.04.2013
comment
Я заменил инв (B). Bx = C, x = B\C. Спасибо. - person SamuelNLP; 25.04.2013