Analiza numeryczna
Transkrypt
Analiza numeryczna
Analiza numeryczna - laboratorium lista 2 - 11 października 2005 Temat: rozwiązywanie układów równań liniowych, obliczanie macierzy odwrotnej, eliminacja Gaussa Należy zrealizować za pomocą MATLABa jedno z poniższych trzech zadań obowiązkowych. Zadanie ostatnie jest nadobowiązkowe, ale jakieś metody podane w cytowanych pracach Highama można wykorzystać przy realizacji zadań obowiązkowych, jeśli się ma na to ochotę. Zadania obowiązkowe Zadanie 1. Wykonać następujące eksperymenty numeryczne dla różnych typów macierzy A: • Rozwiązać układ Ax = b, gdzie b = A ∗ ones(n, 1). Zastosować polecenie \ do rozwiązania układu. Ocenić dokładność obliczonego rozwiązania. • Obliczyć za pomocą inv macierz odwrotną A−1 i rozwiązanie x = A−1 b. Porównać tak obliczone rozwiązanie z rozwiązaniem otrzymanym poprzednio i rozwiązaniem dokładnym. Wyznaczyć normy residuów r = b − Ax(obl) , x(obl) obliczone rozwiazanie oraz błędy względne dla obliczonych rozwiązań (zastosować norm) ||x − x(obl) || , ||x|| gdzie x jest dokładnym rozwiązaniem układu (zob. powyższy sposób wyznaczania b). • Obliczyć wyznacznik macierzy A oraz wskaźnik uwarunkowania cond(A). • Napisać własną realizację eliminacji Gaussa - bez wyboru elementu głównego - i powtórzyć eksperymenty. Wyznaczać czynnik wzrostu ρ (k) maxi,j,k |aij | , ρn = maxij |aij | gdzie A(1) = A, A(k) są kolejnymi macierzami wyznaczanymi w trakcie eliminacji. • Wykonać testy dla macierzy różnego typu, np. dla macierzy Pascala: pascal(n), Hilberta: hilb(n) oraz innych dostępnych w MATLABie (napisz: help gallery). • Sprawdzić działanie \ na przykładzie układu z macierzą osobliwą! 1 Zadanie 2 Zbadać wpływ zaburzeń macierzy układu Ax = b i wektora prawych stron b na rozwiązanie układu, gdzie b = A ∗ ones(n, 1). • Porównać rozwiązanie układu Ax = b z rozwiązaniem układu zaburzonego (A + ∆A)x = b dla różnych macierzy zaburzeń ∆A i układu zaburzonego Ax = b + δb dla różnych zaburzeń δb. • Ocenić eksperymentalnie, czy teoretyczne oszacownia - opisujące wrażliwość rozwiązania na zaburzenia elementów macierzy układu - są realistyczne, czyli porównać wielkość tych oszacowań z faktycznym błędem względnym. • Obliczyć ||∆A||. • Zastosować cond do obliczenia wskaźnika uwarunkowania cond (A) = ||A|| ||A−1 ||. • Zastosować polecenie \ do rozwiązania układów. • obliczać błędy względne dla obliczonych rozwiązań układu zaburzonego ||x(doklad) − x(zaburz) || , ||x(doklad) || gdzie x(dokld) jest dokładnym rozwiązaniem układu (zob. powyższy sposób wyznaczania b). • Wykonać testy różnych macierzy A - zobacz poprzednie zadanie. • Generować losowe macierze o zadanym z góry wskaźniku uwarunkowania w następujący sposób. Wygenerować losową macierz B. Wyznaczyć jej rozkład SVD za pomocą funkcji svd: B = U ΣV T , gdzie U, V macierze ortogonalne, Σ - przekątniowa. Obliczyć A z wzoru A = U DV T , gdzie D jest zadaną macierzą przekątniową. Obliczenia wykonać dla różnych macierzy D. Jak je wybrać, żeby A była dobrze lub źle uwarunkowana? 2 Zadanie 3. Obliczyć macierz odwrotną A−1 stopnia n następującymi metodami: • Rozwiązać 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. Zastosować polecenie MATLABa \ do rozwiązywania układów. • Rozwiazać układy równań liniowych z poprzedniego punktu za pomocą eliminacji Gaussa bez wyboru elementu głównego. Napisać własna wersję. Zwrócić uwagę na wielkość czynników wzrostu ρn oraz na moduły elementów głównych. • Wyznaczyć rozkład LU macierzy A za pomocą eliminacji Gaussa bez wyboru elementu głównego i obliczyć macierze odwrotne L−1 i U −1 za pomocą funkcji inv. Wówczas A−1 = U −1 L−1 . • Obliczyć macierz odwrotną A−1 za pomocą inv. • Testy wykonać dla kilku typów macierzy A, np. dla macierzy symetrycznej dodatnio określonej Lehmera: aij = i/j dla j i. Macierz odwrotna do macierzy Lehmera jest trójprzekątniowa. Zwrócić 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? Dokładność obliczonych numerycznie macierzy odwrotnych ocenić na podstawie następujących wyrażeń: ||AX − I||/||A||, ||XA − I||/||A||, gdzie X oznacza numerycznie obliczoną macierz odwrotną. Starać się znaleźć takie macierze A, aby powyższe dwa wyrażenia miały istotnie różne wartości. Zbadać wrażliwość macierzy odwrotnej na zaburzenia elementów macierzy A. Wzorować się na wskazówkach z poprzednich zadań. Koniecznie obliczać wskaźniki uwarunkowania cond(A) oraz det (A), ||A||, ||A−1 ||. 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 3