W aplikacjach pojawiają się rzadkie systemy liniowe. Do rozwiązania tych systemów jest wiele procedur do wyboru. Na najwyższym poziomie istnieje przełom między metodami bezpośrednimi (np. Rzadka eliminacja Gaussa lub rozkład Choleskiego, ze specjalnymi algorytmami porządkowania i metodami wielopłaszczyznowymi) i iteracyjnymi (np. GMRES, gradient (sprzężony)).
Jak określić, czy zastosować metodę bezpośrednią, czy iteracyjną? Po dokonaniu wyboru, jak wybrać konkretny algorytm? Wiem już o wykorzystaniu symetrii (np. Użyj gradientu sprzężonego dla rzadkiego symetrycznego pozytywnego określonego systemu), ale czy są jakieś inne względy, które należy wziąć pod uwagę przy wyborze metody?
Wybór między metodami bezpośrednimi a iteracyjnymi zależy od celów i aktualnego problemu.
W przypadku metod Direct możemy zauważyć:
W przypadku metod iteracyjnych możemy zauważyć:
Wskazówki, kiedy stosować metody bezpośrednie lub iteracyjne?
źródło
Całkowicie zgadzam się z odpowiedziami już udzielonymi. Chciałem dodać, że wszystkie metody iteracyjne wymagają pewnego wstępnego odgadnięcia. Jakość tej wstępnej domysły może często wpływać na współczynnik konwergencji wybranej metody. Metody takie jak Jacobi, Gauss Seidel i Successive Over Relaxation działają w celu iteracyjnego „wygładzenia” jak największej liczby błędów na każdym kroku ( szczegóły w tym dokumencie). Pierwsze kilka kroków dość szybko zmniejsza błąd wysokiej częstotliwości, ale błąd niskiej częstotliwości wymaga znacznie więcej itracji, aby go wygładzić. To powoduje, że konwergencja tych metod jest powolna. W takich przypadkach możemy przyspieszyć konwergencję, rozwiązując najpierw błąd niskiej częstotliwości (np. Rozwiązując ten sam problem na grubszej siatce), a następnie rozwiązując błąd wyższej częstotliwości (np. Na drobniejszej siatce). Jeśli zastosujemy tę koncepcję rekurencyjnie przez dzielenie i podbijanie, otrzymamy tak zwaną metodę Multi-grid. Nawet jeśli układ liniowy nie jest symetryczny, istnieją alternatywne implementacje metody wielosiatkowej dla dowolnego niesingularnego układu macierzy rzadkich (np. Algebraiczna metoda wielosiatkowa), które mogą przyspieszyć zbieżność rozwiązania. Ich skalowalność w systemach równoległych jest jednak przedmiotem wielu badań.
źródło
W twoim pytaniu brakuje ważnej informacji: skąd pochodzi macierz. Struktura problemu, który próbujesz rozwiązać, ma duży potencjał do zasugerowania metody rozwiązania.
Jeśli macierz pochodzi z równania różniczkowego cząstkowego o gładkich współczynnikach, trudno będzie pokonać geometryczną metodę wielosiatkową, zwłaszcza w trzech wymiarach. Jeśli twój problem jest mniej regularny, dobrą metodą jest algebraiczna wielosieciowość. Oba zwykle łączy się z metodami Kryłowa-przestrzeni. Inne wydajne solwery można uzyskać z szybkich metod multipolowych lub szybkiej transformaty Fouriera.
źródło