MN12LAB: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m Zastępowanie tekstu – „,↵</math>” na „</math>,”
 
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 19: Linia 19:
<div class="exercise">
<div class="exercise">


Inną, oprócz sprowadzenia do układu równań normalnych, metodą transformacji zadania najmniejszych kwadratów do zadania rozwiązywania układu równań z macierzą kwadratową, jest zapisanie w formie układu ''dwóch układów równań'' (sic!). Dokładniej, możemy scharakteryzować zadanie wygładzania jako znalezienie ''dwóch wektorów'' <math>\displaystyle x\in R^n</math> oraz <math>\displaystyle r\in R^m</math> takich, że
Inną, oprócz sprowadzenia do układu równań normalnych, metodą transformacji zadania najmniejszych kwadratów do zadania rozwiązywania układu równań z macierzą kwadratową, jest zapisanie w formie układu ''dwóch układów równań'' (sic!). Dokładniej, możemy scharakteryzować zadanie wygładzania jako znalezienie ''dwóch wektorów'' <math>x\in R^n</math> oraz <math>r\in R^m</math> takich, że


<center><math>\displaystyle \begin{align}d r &= b - Ax,\\
<center><math>\begin{align}d r &= b - Ax,\\
A^T r &= 0.
A^T r &= 0.
\end{align}</math></center>
\end{align}</math></center>
Linia 36: Linia 36:
Macierzowo, układ zapisuje się w postaci
Macierzowo, układ zapisuje się w postaci


<center><math>\displaystyle \begin{pmatrix}  
<center><math>\begin{pmatrix}  
I & A \\
I & A \\
A^T & 0  
A^T & 0  
Linia 46: Linia 46:
\begin{pmatrix}  
\begin{pmatrix}  
b \\ 0
b \\ 0
\end{pmatrix} .
\end{pmatrix} </math></center>
</math></center>


Koszt rozwiązywania takiego układu równań to oczywiście <math>\displaystyle O((m+n)^3)</math>, dużo więcej niż innych poznanych metod. Ale zalety takiego podejścia mogą objawić się, gdy macierz <math>\displaystyle A</math> jest rozrzedzona wielkiego wymiaru (i <math>\displaystyle m\approx n</math>), bo wtedy możemy zastosować znany nam arsenał metod iteracyjnych.
Koszt rozwiązywania takiego układu równań to oczywiście <math>O((m+n)^3)</math>, dużo więcej niż innych poznanych metod. Ale zalety takiego podejścia mogą objawić się, gdy macierz <math>A</math> jest rozrzedzona wielkiego wymiaru (i <math>m\approx n</math>), bo wtedy możemy zastosować znany nam arsenał metod iteracyjnych.
</div></div></div>
</div></div></div>


Linia 58: Linia 57:
W twierdzeniu o uwarunkowaniu zadania najmniejszych kwadratów mówi się, że  
W twierdzeniu o uwarunkowaniu zadania najmniejszych kwadratów mówi się, że  


<center><math>\displaystyle \frac{||b-Ax^*||_2}{||b||_2} < 1.
<center><math>\frac{||b-Ax^*||_2}{||b||_2} < 1</math></center>
</math></center>


Wyjaśnij, dlaczego rzeczywiście tak jest.
Wyjaśnij, dlaczego rzeczywiście tak jest.
Linia 65: Linia 63:


<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">   
Rozwiązanie zadania najmniejszych kwadratów minimalizuje <math>\displaystyle ||b-Ax||_2</math>, tzn. dla każdego <math>\displaystyle x</math>,
Rozwiązanie zadania najmniejszych kwadratów minimalizuje <math>||b-Ax||_2</math>, tzn. dla każdego <math>x</math>,


<center><math>\displaystyle ||b-Ax^*||_2 \leq ||b-Ax||_2.
<center><math>||b-Ax^*||_2 \leq ||b-Ax||_2</math></center>
</math></center>


