MN08LAB: Różnice pomiędzy wersjami
m MN Ćwiczenia 8 moved to MN08LAB |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
<!-- | <!-- | ||
Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php | Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php | ||
Linia 10: | Linia 9: | ||
<div class="exercise"> | <div class="exercise"> | ||
Jedną z najprostszych klasycznych metod iteracyjnych dla równania <math>\displaystyle Ax=b</math> jest metoda Richardsona | Jedną z najprostszych klasycznych metod iteracyjnych dla równania <math>\displaystyle Ax=b</math> jest metoda Richardsona zadana | ||
wzorem | wzorem | ||
Linia 20: | Linia 19: | ||
parametru <math>\displaystyle \tau</math> jest kluczowy dla skuteczności metody. | parametru <math>\displaystyle \tau</math> jest kluczowy dla skuteczności metody. | ||
Dla <math>\displaystyle A</math> symetrycznej | Dla <math>\displaystyle A</math> symetrycznej dodatnio określonej sprawdź, przy jakich założeniach o | ||
<math>\displaystyle \tau</math> metoda będzie zbieżna do rozwiązania <math>\displaystyle x^*</math> z dowolnego wektora startowego | <math>\displaystyle \tau</math> metoda będzie zbieżna do rozwiązania <math>\displaystyle x^*</math> z dowolnego wektora startowego | ||
<math>\displaystyle x_0</math> i oceń szybkość tej zbieżności. | <math>\displaystyle x_0</math> i oceń szybkość tej zbieżności. | ||
Linia 48: | Linia 47: | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em"> | ||
Dodawanie nowego elementu w formacie AIJ jest bardzo łatwe | Dodawanie nowego elementu w formacie AIJ jest bardzo łatwe. W przeciwieństwie do | ||
pozostałych, | pozostałych, w których trzeba zachowywać uporządkowanie. Mnożenie przez wektor | ||
najwygodniejsze jest w CSR. Wyłuskanie wartości jest najmniej efektywne w | najwygodniejsze jest w CSR. Wyłuskanie wartości jest najmniej efektywne w | ||
formacie AIJ. | formacie AIJ. | ||
Linia 73: | Linia 72: | ||
Dla uproszczenia załóżmy, że macierz jest dodatnio określona i symetryczna. | Dla uproszczenia załóżmy, że macierz jest dodatnio określona i symetryczna. | ||
Zaimplementuj opracowaną metodę korzystając z BLASów i LAPACKa. | Zaimplementuj opracowaną metodę, korzystając z BLASów i LAPACKa. | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | ||
Linia 83: | Linia 82: | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em"> | ||
Gdyby pominąć ostatni wiersz i kolumnę, macierz byłaby trójdiagonalna, a | Gdyby pominąć ostatni wiersz i kolumnę, macierz byłaby trójdiagonalna, a my już wiemy, co z nią zrobić... Jak więc sprytnie pozbyć się ostatniej niewiadomej i | ||
już wiemy, co zrobić... Jak więc sprytnie pozbyć się ostatniej niewiadomej i | |||
ostatniego równania? | ostatniego równania? | ||
W naszej macierzy wyróżnijmy ostatni wiersz i kolumnę: | W naszej macierzy wyróżnijmy ostatni wiersz i kolumnę: | ||
Linia 137: | Linia 135: | ||
<div class="exercise"> | <div class="exercise"> | ||
Ktoś mógłby sugerować, że skoro CG działa tylko dla macierzy symetrycznych, to dowolny układ <math>\displaystyle Ax=b</math> z macierzą nieosobliwą można transformować do równoważnego mu układu [[Dodaj WIKIlink|równań normalnych]] | Ktoś mógłby sugerować, że skoro CG działa tylko dla macierzy symetrycznych, to dowolny układ <math>\displaystyle Ax=b</math> z macierzą nieosobliwą można transformować do równoważnego mu układu [[Dodaj WIKIlink|równań normalnych]] | ||
<center><math>\displaystyle A^TAx = A^T b, | <center><math>\displaystyle A^TAx = A^T b, | ||
</math></center> | </math></center>, | ||
którego macierz <math>\displaystyle A^TA</math> jest już oczywiście macierzą symetryczną i dodatnio określoną. | którego macierz <math>\displaystyle A^TA</math> jest już oczywiście macierzą symetryczną i dodatnio określoną. | ||
Linia 156: | Linia 154: | ||
<center><math>\displaystyle \mbox{cond} (A^TA) = ( \mbox{cond} (A))^2, | <center><math>\displaystyle \mbox{cond} (A^TA) = ( \mbox{cond} (A))^2, | ||
</math></center> | </math></center>, | ||
a więc w przypadku macierzy źle uwarunkowanych | a więc w przypadku macierzy źle uwarunkowanych należy spodziewać się patologicznie dużej liczby iteracji. Chociaż dobry prekondycjoner mógłby pomóc: | ||
<center><math>\displaystyle MA^TMAx = MA^T Mb, | <center><math>\displaystyle MA^TMAx = MA^T Mb, | ||
</math></center> | </math></center>, | ||
to jednak znacznie lepiej stosować metody opracowane specjalnie dla maicerzy niesymetrycznych, np. GMRES (też z dobrym prekondycjonerem...). | to jednak znacznie lepiej stosować metody opracowane specjalnie dla maicerzy niesymetrycznych, np. GMRES (też z dobrym prekondycjonerem...). | ||
Linia 173: | Linia 171: | ||
y = B*x; | y = B*x; | ||
end | end | ||
</pre></div> | </pre></div>, | ||
gdyż <math>\displaystyle B</math> będzie bardziej wypełniona niż A. Znacznie lepiej | gdyż <math>\displaystyle B</math> będzie bardziej wypełniona niż A. Znacznie lepiej |
Wersja z 15:05, 25 wrz 2006
Ćwiczenia: układy liniowe z macierzami rzadkimi
Ć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
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.