броненосец редкий лу (или холески) разложение - PullRequest
0 голосов
/ 20 октября 2018

Мне нужно решить линейное уравнение (Ax = b), с большим разрежением A и с разностями b многократно.Таким образом, LU (или Cholesky, если A симметричен), факторизация крайне предпочтительна.

Я использую библиотеку броненосца и слышал, что можно использовать функцию:

spsolve(x, A, b, "superlu");

Для решения такой системы.Я не очень обеспокоен получением матриц L и U.Тем не менее, крайне важно, чтобы L и U не пересчитывались каждый раз, когда я вызываю spsolve.

Сохраняет ли spsolve(x, A, b, "superlu") разложение LU и, если нет, есть ли способ извлечь указанные матрицы?

1 Ответ

0 голосов
/ 26 октября 2018

Дело в том, что броненосец, по сути, является «завершением» для программного обеспечения, разработанного другими командами;это особенно верно для супер разреженного решателя.Запрашиваемая вами особенность (решение ряда систем уравнений с одной и той же матрицей, но с разными правыми частями) может вообще не существовать в броненосце.Вы, вероятно, должны использовать разреженный линейный решатель напрямую (не обязательно superlu), который имеет эту функцию.В случае, если ваша система очень большая, и решатель, основанный на факторизации, не может справиться с этим, итерационный решатель может с этим справиться, и в этом случае есть вариант: поскольку современные процессоры являются многоядерными, несколько независимых процессов решения могутработать параллельно.Один такой итерационный решатель описан в следующем блоге (вы можете задавать вопросы и / или участвовать в обсуждении там): http://comecau.blogspot.com/2018_09_05_archive.html

...