У меня есть большая проблема с кубическим собственным значением:
Я мог бы решить это путем преобразования в линейную задачу на собственные значения, но это привело бы к системе как большой:
где а также , Какие еще методы доступны для решения проблемы кубических собственных значений? Я слышал, что есть версия Якоби-Дэвидсона, которая решит ее, но не нашла реализации.
Кроме того, мне нужно иметь возможность нацеливаться на конкретные собственные значения аналогично методу ARPACK со смещением и инвертированием и находить соответствующие собственные векторы.
Ответы:
При использовании протокола обратной связи ARPACK вам не нужно хранить3n×3n матрица явно: вам просто нужно предоставить две функции, которые вычисляют:
(вы все еще платите за хранение3×n -мерные векторы, но вы ничего не платите за матрицы).
Что касается обратного преобразования, вы можете сделать то же самое, то есть реализовать его самостоятельно, используя обратный вызов, который вычисляетx↦M−1x вместо x↦Mx и заменить вычисленные λ′s с λ−1 , ВычислитьM−1x , вы можете предварительно фактор вашей матрицы M , что означает только предварительный факторинг A0 (используя LU, Cholesky, или их редкие версии в зависимости от структуры матрицы). Для полного преобразования с возвратом в сдвиг я думаю, что нечто подобное можно сделать.
источник