W szczególności dla <math>\displaystyle x=0</math> dostajemy <math>\displaystyle ||b-Ax^*||_2 \leq ||b-A\cdot 0||_2 = ||b||_2</math>. Ostra nierówność wynika z jednoznaczności: <math>\displaystyle A^TAx^* = A^Tb \neq 0</math>, stąd <math>\displaystyle x^*\neq 0</math>.
W szczególności dla <math>x=0</math> dostajemy <math>||b-Ax^*||_2 \leq ||b-A\cdot 0||_2 = ||b||_2</math>. Ostra nierówność wynika z jednoznaczności: <math>A^TAx^* = A^Tb \neq 0</math>, stąd <math>x^*\neq 0</math>.
</div></div></div>
</div></div></div>


Linia 77: Linia 74:
<div class="exercise">
<div class="exercise">


Znajdź <math>\displaystyle a</math> i <math>\displaystyle b</math> takie, że funkcja <math>\displaystyle f(x) = a + b\, e^{-x}</math> minimalizuje błąd średniokwadratowy dla danych:
Znajdź <math>a</math> i <math>b</math> takie, że funkcja <math>f(x) = a + b\, e^{-x}</math> minimalizuje błąd średniokwadratowy dla danych:


{| border=1
{| border=1
Linia 105: Linia 102:


<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"> Musisz zadanie wyrazić w terminach liniowego zadania najmniejszych kwadratów. Zauważ, że <math>\displaystyle x_{i+1} = x_i+1.25</math>. </div>
<div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Musisz zadanie wyrazić w terminach liniowego zadania najmniejszych kwadratów. Zauważ, że <math>x_{i+1} = x_i+1.25</math>. </div>
</div></div>
</div></div>


Linia 112: Linia 109:
<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">   
Ma być  
Ma być  
<center><math>\displaystyle
<center><math>
\sum_{i=0}^{10} |a+b\, e^{-x_i} - f(x_i)|^2 \rightarrow \min!
\sum_{i=0}^{10} |a+b\, e^{-x_i} - f(x_i)|^2 \rightarrow \min!
</math></center>
</math></center>


A więc, macierzowo,  
A więc, macierzowo,  
<center><math>\displaystyle
<center><math>
||
||
\begin{pmatrix}  
\begin{pmatrix}  
Linia 141: Linia 138:
[[Image:MNlznk.png|thumb|550px|center|Wyznaczone najlepsze dopasowanie naszego modelu do danych. ]]
[[Image:MNlznk.png|thumb|550px|center|Wyznaczone najlepsze dopasowanie naszego modelu do danych. ]]


Jak widzisz, dane punkty pasują --- za wyjątkiem "dziwnego" <math>\displaystyle x=7.5</math> --- do modelu <math>\displaystyle f^*(x) = 3 + e^{-x}</math>. Duże i niespodziewane zaburzenie w <math>\displaystyle x=7.5</math>  spowodowało, że dopasowanie w sensie najmniejszych kwadratów ma istotnie inne parametry od <math>\displaystyle f^*</math>. Sposobem zmniejszenia wpływu takiego zaburzenia na ogólny wynik może być wprowadzenie do zadania wag (relatywnie małej dla  <math>\displaystyle x=7.5</math>), i minimalizacja <math>\displaystyle \sum_{i=0}^{10} \omega_i\cdot |a+b\, e^{-x_i} - f(x_i)|^2 \rightarrow \min!</math>. Zobacz też następne zadanie.
Jak widzisz, dane punkty pasują --- za wyjątkiem "dziwnego" <math>x=7.5</math> --- do modelu <math>f^*(x) = 3 + e^{-x}</math>. Duże i niespodziewane zaburzenie w <math>x=7.5</math>  spowodowało, że dopasowanie w sensie najmniejszych kwadratów ma istotnie inne parametry od <math>f^*</math>. Sposobem zmniejszenia wpływu takiego zaburzenia na ogólny wynik może być wprowadzenie do zadania wag (relatywnie małej dla  <math>x=7.5</math>), i minimalizacja <math>\sum_{i=0}^{10} \omega_i\cdot |a+b\, e^{-x_i} - f(x_i)|^2 \rightarrow \min!</math>. Zobacz też następne zadanie.


</div></div></div>
</div></div></div>
Linia 149: Linia 146:
<div class="exercise">
<div class="exercise">


Niech <math>\displaystyle A</math> będzie macierzą <math>\displaystyle m\times n</math> pełnego rzędu, przy czym <math>\displaystyle m\geq n</math>.
Niech <math>A</math> będzie macierzą <math>m\times n</math> pełnego rzędu, przy czym <math>m\geq n</math>.
Podaj algorytm rozwiązywania ważonego zadania najmniejszych kwadratów:
Podaj algorytm rozwiązywania ważonego zadania najmniejszych kwadratów:


<center><math>\displaystyle \sum_{i=1}^n\omega_i|b_i - (Ax)_i|^2 \rightarrow \min!,
<center><math>\sum_{i=1}^n\omega_i|b_i - (Ax)_i|^2 \rightarrow \min!</math>,</center>
</math></center>


gdzie zakładamy, że <math>\displaystyle 0 < \omega_i \leq 1</math> są danymi wagami. (Gdy wszystkie  <math>\displaystyle \omega_i = 1</math>, zadanie sprowadza się do zwykłego zadania najmniejszych kwadratów.)
gdzie zakładamy, że <math>0 < \omega_i \leq 1</math> są danymi wagami. (Gdy wszystkie  <math>\omega_i = 1</math>, zadanie sprowadza się do zwykłego zadania najmniejszych kwadratów.)
</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">   
Innymi słowy, szukamy <math>\displaystyle x</math>, minimalizującego  
Innymi słowy, szukamy <math>x</math>, minimalizującego  


<center><math>\displaystyle \sum_{i=1}^n |\sqrt{\omega_i}(b_i - (Ax)_i)|^2  =  
<center><math>\sum_{i=1}^n |\sqrt{\omega_i}(b_i - (Ax)_i)|^2  =  
\sum_{i=1}^n |(\widetilde{b}_i - (\widetilde{A}x)_i)|^2,
\sum_{i=1}^n |(\widetilde{b}_i - (\widetilde{A}x)_i)|^2</math>,</center>
</math></center>


gdzie <math>\displaystyle \widetilde{b} = Db</math>, <math>\displaystyle \widetilde{A} = DA</math> i  
gdzie <math>\widetilde{b} = Db</math>, <math>\widetilde{A} = DA</math> i  


<center><math>\displaystyle D = \begin{pmatrix}  
<center><math>D = \begin{pmatrix}  
\omega_1 & & \\
\omega_1 & & \\
         & \ddots & \\
         & \ddots & \\
&        & \omega_n
&        & \omega_n
\end{pmatrix} .
\end{pmatrix} </math></center>
</math></center>


A więc, zadanie sprowadza się do zadania najmniejszych kwadratów bez wag dla zmodyfikowanej macierzy i wektora prawej strony, <math>\displaystyle ||\widetilde{b}-\widetilde{A}x||_2 \rightarrow \min!</math>.
A więc, zadanie sprowadza się do zadania najmniejszych kwadratów bez wag dla zmodyfikowanej macierzy i wektora prawej strony, <math>||\widetilde{b}-\widetilde{A}x||_2 \rightarrow \min!</math>.
</div></div></div>
</div></div></div>


Linia 181: Linia 175:
<div class="exercise">
<div class="exercise">


Opisz szczegółowo sposób rozwiązywania układu <math>\displaystyle N</math> równań z <math>\displaystyle N</math> niewiadomymi
Opisz szczegółowo sposób rozwiązywania układu <math>N</math> równań z <math>N</math> niewiadomymi


<center><math>\displaystyle Ax = b,
<center><math>Ax = b</math>,</center>
</math></center>


korzystający z rozkładu QR metodą Householdera.
korzystający z rozkładu QR metodą Householdera.
Linia 190: Linia 183:


<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">   
Stosując rozkład QR metodą Householdera do macierzy <math>\displaystyle A</math>, dostajemy w rezultacie  
Stosując rozkład QR metodą Householdera do macierzy <math>A</math>, dostajemy w rezultacie  


<center><math>\displaystyle A = QR = H_{N-1}\cdot H_{N-2} \cdots H_1 R.
<center><math>A = QR = H_{N-1}\cdot H_{N-2} \cdots H_1 R</math></center>
</math></center>


Ponieważ <math>\displaystyle H_j^{-1} = H_j^T = H_j</math>, to <math>\displaystyle Q^{-1} = H_1  \cdots H_{N-2}\cdot H_{N-1}</math>. Dlatego  
Ponieważ <math>H_j^{-1} = H_j^T = H_j</math>, to <math>Q^{-1} = H_1  \cdots H_{N-2}\cdot H_{N-1}</math>. Dlatego  


<center><math>\displaystyle x = A^{-1}b = R^{-1}\, Q^{-1} = R^{-1} \cdot H_1  \cdots H_{N-2}\cdot H_{N-1} b.
<center><math>x = A^{-1}b = R^{-1}\, Q^{-1} = R^{-1} \cdot H_1  \cdots H_{N-2}\cdot H_{N-1} b</math></center>
</math></center>


Powyższą równość implementujemy korzystając z operacji mnożenia <math>\displaystyle H_j</math>, opisanej w  poprzednim zadaniu. W szczególności pamiętamy, by nie wyznaczać pełnej macierzy <math>\displaystyle H_j</math>. Pseudokod procedury byłby następujący:
Powyższą równość implementujemy korzystając z operacji mnożenia <math>H_j</math>, opisanej w  poprzednim zadaniu. W szczególności pamiętamy, by nie wyznaczać pełnej macierzy <math>H_j</math>. Pseudokod procedury byłby następujący:


{{algorytm|Metoda rozwiązywania układu równań przy użyciu przekształceń Householdera|Metoda rozwiązywania układu równań przy użyciu przekształceń Householdera|
{{algorytm|Metoda rozwiązywania układu równań przy użyciu przekształceń Householdera|Metoda rozwiązywania układu równań przy użyciu przekształceń Householdera|
<pre>wyznacz macierze Householdera <math>\displaystyle H_1,\ldots, H_{N-1}</math> oraz macierz trójkątną <math>\displaystyle R</math>,
<pre>wyznacz macierze Householdera <math>H_1,\ldots, H_{N-1}</math> oraz macierz trójkątną <math>R</math>,
okreslające rozkład QR macierzy <math>\displaystyle A</math>;
okreslające rozkład QR macierzy <math>A</math>;


y = b;
y = b;
for i = 1:N-1
for i = 1:N-1
y = <math>\displaystyle H_{N-i}</math>*y;
y = <math>H_{N-i}</math>*y;
end
end
 
 
rozwiąż układ z macierzą trójkątną <math>\displaystyle Rx = y</math>;
rozwiąż układ z macierzą trójkątną <math>Rx = y</math>;
</pre>}}
</pre>}}


Linia 220: Linia 211:
<div class="exercise">
<div class="exercise">


Innym sposobem wyzerowania wybranych elementów zadanego wektora <math>\displaystyle x</math> za pomocą przekształceń ortogonalnych jest zastosowanie tzw. <strong>obrotów Givensa</strong>,  
Innym sposobem wyzerowania wybranych elementów zadanego wektora <math>x</math> za pomocą przekształceń ortogonalnych jest zastosowanie tzw. <strong>obrotów Givensa</strong>,  


<center><math>\displaystyle \begin{pmatrix}  
<center><math>\begin{pmatrix}  
c & s \\
c & s \\
-s & c
-s & c
Linia 233: Linia 224:
\begin{pmatrix}  
\begin{pmatrix}  
1 \\ 0
1 \\ 0
\end{pmatrix} .
\end{pmatrix} </math></center>
</math></center>


Wskaż jak dobrać <math>\displaystyle c</math> i <math>\displaystyle s</math> tak, by macierz
Wskaż jak dobrać <math>c</math> i <math>s</math> tak, by macierz


<center><math>\displaystyle G = \begin{pmatrix}  
<center><math>G = \begin{pmatrix}  
c & s \\
c & s \\
-s & c
-s & c
Linia 244: Linia 234:
</math></center>
</math></center>


była ortogonalna i przekształcała <math>\displaystyle x</math> w zadany wyżej sposób. Jak zastosować ''sekwencję'' obrotów Givensa tak, by zadany wektor <math>\displaystyle N</math>-wymiarowy przeprowadzić na wektor o kierunku wektora jednostkowego? Porównaj koszt tej operacji z kosztem przekształcenia Householdera. Kiedy opłaca się stosować obroty Givensa w miejsce odbić Householdera?
była ortogonalna i przekształcała <math>x</math> w zadany wyżej sposób. Jak zastosować ''sekwencję'' obrotów Givensa tak, by zadany wektor <math>N</math>-wymiarowy przeprowadzić na wektor o kierunku wektora jednostkowego? Porównaj koszt tej operacji z kosztem przekształcenia Householdera. Kiedy opłaca się stosować obroty Givensa w miejsce odbić Householdera?
</div></div>
</div></div>


Linia 250: Linia 240:
Prosty rachunek pokazuje, że  
Prosty rachunek pokazuje, że  


<center><math>\displaystyle c = \frac{x_1}{||x||_2}, \quad s = \frac{x_2}{||x||_2}.
<center><math>c = \frac{x_1}{||x||_2}, \quad s = \frac{x_2}{||x||_2}</math></center>
</math></center>


(Zauważ, że <math>\displaystyle c^2 + s^2 = 1</math>, więc <math>\displaystyle G</math> faktycznie można traktować jako macierz obrotu o kąt <math>\displaystyle \theta</math> taki, że <math>\displaystyle c=\cos(\theta)</math> i <math>\displaystyle s=\sin(\theta)</math>.)
(Zauważ, że <math>c^2 + s^2 = 1</math>, więc <math>G</math> faktycznie można traktować jako macierz obrotu o kąt <math>\theta</math> taki, że <math>c=\cos(\theta)</math> i <math>s=\sin(\theta)</math>.)


Jak widać, występuje tu zadanie obliczania normy euklidesowej i w związku z tym ryzyko niepotrzebnego nadmiaru bądź niedomiaru. Dlatego w praktyce obliczeniowej rozpatrujemy dwa przypadki:
Jak widać, występuje tu zadanie obliczania normy euklidesowej i w związku z tym ryzyko niepotrzebnego nadmiaru bądź niedomiaru. Dlatego w praktyce obliczeniowej rozpatrujemy dwa przypadki:


{{algorytm|Wyznaczenie obrotu Givensa|Wyznaczenie obrotu Givensa|
{{algorytm|Wyznaczenie obrotu Givensa|Wyznaczenie obrotu Givensa|
<pre>if ( <math>\displaystyle |x_1|</math> > <math>\displaystyle |x_2|</math> )
<pre>if ( <math>|x_1|</math> > <math>|x_2|</math> )
{
{
t = <math>\displaystyle x_2</math> / <math>\displaystyle x_1</math>;
t = <math>x_2</math> / <math>x_1</math>;
c = 1 / sqrt(1+t*t);
c = 1 / sqrt(1+t*t);
s = t * c;
s = t * c;
Linia 266: Linia 255:
else
else
{
{
t = <math>\displaystyle x_1</math> / <math>\displaystyle x_2</math>;
t = <math>x_1</math> / <math>x_2</math>;
s = 1 / sqrt(1+t*t);
s = 1 / sqrt(1+t*t);
c = t * s;
c = t * s;
Linia 272: Linia 261:
</pre>}}
</pre>}}


Chcąc obrotami Givensa wyzerować wszystkie --- z wyjątkiem pierwszej --- współrzędne danego wektora <math>\displaystyle N</math>-wymiarowego, musimy zastosować sekwencję obrotów dotyczących kolejno: pierwszej i drugiej współrzędnej, pierwszej i trzeciej, itp. Po <math>\displaystyle N-1</math> krokach dostaniemy wektor, o który nam chodziło.
Chcąc obrotami Givensa wyzerować wszystkie --- z wyjątkiem pierwszej --- współrzędne danego wektora <math>N</math>-wymiarowego, musimy zastosować sekwencję obrotów dotyczących kolejno: pierwszej i drugiej współrzędnej, pierwszej i trzeciej, itp. Po <math>N-1</math> krokach dostaniemy wektor, o który nam chodziło.


Koszt jednego obrotu Givensa to 4 działania arytmetyczne i jedno pierwiastkowanie, zatem koszt wyzerowania wszystkich <math>\displaystyle N-1</math> (tzn. oprócz pierwszej) współrzędnych wektora jest równy <math>\displaystyle 4N-4</math> działań arytmetycznych oraz <math>\displaystyle N-1</math> pierwiastkowań, a więc jest wyższy niż analogicznego przekształcenia Householdera (ech, te pierwiastki!...). Istnieje jednak sprytna modyfikacja, tzw. algorytm Gentlemana, praktycznie zrównujący koszty implementacji sekwencji obrotów Givensa i odbić Householdera.
Koszt jednego obrotu Givensa to 4 działania arytmetyczne i jedno pierwiastkowanie, zatem koszt wyzerowania wszystkich <math>N-1</math> (tzn. oprócz pierwszej) współrzędnych wektora jest równy <math>4N-4</math> działań arytmetycznych oraz <math>N-1</math> pierwiastkowań, a więc jest wyższy niż analogicznego przekształcenia Householdera (ech, te pierwiastki!...). Istnieje jednak sprytna modyfikacja, tzw. algorytm Gentlemana, praktycznie zrównujący koszty implementacji sekwencji obrotów Givensa i odbić Householdera.


Ponadto, jest ważna klasa macierzy, dla których stosowanie obrotów Givensa ''jest znacznie tańsze'' od odbić Householdera: gdy w wektorze <math>\displaystyle x</math> już na starcie jest wiele współrzędnych zerowych, bo wtedy wystarczy obrotami Givensa wyzerować pozostałe niezerowe współrzędne.
Ponadto, jest ważna klasa macierzy, dla których stosowanie obrotów Givensa ''jest znacznie tańsze'' od odbić Householdera: gdy w wektorze <math>x</math> już na starcie jest wiele współrzędnych zerowych, bo wtedy wystarczy obrotami Givensa wyzerować pozostałe niezerowe współrzędne.


Takim przypadkiem jest np. konstrukcja rozkładu QR dla macierzy <strong>Hessenberga</strong>, czyli macierzy górnej trójkątnej uzupełnionej o jedną niezerową poddiagonalę --- precyzyjniej, dla takiej macierzy <math>\displaystyle A</math>, której elementy spełniają <math>\displaystyle a_{ij} = 0</math> dla <math>\displaystyle i-j > 1</math>. Rzeczywiście, wtedy w każdej kolumnie wystarczy wyzerować tylko ''jeden'' element! Zadanie znalezienia rozkładu QR niedużej i prawie-kwadratowej macierzy Hessenberga jest częścią składową [[MN08#GMRES|metody GMRES]] iteracyjnego rozwiązywania wielkich układów równań liniowych z macierzą niesymetryczną.
Takim przypadkiem jest np. konstrukcja rozkładu QR dla macierzy <strong>Hessenberga</strong>, czyli macierzy górnej trójkątnej uzupełnionej o jedną niezerową poddiagonalę --- precyzyjniej, dla takiej macierzy <math>A</math>, której elementy spełniają <math>a_{ij} = 0</math> dla <math>i-j > 1</math>. Rzeczywiście, wtedy w każdej kolumnie wystarczy wyzerować tylko ''jeden'' element! Zadanie znalezienia rozkładu QR niedużej i prawie-kwadratowej macierzy Hessenberga jest częścią składową [[MN08#GMRES|metody GMRES]] iteracyjnego rozwiązywania wielkich układów równań liniowych z macierzą niesymetryczną.


</div></div></div>
</div></div></div>

Aktualna wersja na dzień 21:50, 11 wrz 2023


Liniowe zadanie najmniejszych kwadratów

<<< 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: Rozszerzony układ równań dla zadania najmniejszych kwadratów

Inną, oprócz sprowadzenia do układu równań normalnych, metodą transformacji zadania najmniejszych kwadratów do zadania rozwiązywania układu równań z macierzą kwadratową, jest zapisanie w formie układu dwóch układów równań (sic!). Dokładniej, możemy scharakteryzować zadanie wygładzania jako znalezienie dwóch wektorów xRn oraz rRm takich, że

dr=bAx,ATr=0.

Zapisz macierzowo ten układ równań. Wskaż, kiedy mogłoby być opłacalne stosowanie takiego podejścia. Porównaj koszt rozwiązania tego układu wprost metodą eliminacji Gaussa, z kosztem innych metod rozwiązywania zadania najmniejszych kwadratów.

Wskazówka
Rozwiązanie

Ćwiczenie

W twierdzeniu o uwarunkowaniu zadania najmniejszych kwadratów mówi się, że

||bAx*||2||b||2<1

Wyjaśnij, dlaczego rzeczywiście tak jest.

Rozwiązanie

Ćwiczenie: Dopasowanie liniowych parametrów funkcji do danych

Znajdź a i b takie, że funkcja f(x)=a+bex minimalizuje błąd średniokwadratowy dla danych:

x f(x)
0.00 4.00000000000000e+00
1.25 3.28650479686019e+00
2.50 3.08208499862390e+00
3.75 3.02351774585601e+00
5.00 3.00673794699909e+00
6.25 3.00193045413623e+00
7.50 0.00055308437015e+00
8.75 3.00015846132512e+00
10.00 3.00004539992976e+00
Wskazówka
Rozwiązanie

Ćwiczenie: Ważone zadanie najmniejszych kwadratów

Niech A będzie macierzą m×n pełnego rzędu, przy czym mn. Podaj algorytm rozwiązywania ważonego zadania najmniejszych kwadratów:

i=1nωi|bi(Ax)i|2min!,

gdzie zakładamy, że 0<ωi1 są danymi wagami. (Gdy wszystkie ωi=1, zadanie sprowadza się do zwykłego zadania najmniejszych kwadratów.)

Rozwiązanie

Ćwiczenie

Opisz szczegółowo sposób rozwiązywania układu N równań z N niewiadomymi

Ax=b,

korzystający z rozkładu QR metodą Householdera.

Rozwiązanie

Ćwiczenie: Obroty Givensa

Innym sposobem wyzerowania wybranych elementów zadanego wektora x za pomocą przekształceń ortogonalnych jest zastosowanie tzw. obrotów Givensa,

(cssc)(x1x2)=||x||2(10)

Wskaż jak dobrać c i s tak, by macierz

G=(cssc)

była ortogonalna i przekształcała x w zadany wyżej sposób. Jak zastosować sekwencję obrotów Givensa tak, by zadany wektor N-wymiarowy przeprowadzić na wektor o kierunku wektora jednostkowego? Porównaj koszt tej operacji z kosztem przekształcenia Householdera. Kiedy opłaca się stosować obroty Givensa w miejsce odbić Householdera?

Rozwiązanie