Реализация метода Якоби-Дэвидсона для кубической задачи на собственные значения

9

У меня есть большая проблема с кубическим собственным значением:

(A0+λA1+λ2A2+λ3A3)x=0.

Я мог бы решить это путем преобразования в линейную задачу на собственные значения, но это привело бы к системе 32 как большой:

[A0000I000I][xyz]=λ[A1A2A3I000I0][xyz],

где y=λx а также z=λy, Какие еще методы доступны для решения проблемы кубических собственных значений? Я слышал, что есть версия Якоби-Дэвидсона, которая решит ее, но не нашла реализации.

Кроме того, мне нужно иметь возможность нацеливаться на конкретные собственные значения аналогично методу ARPACK со смещением и инвертированием и находить соответствующие собственные векторы.

OSE
источник
Каковы размеры задействованных матриц?
Билл Барт
Ai это порядок 10000×10000, У меня есть две разные формулировки этой проблемы, одна в которойAiплотный, а в другом он редкий.
OSE
1
В SLEPc есть подпрограммы для квадратичных задач на собственные значения и нелинейных задач на собственные значения, так что вы можете найти то, что вам нужно. Он также имеет функции сдвига и инвертирования и имеет интерфейс к ARPACK.
Джефф Оксберри

Ответы:

5

При использовании протокола обратной связи ARPACK вам не нужно хранить 3n×3n матрица явно: вам просто нужно предоставить две функции, которые вычисляют:

[xyz][A0xyz] а также [xyz][A1x+A2y+A3zyz]

(вы все еще платите за хранение 3×n-мерные векторы, но вы ничего не платите за матрицы).

Что касается обратного преобразования, вы можете сделать то же самое, то есть реализовать его самостоятельно, используя обратный вызов, который вычисляет xM1x вместо xMx и заменить вычисленные λs с λ1, ВычислитьM1x, вы можете предварительно фактор вашей матрицы M, что означает только предварительный факторинг A0(используя LU, Cholesky, или их редкие версии в зависимости от структуры матрицы). Для полного преобразования с возвратом в сдвиг я думаю, что нечто подобное можно сделать.

BrunoLevy
источник