Wdrożenie metody Jacobi-Davidsona dla problemu wartości własnej sześciennej

9

Mam duży problem wartości własnej sześciennej:

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

Mógłbym to rozwiązać, przechodząc na liniowy problem wartości własnych, ale spowodowałoby to, że układ byłby tak duży:32

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

gdzie i . Jakie inne techniki są dostępne, aby rozwiązać problem wartości własnej sześciennej? Słyszałem, że istnieje wersja Jacobi-Davidson, która ją rozwiąże, ale nie znalazła implementacji.y=λxz=λy

Ponadto muszę być w stanie celować w określone wartości własne podobnie do metody przesunięcia i odwracania ARPACK i znaleźć powiązane wektory własne.

OSE
źródło
Jakie są wymiary zaangażowanych macierzy?
Bill Barth
Ai jest zamówieniem 10000×10000 . Mam dwa różne sformułowania tego problemu, jeden w którym Ai jest gęsty, a drugi jest rzadki.
OSE
1
SLEPc ma procedury dla problemów z kwadratową wartością własną i nieliniowymi problemami z wartością własną, więc możesz być w stanie znaleźć tam, czego potrzebujesz. Ma również funkcje zmiany i odwracania oraz interfejs do ARPACK.
Geoff Oxberry

Odpowiedzi:

5

Dzięki protokołowi odwrotnej komunikacji ARPACK nie trzeba jawnie przechowywać macierzy : wystarczy podać dwie funkcje, które obliczają:3n×3n

[xyz][A0xyz] i [xyz][A1x+A2y+A3zyz]

(nadal płacisz cenę za przechowywanie wektorów wymiarowych ale nic nie płacisz za macierze).3×n

Jeśli chodzi o inwertowany przekształcać, można zrobić to samo, czyli wdrożenia go samodzielnie za pomocą wywołania zwrotnego, który oblicza zamiast i zastąpić komputerowej z . Aby obliczyć , możesz wstępnie wyliczyć swoją macierz , co oznacza tylko wstępne faktoring (przy użyciu LU, Cholesky'ego lub ich rzadkich wersji, w zależności od struktury macierzy). W przypadku pełnej transformacji z odwróconym przesunięciem myślę, że można zrobić coś podobnego.xM1xxMxλsλ1M1xMA0

BrunoLevy
źródło