MN08LAB: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przykry (dyskusja | edycje)
Dorota (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
<!--  
<!--  
Konwertowane  z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/&nbsp;pawlik1/latex2mediawiki.php
Konwertowane  z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/&nbsp;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, zadana
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, dodatnio określonej, sprawdź przy jakich założeniach o
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, w przeciwieństwie do
Dodawanie nowego elementu w formacie AIJ jest bardzo łatwe. W przeciwieństwie do
pozostałych, bo w nich trzeba zacowywać uporządkowanie. Mnożenie przez wektor
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 z nią
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, należy spodziewać się patologicznie dużej liczby iteracji. Chociaż dobry prekondycjoner mógłby pomóc:
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 Ax=b jest metoda Richardsona zadana wzorem

xk+1=xk+τ(bAxk),

gdzie τ jest pewnym parametrem. Gdy τ=1, 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 A symetrycznej dodatnio określonej sprawdź, przy jakich założeniach o τ metoda będzie zbieżna do rozwiązania x* z dowolnego wektora startowego x0 i oceń szybkość tej zbieżności.

Testuj na macierzy jednowymiarowego laplasjanu L różnych wymiarów. Jak najefektywniej zaimplementować mnożenie przez L?

Ćwiczenie

Zaimplementuj operacje:

  • mnożenia macierzy A przez wektor x,
  • wyłuskania wartości elementu Aij,
  • 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.

Rozwiązanie

Ćwiczenie

Jak tanio rozwiązywać układ równań z macierzą cykliczną trójdiagonalną, tzn.

A=(a1c1b1b2a2c2b3a3cN1cNbNaN)

Dla uproszczenia załóżmy, że macierz jest dodatnio określona i symetryczna.

Zaimplementuj opracowaną metodę, korzystając z BLASów i LAPACKa.

Wskazówka
Rozwiązanie

Ćwiczenie: CGNE

Ktoś mógłby sugerować, że skoro CG działa tylko dla macierzy symetrycznych, to dowolny układ Ax=b z macierzą nieosobliwą można transformować do równoważnego mu układu równań normalnych

ATAx=ATb,
,

którego macierz ATA jest już oczywiście macierzą symetryczną i dodatnio określoną.

Wskaż potencjalne wady tej metody i podaj sposób jej implementacji.

Wskazówka
Rozwiązanie