Obliczenia naukowe i metody numeryczne laboratorium

Transkrypt

Obliczenia naukowe i metody numeryczne laboratorium
Obliczenia naukowe i metody numeryczne
laboratorium komputerowe
lista 3 – 5 października 2012
Temat: rozwiązywanie układów równań liniowych, obliczanie macierzy odwrotnej, eliminacja
Gaussa, rozkład Cholesky’ego
Zadanie 1.
Wykonaj następujące eksperymenty numeryczne dla różnych typów macierzy A:
• Rozwiąż układ
Ax = b,
gdzie b = A ∗ ones(n, 1). Zastosuj polecenie \ do rozwiązania układu. Oceń dokładność obliczonego rozwiązania.
• Oblicz za pomocą inv macierz odwrotną A−1 i rozwiązanie x = A−1 b. Porównaj
tak obliczone rozwiązanie z rozwiązaniem otrzymanym poprzednio i rozwiązaniem
dokładnym. Wyznacz normy residuów
r = b − Ax(obl) ,
x(obl)
obliczone rozwiazanie
oraz błędy względne dla obliczonych rozwiązań (zastosuj norm)
||x − x(obl) ||
,
||x||
gdzie x jest dokładnym rozwiązaniem układu (zob. powyższy sposób wyznaczania
b).
• Oblicz wyznacznik macierzy A oraz wskaźnik uwarunkowania cond(A).
• Napisz własną realizację eliminacji Gaussa - bez wyboru elementu głównego - i
powtórz eksperymenty. Wyznacz czynnik wzrostu ρ
(k)
maxi,j,k |aij |
ρn =
,
maxij |aij |
gdzie A(1) = A, A(k) są kolejnymi macierzami wyznaczanymi w trakcie eliminacji.
• Wykonaj testy dla macierzy różnego typu, np. dla macierzy Pascala: pascal(n),
Hilberta: hilb(n) oraz innych dostępnych w MATLABie (napisz: help gallery).
• Sprawdż działanie \ na przykładzie układu z macierzą osobliwą!
Zadanie 2
Zbadaj wpływ zaburzeń macierzy układu Ax = b i wektora prawych stron b na rozwiązanie układu, gdzie b = A ∗ ones(n, 1).
1
• Porównaj rozwiązanie x(doklad) = x układu Ax = b z rozwiązaniem x(zaburz) =
y układu zaburzonego (A + ∆A)y = b dla różnych macierzy zaburzeń ∆A i z
rozwiązaniem x(zaburz) = z układu zaburzonego Az = b + δb dla różnych zaburzeń
δb.
• Oceń eksperymentalnie, czy teoretyczne oszacownia z wykładu – opisujące wrażliwość rozwiązania na zaburzenia elementów macierzy układu – są realistyczne, czyli
porównaj wielkość tych oszacowań z faktycznym błędem względnym.
• Oblicz ||∆A||.
• Zastosuj cond do obliczenia wskaźnika uwarunkowania cond (A) = ||A|| ||A−1 ||.
• Zastosuj polecenie \ do rozwiązania układów.
• Oblicz błędy względne dla obliczonych rozwiązań układu zaburzonego
||x(doklad) − x(zaburz) ||
,
||x(doklad) ||
gdzie x(dokld) jest rozwiązaniem układu niezaburzonego (zob. powyższy sposób wyznaczania b).
• Wykonaj testy dla różnych macierzy A – zobacz poprzednie zadanie.
• Generuj też losowe macierze A o zadanym z góry wskaźniku uwarunkowania w
następujący sposób. Wygeneruj losową macierz B. Wyznacz jej rozkład SVD za
pomocą funkcji svd: B = U ΣV T , gdzie U, V macierze ortogonalne, Σ - przekątniowa. Oblicz A z wzoru A = U DV T , gdzie D jest zadaną macierzą przekątniową.
Obliczenia wykonaj dla różnych macierzy D. Jak je wybrać, żeby A była dobrze
lub źle uwarunkowana?
Zadanie 3.
Oblicz macierz odwrotną A−1 stopnia n następującymi metodami:
• Rozwiąż układy równań Axj = ej (j = 1, 2, . . . , n), gdzie ej jest j-tą kolumną
macierzy jednostkowej stopnia n. Rozwiązanie xj tego układu jest j-tą kolumną
macierzy odwrotnej. Zastosuj polecenie MATLABa \ do rozwiązywania układów.
• Rozwiaż układy równań liniowych z poprzedniego punktu za pomocą eliminacji
Gaussa bez wyboru elementu głównego. Napisz własną implementację eliminacji
Gaussa. Zwróć uwagę na wielkość czynników wzrostu ρn oraz na moduły elementów
głównych.
• Oblicz macierz odwrotną A−1 za pomocą inv.
• Testy wykonaj dla kilku typów macierzy A, np. dla macierzy Hilberta i macierzy
symetrycznej dodatnio określonej Lehmera:
aij = i/j
dla j ­ i.
Macierz odwrotna do macierzy Lehmera jest trójprzekątniowa. Zwróć uwagę na
to, czy odpowiednie elementy obliczonej numerycznie macierzy są bliskie zero. Jak
bliskie? Czemu się równa z MATLABie epsilon maszynowe? Czy wybór elementu
głównego w eliminacji Gaussa poprawia wyniki?
2
Dokładność obliczonych numerycznie macierzy odwrotnych oceń na podstawie następujących wyrażeń:
||AX − I||/||A||, ||XA − I||/||A||,
gdzie X oznacza numerycznie obliczoną macierz odwrotną. Staraj się znaleźć takie macierze A, aby powyższe dwa wyrażenia miały istotnie różne wartości. Zbadaj wrażliwość macierzy odwrotnej na zaburzenia elementów macierzy A. Wzoruj się na wskazówkach z poprzednich zadań. Koniecznie obliczaj wskaźniki uwarunkowania cond(A)
oraz det (A), ||A||, ||A−1 ||.
Zadanie 4.
Oblicz macierz odwrotną A−1 stopnia n następującymi metodami:
• Wyznacz rozkład LU macierzy A za pomocą eliminacji Gaussa bez wyboru elementu głównego. Napisz własną implementację. Zwróć uwagę na wielkość czynników
wzrostu ρn oraz na moduły elementów głównych.
• Oblicz A−1 = U −1 L−1 . W tym celu rozwiązuj układy LY = I, U Z = I.
• Oblicz macierz odwrotną A−1 za pomocą inv.
Eksperymenty wzoruj na poprzednich zadaniach.
Zadanie 5. Przeprowadź eksperymenty numeryczne (wzorowane na eksperymentach z poprzednich zadań) z metodami rozwiązywania układów równań liniowych z macierzami
trójprzekątniowymi. W tym celu dla dowolnej macierzy A zastosuj:
• eliminację Gaussa bez wyboru elementu głównego,
• eliminację Gaussa z wyborem częściowym elementu głównego.
Zadanie 6. Przeprowadź eksperymenty numeryczne (wzorowane na eksperymentach z poprzednich zadań) z metodą Cholesky’ego zastosowaną do rozwiązywania układów równań liniowych z macierzami trójprzekątniowymi symetrycznymi dodatnio określonymi.
Badaj, czy macierz A jest dodatnio określona, czyli badaj, czy metoda Cholesky’ego
jest wykonalna oraz dodatkowo sprawdzaj, czy wartości własne macierzy A są dodatnie. Zastosuj funkcję eig.
Zadanie 7. Przeprowadź eksperymenty numeryczne (wzorowane na eksperymentach z poprzednich zadań) z rozkładem Cholesky’ego zastosowanym do obliczania macierzy odwrotnej do symetrycznej macierzy dodatnio określonej A. W tablicy dwuwskaźnikowej
pamiętaj tylko elementy górnego trójkąta macierzy A. Niech A = GGT będzie rozkładem Cholesky’ego, gdzie G jest macierzą trójkątna dolną. Wówczas A−1 = (G−1 )T G−1 .
Macierz G−1 oblicz jako rozwiązanie układu GX = I.
Zadanie 8. Przeprowadź eksperymenty numeryczne (wzorowane na eksperymentach z poprzednich zadań) z rozkładem Cholesky’ego zastosowanym do rozwiązania układu równań liniowych Ax = b z symetryczną macierzą dodatnio określonej A. W tablicy dwuwskaźnikowej pamiętaj tylko elementy górnego trójkąta macierzy A.
Zadanie 9. Wzorując się na zadaniach drugim i trzecim, przeprowadź eksperymenty numeryczne pokazujące wpływ zaburzeń elementów macierzy A na macierz odwrotną A−1 ,
gdy obliczamy ją za pomocą rozkładu Cholesky’ego.
3
Zadanie 10. Niech A = QR będzie rozkładem qr nieosobliwej macierzy kwadratowej A
(tzn. Q jest macierzą ortogonalną, R jest macierzą trójkątna górną). Rozkład qr można
wyznaczyć za pomocą funkcji qr. Zastosuj rozkład qr do obliczania macierzy odwrotnej. Eksprymenty wzoruj na poprzednich zadaniach, m.in. porównaj macierz odwrotną
obliczoną za pomocą rozkładu qr z macierzą odwrotną obliczoną jakąś inną metodą.
Zadanie nadobowiązkowe
Obliczenie wskaźnika uwarunkowania cond(A) zadania rozwiązywania układu równań liniowych Ax = b wymaga znajomości macierzy odwrotnej A−1 . Aby uniknąć jawnego wyznaczania A−1 , można zadowolić się wyznaczeniem jedynie przybliżenia wartości ||A−1 ||. Higham
opublikował dwie prace, w których omawia metody obliczenia przybliżenia ||A−1 || dla macierzy A trójprzekątniowej i trójkątnej:
• N.J. Higham, Efficient algorithms for computing the condition number of a tridiagonal
matrix, SIAM J. Sci. Statist. Comput. 7 (1986), 150–165.
• N.J. Higham A survey of condition numbers estimation for triangular matrices, SIAM
Review 29 (1987), 575–596.
Celem eksperymentu jest porównanie skuteczności metod proponowanych w pracach Highama
z metodami zastosowanymi w standardowych funkcjach MATLABa.
Krystyna Ziętak
4