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