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