MN08LAB: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m Zastępowanie tekstu – „.↵</math>” na „</math>”
m Zastępowanie tekstu – „,↵</math>” na „</math>,”
 
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 189: 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 201: 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 219: 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 236: 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 252: 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 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?

Wskazówka
Rozwiązanie

Ć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: Konwersja formatu macierzy rzadkiej

Napisz procedurę aij2csr, konwertującą macierz w formacie AIJ do CSR i csr2aij, działającą w drugą stronę.

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