Я пытаюсь переписать функцию 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 ++.
Задача ещё не решена.
Других решений пока нет …