MN13LAB: Różnice pomiędzy wersjami
Nie podano opisu zmian |
m Zastępowanie tekstu – „,↵</math>” na „</math>,” |
||
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 24: | Linia 24: | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | ||
<div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Pomyśl nie tylko o koszcie wyznaczenia wyznacznika dla dużych <math> | <div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Pomyśl nie tylko o koszcie wyznaczenia wyznacznika dla dużych <math>N</math>. </div> | ||
</div></div> | </div></div> | ||
Linia 35: | Linia 35: | ||
macierz | macierz | ||
<center><math> | <center><math>B = \begin{pmatrix} | ||
1 & \frac{\sqrt{\epsilon_{\mbox{mach}}}}{2}\\ | 1 & \frac{\sqrt{\epsilon_{\mbox{mach}}}}{2}\\ | ||
\frac{\sqrt{\epsilon_{\mbox{mach}}}}{2} & 1 | \frac{\sqrt{\epsilon_{\mbox{mach}}}}{2} & 1 | ||
Linia 41: | Linia 41: | ||
</math></center> | </math></center> | ||
lub perfidny wielomian Wilkinsona. Dla macierzy <math> | lub perfidny wielomian Wilkinsona. Dla macierzy <math>B</math> polecenia Octave dają | ||
<div style="font-family: monospace; white-space: pre; border-style: dashed; border-width: thin; border-color: black; margin: 1em; padding:1em; color: #444; background-color:#fdfdfd;"><nowiki>octave:1> format short e | <div style="font-family: monospace; white-space: pre; border-style: dashed; border-width: thin; border-color: black; margin: 1em; padding:1em; color: #444; background-color:#fdfdfd;"><nowiki>octave:1> format short e | ||
Linia 110: | Linia 110: | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | ||
<div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Rozpisz <math> | <div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Rozpisz <math>Ax = \lambda x</math>, wybierając taką | ||
współrzędną <math> | współrzędną <math>k</math>, dla której <math>||x||_\infty = |x_k|</math>. </div> | ||
</div></div> | </div></div> | ||
Linia 123: | Linia 123: | ||
* <span style="font-variant:small-caps">D. Kincaid, W. Cheney</span>, <cite>Analiza numeryczna</cite>, Wydawnictwa Naukowo-Techniczne, Warszawa, 2006. | * <span style="font-variant:small-caps">D. Kincaid, W. Cheney</span>, <cite>Analiza numeryczna</cite>, Wydawnictwa Naukowo-Techniczne, Warszawa, 2006. | ||
Twierdzenie Gerszgorina pozwala dość tanio, bo kosztem <math> | Twierdzenie Gerszgorina pozwala dość tanio, bo kosztem <math>O(N^2)</math>, oszacować odległość wartości własnych macierzy od zera. Jeśli więc w macierzy <math>A</math> zachodzi | ||
<center><math> | <center><math>|a_{ii}| > \sum_{j \neq i} |a_{ij}|, \qquad \forall i</math>,</center> | ||
</math></center> | |||
to oczywiście <math> | to oczywiście <math>\lambda = 0</math> nie może być wartością własną <math>A</math>, a skoro tak, to <math>A</math> musi być nieosobliwa. Naturalnie, jeśli powyższe kryterium nie jest spełnione, kwestia (nie)osobliwości macierzy pozostaje otwarta. | ||
Zauważmy, że powyższe kryterium to nic innego, jak znana nam definicja macierzy diagonalnie dominującej: właśnie z twierdzenia Gerszgorina wynika, że <strong>macierz diagonalnie dominująca jest nieosobliwa</strong>. | Zauważmy, że powyższe kryterium to nic innego, jak znana nam definicja macierzy diagonalnie dominującej: właśnie z twierdzenia Gerszgorina wynika, że <strong>macierz diagonalnie dominująca jest nieosobliwa</strong>. | ||
Linia 137: | Linia 136: | ||
<div class="exercise"> | <div class="exercise"> | ||
Czy warunek normowania wektora <math> | Czy warunek normowania wektora <math>x_k</math> jest konieczny, gdy metodę potęgową stosuje | ||
się do macierzy Google'a? | się do macierzy Google'a? | ||
</div></div> | </div></div> | ||
Linia 149: | Linia 148: | ||
<div class="exercise"> | <div class="exercise"> | ||
Jak wyznaczyć <strong>najmniejszą co do modułu</strong> wartość własną macierzy symetrycznej <math> | Jak wyznaczyć <strong>najmniejszą co do modułu</strong> wartość własną macierzy symetrycznej <math>A</math> i | ||
odpowiadający jej wektor własny przy użyciu odwrotnej metody potęgowej? | odpowiadający jej wektor własny przy użyciu odwrotnej metody potęgowej? | ||
A jeśli macierz <math> | A jeśli macierz <math>A</math> jest (numerycznie) osobliwa? | ||
</div></div> | </div></div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em"> | ||
Zastosować odwrotną metodę potęgową z przesunięciem <math> | Zastosować odwrotną metodę potęgową z przesunięciem <math>\sigma = 0</math>. Kłopoty mogą wystąpić, gdy jest kilka takich wektorów własnych (na przykład, <math>A</math> jest macierzą obrotu). | ||
Jeśli macierz <math> | Jeśli macierz <math>A</math> jest (numerycznie) osobliwa, należy zastosować odwrotną metodę potęgową z przesunięciem <math>\sigma = O(\nu)</math>. | ||
</div></div></div> | </div></div></div> | ||
Linia 167: | Linia 166: | ||
<div class="exercise"> | <div class="exercise"> | ||
Wyjaśnij, skąd biorą się różnice w wyznaczonych wartościach wielomianu Wilkinsona <math> | Wyjaśnij, skąd biorą się różnice w wyznaczonych wartościach wielomianu Wilkinsona <math>w(x) = (x-1)\cdots (x-20)</math>, w zależności od tego, czy jest on wyrażony w bazie naturalnej, czy też w bazie Newtona: | ||
[[Image:MNwielomianwilkinsona.png|thumb|550px|center|Wykres wielomianu Wilkinsona (reprezentowanego przez współczynniki w bazie naturalnej bądź w bazie Newtona) na przedziale <math> | [[Image:MNwielomianwilkinsona.png|thumb|550px|center|Wykres wielomianu Wilkinsona (reprezentowanego przez współczynniki w bazie naturalnej bądź w bazie Newtona) na przedziale <math>[10,15]</math>]] | ||
</div></div> | </div></div> | ||
Linia 199: | Linia 198: | ||
macierzy) <strong>przed</strong> rozpoczęciem iteracji, a w trakcie iteracji wykorzystywać | macierzy) <strong>przed</strong> rozpoczęciem iteracji, a w trakcie iteracji wykorzystywać | ||
już tylko gotowe czynniki rozkładu --- redukując tym samym koszt pojedynczej | już tylko gotowe czynniki rozkładu --- redukując tym samym koszt pojedynczej | ||
iteracji z <math> | iteracji z <math>O(N^3)</math> do <math>O(N^2)</math>. | ||
</div></div></div> | </div></div></div> | ||
Linia 219: | Linia 218: | ||
<div class="exercise"> | <div class="exercise"> | ||
Zbadaj, jak bardzo zmiana zera na <math> | Zbadaj, jak bardzo zmiana zera na <math>\epsilon \approx 0</math> w macierzy | ||
<center><math> | <center><math>\begin{pmatrix} a & 1 \\ 0 & b \end{pmatrix} | ||
</math></center> | </math></center> | ||
Linia 244: | Linia 243: | ||
<div class="exercise"> | <div class="exercise"> | ||
Parę własną <math> | Parę własną <math>(\lambda, x)</math> można scharakteryzować jako rozwiązanie układu równań | ||
nieliniowych | nieliniowych | ||
<center><math>\ | <center><math>\begin{align} Ax - \lambda x &= 0,\\ | ||
\frac{1}{2}x^Tx - 1 = 0, | \frac{1}{2}x^Tx - 1 = 0, | ||
\ | \end{align}</math></center> | ||
który można rozwiązać np. [[MN02#Wielowymiarowa metoda Newtona|wielowymiarową metodą Newtona]]. Zapisz wzory takiej iteracji i porównaj tę metodę z metodą RQI. | który można rozwiązać np. [[MN02#Wielowymiarowa metoda Newtona|wielowymiarową metodą Newtona]]. Zapisz wzory takiej iteracji i porównaj tę metodę z metodą RQI. | ||
Linia 255: | Linia 254: | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | ||
<div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Generalnie, RQI jest lepsza. Metodę Newtona warto zmodyfikować tak, by na | <div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Generalnie, RQI jest lepsza. Metodę Newtona warto zmodyfikować tak, by na | ||
każdym jej kroku warunek normowania wektora <math> | każdym jej kroku warunek normowania wektora <math>x</math> był spełniony, dzięki czemu zbieżność będzie szybsza. </div> | ||
</div></div> | </div></div> | ||
Linia 266: | Linia 265: | ||
Napisz program w Octave, w którym sprawdzisz w warunkach kontrolowanego | Napisz program w Octave, w którym sprawdzisz w warunkach kontrolowanego | ||
eksperymentu, że faktycznie odwrotnej metodzie potęgowej nie przeszkadza, że | eksperymentu, że faktycznie odwrotnej metodzie potęgowej nie przeszkadza, że | ||
macierz <math> | macierz <math>A - \sigma I</math> jest prawie osobliwa. | ||
</div></div> | </div></div> | ||
Linia 279: | Linia 278: | ||
Najpierw szykujemy sobie losową macierz, a potem wyznaczmy jej pary własne. | Najpierw szykujemy sobie losową macierz, a potem wyznaczmy jej pary własne. | ||
Aby zagwarantować, że istnieją rzeczywiste wartości własne, bierzemy | Aby zagwarantować, że istnieją rzeczywiste wartości własne, bierzemy | ||
macierz nieparzystego wymiaru <math> | macierz nieparzystego wymiaru <math>N</math> (dlaczego?). | ||
Potem definiujemy funkcję realizującą iterację odwrotną. | Potem definiujemy funkcję realizującą iterację odwrotną. | ||
Linia 295: | Linia 294: | ||
rozkładu macierzy. Usprawiedliwiamy się tym, że program i tak wykona się | rozkładu macierzy. Usprawiedliwiamy się tym, że program i tak wykona się | ||
szybciej niż wpiszemy tych kilka komend Octave, które zrealizują wstępny rozkład | szybciej niż wpiszemy tych kilka komend Octave, które zrealizują wstępny rozkład | ||
<math> | <math>LDL^T</math> macierzy <math>A</math>, a potem wykorzystają go w pętli. | ||
Ponieważ będziemy korzystać z bardzo dobrego przybliżenia, wymusimy użycie | Ponieważ będziemy korzystać z bardzo dobrego przybliżenia, wymusimy użycie | ||
zafiksowanej liczby iteracji. | zafiksowanej liczby iteracji. | ||
Dalej, losujemy (rzeczywistą) parę własną <math> | Dalej, losujemy (rzeczywistą) parę własną <math>A</math>: | ||
<div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>reals = find(imag(diag(L))==0); | <div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>reals = find(imag(diag(L))==0); | ||
Linia 309: | Linia 308: | ||
i lekko zaburzamy wartość własną, aby dostać | i lekko zaburzamy wartość własną, aby dostać | ||
<math> | <math>\sigma = \lambda(1+\sqrt{\epsilon_{ \mbox{mach} }})</math>. Startujemy z losowego wektora <math>x_0</math> i | ||
wykonujemy 3 iteracje odwrotnej metody potęgowej. | wykonujemy 3 iteracje odwrotnej metody potęgowej. | ||
Aktualna wersja na dzień 21:47, 11 wrz 2023
Zagadnienie własne
<<< 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
Dlaczego wartości własnych macierzy nie należy szukać jako miejsc zerowych wielomianu charakterystycznego?
Ćwiczenie
Udowodnij twierdzenie Gerszgorina.
Wskaż, jak wykorzystać to twierdzenie do wykonania szybkiego testu, czy dana macierz jest nieosobliwa.
Ćwiczenie
Czy warunek normowania wektora jest konieczny, gdy metodę potęgową stosuje się do macierzy Google'a?
Ćwiczenie: Wyznaczanie najmniejszej wartości własnej
Jak wyznaczyć najmniejszą co do modułu wartość własną macierzy symetrycznej i odpowiadający jej wektor własny przy użyciu odwrotnej metody potęgowej?
A jeśli macierz jest (numerycznie) osobliwa?
Ćwiczenie
Podaj sposób efektywnej implementacji metody odwrotnej potęgowej dla macierzy gęstych. Wykonaj ją korzystając z właściwych procedur LAPACKa (lub MATLABa).
Ćwiczenie
Zbadaj, jak bardzo zmiana zera na w macierzy
wpływa na zmianę jej wartości własnych.
Ćwiczenie: Rozwiązywanie zagadnienia własnego metodą Newtona
Parę własną można scharakteryzować jako rozwiązanie układu równań nieliniowych
który można rozwiązać np. wielowymiarową metodą Newtona. Zapisz wzory takiej iteracji i porównaj tę metodę z metodą RQI.
Ćwiczenie
Napisz program w Octave, w którym sprawdzisz w warunkach kontrolowanego eksperymentu, że faktycznie odwrotnej metodzie potęgowej nie przeszkadza, że macierz jest prawie osobliwa.