Według mojej wiedzy istnieją 4 sposoby rozwiązania układu równań liniowych (popraw mnie, jeśli jest więcej):
- Jeśli macierz systemowa jest kwadratową matrycą pełnego rzędu, można użyć reguły Cramera;
- Oblicz odwrotność lub pseudoinwersję macierzy systemowej;
- Użyj metod rozkładu macierzowego (eliminacja Gaussa lub Gaussa-Jordana jest uważana za rozkład LU);
- Użyj iteracyjnych metod, takich jak metoda gradientu sprzężonego.
W rzeczywistości prawie nigdy nie chcesz rozwiązywać równań za pomocą reguły Cramera lub obliczania odwrotności lub pseudoinwersji, szczególnie w przypadku matryc wielowymiarowych, więc pierwsze pytanie brzmi, kiedy należy zastosować odpowiednio metody rozkładu i metody iteracyjne. Myślę, że to zależy od wielkości i właściwości macierzy systemowej.
Drugie pytanie dotyczy twojej wiedzy, jakie metody dekompozycji lub metody iteracyjne są najbardziej odpowiednie dla określonej matrycy systemowej pod względem stabilności numerycznej i wydajności.
Na przykład metodę gradientu sprzężonego stosuje się do rozwiązywania równań, w których macierz jest symetryczna, a dodatnia jest określona, chociaż można ją również zastosować do dowolnych równań liniowych, przekształcając do . Również w przypadku dodatniej określonej macierzy można użyć metody rozkładu Cholesky'ego, aby znaleźć rozwiązanie. Ale nie wiem, kiedy wybrać metodę CG, a kiedy wybrać rozkład Choleskiego. Mam wrażenie, że lepiej byłoby zastosować metodę CG dla dużych matryc.
W przypadku matryc prostokątnych możemy użyć rozkładu QR lub SVD, ale znowu nie wiem, jak wybrać jedną z nich.
W przypadku innych macierzy nie wiem, jak wybrać odpowiedni solver, takie jak matryce hermitowskie / symetryczne, macierze rzadkie, macierze pasmowe itp.