MN08LAB: Różnice pomiędzy wersjami
m Zastępowanie tekstu – „<math> ” na „<math>” |
m Zastępowanie tekstu – „,↵</math>” na „</math>,” |
||
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) | |||
Linia 22: | Linia 22: | ||
wzorem | wzorem | ||
<center><math>x_{k+1} = x_k + \tau (b- Ax_k) | <center><math>x_{k+1} = x_k + \tau (b- Ax_k)</math>,</center> | ||
</math></center> | |||
gdzie <math>\tau</math> jest pewnym parametrem. Gdy <math>\tau=1</math>, mamy do czynienia ze zwykłą | gdzie <math>\tau</math> jest pewnym parametrem. Gdy <math>\tau=1</math>, mamy do czynienia ze zwykłą | ||
Linia 46: | Linia 45: | ||
Co więcej, <math>||B||_2 < 1</math> wtedy i tylko wtedy, gdy <math>0 < \tau < \frac{2}{\lambda_{\max}}</math>, a najmniejszą normę spektralną macierzy <math>B</math> uzyskamy, gdy <math>\tau = \frac{2}{\lambda_{\max} + \lambda_{\min}}</math> i wówczas | Co więcej, <math>||B||_2 < 1</math> wtedy i tylko wtedy, gdy <math>0 < \tau < \frac{2}{\lambda_{\max}}</math>, a najmniejszą normę spektralną macierzy <math>B</math> uzyskamy, gdy <math>\tau = \frac{2}{\lambda_{\max} + \lambda_{\min}}</math> i wówczas | ||
<center><math>||x_k-x||_2 \leq \frac{\lambda_{\max} - \lambda_{\min}}{\lambda_{\max} + \lambda_{\min}}||x_{k-1}-x||_2 | <center><math>||x_k-x||_2 \leq \frac{\lambda_{\max} - \lambda_{\min}}{\lambda_{\max} + \lambda_{\min}}||x_{k-1}-x||_2</math></center> | ||
</math></center> | |||
(Przy okazji zauważ, że gdyby macierz <math>A</math> nie była określona, tzn. miałaby zarówno dodatnie, jak i ujemne wartości własne, to metoda Richardsona mogłaby w ogóle nie być zbieżna (dla pewnych wektorów startowych)) | (Przy okazji zauważ, że gdyby macierz <math>A</math> nie była określona, tzn. miałaby zarówno dodatnie, jak i ujemne wartości własne, to metoda Richardsona mogłaby w ogóle nie być zbieżna (dla pewnych wektorów startowych)) | ||
Linia 190: | Linia 188: | ||
T & v\\ | T & v\\ | ||
w^T & a_N | w^T & a_N | ||
\end{pmatrix} | \end{pmatrix} </math>,</center> | ||
</math></center> | |||
gdzie <math>T</math> jest <math>N-1</math> podmacierzą główną <math>A</math>, | gdzie <math>T</math> jest <math>N-1</math> podmacierzą główną <math>A</math>, | ||
Linia 202: | Linia 199: | ||
& & \ddots & \ddots & c_{N-2}\\ | & & \ddots & \ddots & c_{N-2}\\ | ||
& & & b_{N-1} & a_{N-1} | & & & b_{N-1} & a_{N-1} | ||
\end{pmatrix} | \end{pmatrix} </math>,</center> | ||
</math></center> | |||
natomiast <math>w^T = [c_N, 0, \ldots, 0, b_N]</math>, <math>v = [b_1, 0, \ldots, 0, | natomiast <math>w^T = [c_N, 0, \ldots, 0, b_N]</math>, <math>v = [b_1, 0, \ldots, 0, | ||
Linia 220: | Linia 216: | ||
U & u\\ | U & u\\ | ||
& u_N | & u_N | ||
\end{pmatrix} | \end{pmatrix} </math>,</center> | ||
</math></center> | |||
gdzie spełnione są zależności | gdzie spełnione są zależności | ||
Linia 237: | Linia 232: | ||
Ktoś mógłby sugerować, że skoro CG działa tylko dla macierzy symetrycznych, to dowolny układ <math>Ax=b</math> z macierzą nieosobliwą można transformować do równoważnego mu układu [[MN12#Układ równań normalnych|równań normalnych]] | Ktoś mógłby sugerować, że skoro CG działa tylko dla macierzy symetrycznych, to dowolny układ <math>Ax=b</math> z macierzą nieosobliwą można transformować do równoważnego mu układu [[MN12#Układ równań normalnych|równań normalnych]] | ||
<center><math>A^TAx = A^T b | <center><math>A^TAx = A^T b</math>,</center> | ||
</math></center> | |||
którego macierz <math>A^TA</math> jest już oczywiście macierzą symetryczną i dodatnio określoną. | którego macierz <math>A^TA</math> jest już oczywiście macierzą symetryczną i dodatnio określoną. | ||
Linia 253: | Linia 247: | ||
Nietrudno sprawdzić, że dla normy spektralnej macierzy, | Nietrudno sprawdzić, że dla normy spektralnej macierzy, | ||
<center><math>\mbox{cond} (A^TA) = ( \mbox{cond} (A))^2 | <center><math>\mbox{cond} (A^TA) = ( \mbox{cond} (A))^2</math>,</center> | ||
</math></center> | |||
a więc w przypadku macierzy źle uwarunkowanych należy spodziewać się patologicznie dużej liczby iteracji. Chociaż dobre (symetryczne, dodatnio określone) imadło <math>M</math> mogłoby pomóc, np. | a więc w przypadku macierzy źle uwarunkowanych należy spodziewać się patologicznie dużej liczby iteracji. Chociaż dobre (symetryczne, dodatnio określone) imadło <math>M</math> mogłoby pomóc, np. | ||
<center><math>MA^TMAx = MA^T Mb | <center><math>MA^TMAx = MA^T Mb</math>,</center> | ||
</math></center> | |||
to jednak znacznie lepiej stosować metody opracowane specjalnie dla macierzy niesymetrycznych, np. GMRES (oczywiście z nieodzownym ściskaniem macierzy, gdy jest źle uwarunkowana...). | to jednak znacznie lepiej stosować metody opracowane specjalnie dla macierzy niesymetrycznych, np. GMRES (oczywiście z nieodzownym ściskaniem macierzy, gdy jest źle uwarunkowana...). |
Aktualna wersja na dzień 21:49, 11 wrz 2023
Układy liniowe z macierzami rzadkimi
<<< Powrót do strony głównej przedmiotu Metody numeryczne
Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__
Ćwiczenie: Metoda Richardsona
Jedną z najprostszych klasycznych metod iteracyjnych dla równania jest metoda Richardsona, zadana wzorem
gdzie jest pewnym parametrem. Gdy , mamy do czynienia ze zwykłą metodą iteracji prostej, która najczęściej nie będzie zbieżna, dlatego wybór parametru jest kluczowy dla skuteczności metody.
Dla symetrycznej, dodatnio określonej sprawdź, przy jakich założeniach o metoda będzie zbieżna do rozwiązania z dowolnego wektora startowego i oceń szybkość tej zbieżności.
Testuj na macierzy jednowymiarowego laplasjanu różnych wymiarów. Jak najefektywniej zaimplementować mnożenie przez ?
Ćwiczenie
Zaimplementuj operacje:
- mnożenia macierzy przez wektor ,
- wyłuskania wartości elementu ,
- zmiany wartości pewnego zerowego wyrazu macierzy na niezerową,
jeśli macierz jest zadana w formacie
- AIJ,
- CSC,
- CSR.
Przetestuj dla kilku macierzy z kolekcji MatrixMarket.
Ćwiczenie: Konwersja formatu macierzy rzadkiej
Napisz procedurę aij2csr
, konwertującą macierz w formacie AIJ do CSR i csr2aij
, działającą w drugą stronę.
Ćwiczenie
Jak tanio rozwiązywać układ równań z macierzą cykliczną trójdiagonalną, tzn.
Dla uproszczenia załóżmy, że macierz jest dodatnio określona i symetryczna.
Zaimplementuj opracowaną metodę, korzystając z BLASów i LAPACKa.
Ćwiczenie: CGNE
Ktoś mógłby sugerować, że skoro CG działa tylko dla macierzy symetrycznych, to dowolny układ z macierzą nieosobliwą można transformować do równoważnego mu układu równań normalnych
którego macierz jest już oczywiście macierzą symetryczną i dodatnio określoną.
Wskaż potencjalne wady tej metody i podaj sposób jej implementacji.