MN13LAB: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przykry (dyskusja | edycje)
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>\displaystyle N</math>. </div>
<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>\displaystyle B = \begin{pmatrix}  
<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>\displaystyle B</math> polecenia Octave dają
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>\displaystyle Ax = \lambda x</math>, wybierając taką
<div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Rozpisz <math>Ax = \lambda x</math>, wybierając taką
współrzędną <math>\displaystyle k</math>, dla której <math>\displaystyle ||x||_\infty = |x_k|</math>. </div>
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>\displaystyle O(N^2)</math>, oszacować odległość wartości własnych macierzy od zera. Jeśli więc w macierzy <math>\displaystyle A</math> zachodzi
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>\displaystyle |a_{ii}| > \sum_{j \neq i} |a_{ij}|, \qquad \forall i,
<center><math>|a_{ii}| > \sum_{j \neq i} |a_{ij}|, \qquad \forall i</math>,</center>
</math></center>


to oczywiście <math>\displaystyle \lambda = 0</math> nie może być wartością własną <math>\displaystyle A</math>, a skoro tak, to <math>\displaystyle A</math> musi być nieosobliwa. Naturalnie, jeśli powyższe kryterium nie jest spełnione, kwestia (nie)osobliwości macierzy pozostaje otwarta.
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>\displaystyle x_k</math> jest konieczny, gdy metodę potęgową stosuje
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>\displaystyle A</math> i
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>\displaystyle A</math> jest (numerycznie) osobliwa?  
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>\displaystyle \sigma = 0</math>. Kłopoty mogą wystąpić, gdy jest kilka takich wektorów własnych (na przykład, <math>\displaystyle A</math> jest macierzą obrotu).  
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>\displaystyle A</math> jest (numerycznie) osobliwa, należy zastosować odwrotną metodę potęgową z przesunięciem <math>\displaystyle \sigma = O(\nu)</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>\displaystyle 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:
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>\displaystyle [10,15]</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>\displaystyle O(N^3)</math> do <math>\displaystyle O(N^2)</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>\displaystyle \epsilon \approx 0</math> w macierzy  
Zbadaj, jak bardzo zmiana zera na <math>\epsilon \approx 0</math> w macierzy  


<center><math>\displaystyle \begin{pmatrix}  a & 1 \\ 0 & b \end{pmatrix}  
<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>\displaystyle (\lambda, x)</math> można scharakteryzować jako rozwiązanie układu równań
Parę własną <math>(\lambda, x)</math> można scharakteryzować jako rozwiązanie układu równań
nieliniowych
nieliniowych


<center><math>\displaystyle \aligned Ax - \lambda x &= 0,\\
<center><math>\begin{align} Ax - \lambda x &= 0,\\
\frac{1}{2}x^Tx - 1 = 0,
\frac{1}{2}x^Tx - 1 = 0,
\endaligned</math></center>
\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>\displaystyle x</math> był spełniony, dzięki czemu zbieżność będzie szybsza. </div>
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>\displaystyle A - \sigma I</math> jest prawie osobliwa.
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>\displaystyle N</math> (dlaczego?).
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>\displaystyle LDL^T</math> macierzy <math>\displaystyle A</math>, a potem wykorzystają go w pętli.
<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>\displaystyle A</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>\displaystyle \sigma = \lambda(1+\sqrt{\epsilon_{ \mbox{mach} }})</math>. Startujemy z losowego wektora <math>\displaystyle x_0</math> i
<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?

Wskazówka
Rozwiązanie

Ćwiczenie

Udowodnij twierdzenie Gerszgorina.

Wskazówka

Wskaż, jak wykorzystać to twierdzenie do wykonania szybkiego testu, czy dana macierz jest nieosobliwa.

Rozwiązanie

Ćwiczenie

Czy warunek normowania wektora xk jest konieczny, gdy metodę potęgową stosuje się do macierzy Google'a?

Rozwiązanie

Ćwiczenie: Wyznaczanie najmniejszej wartości własnej

Jak wyznaczyć najmniejszą co do modułu wartość własną macierzy symetrycznej A i odpowiadający jej wektor własny przy użyciu odwrotnej metody potęgowej?

A jeśli macierz A jest (numerycznie) osobliwa?

Rozwiązanie


Ć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).

Wskazówka
Wskazówka
Rozwiązanie


Ćwiczenie

Zbadaj, jak bardzo zmiana zera na ϵ0 w macierzy

(a10b)

wpływa na zmianę jej wartości własnych.


Ćwiczenie: Rozwiązywanie zagadnienia własnego metodą Newtona

Parę własną (λ,x) można scharakteryzować jako rozwiązanie układu równań nieliniowych

Axλx=0,12xTx1=0,

który można rozwiązać np. wielowymiarową metodą Newtona. Zapisz wzory takiej iteracji i porównaj tę metodę z metodą RQI.

Wskazówka

Ćwiczenie

Napisz program w Octave, w którym sprawdzisz w warunkach kontrolowanego eksperymentu, że faktycznie odwrotnej metodzie potęgowej nie przeszkadza, że macierz AσI jest prawie osobliwa.

Rozwiązanie