Крупномасштабная инверсия разреженной матрицы и ее использование в ARPACK OP

Я пытаюсь переписать функцию Matlab Eigs в качестве оболочки C ++ ARPACK, потому что arpack ++ (оболочка C ++ для arpack) очень медленный в обычном режиме, режим сдвига-инвертирования не работает должным образом. Но я застрял и мне нужен удар. 🙂

LU Factorization

Функция Matlab:

function [L,U,pp,qq,dgAsB] = LUfactor
AsB = A;
[L,U,pp,qq,dgAsB] = lu(AsB);
end

Это какая-нибудь библиотека для c ++, которая возвращает мне вывод, подобный коду выше? И я хотел бы спросить, что означает qq и dgAsB. Значение L и U ясно и pp тоже, я изучил это в универе, но я не знаю, что означает другие.

Arpack OP

function [v] = AminusSigmaBsolve (u)

v = qq*(U \ (L \ (pp*(dgAsB \ u))));

end

Определен Arpack OP для режима инвертирования сдвига (A — sigma * I) ^ — 1 * I * u. Во-первых, я не могу понять, как код Matlab связан с Arpack OP. И я хотел бы спросить, существует ли какая-либо библиотека для C ++, с помощью которой я могу написать код эффективности AminusSigmaBsolve на C ++.

Спасибо за ваши ответы, потому что я хотел бы использовать такую ​​же эффективную программу, как Matlab на C ++.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]