• Nie Znaleziono Wyników

Odbić Householdera można użyć do rozkładu macierzy A ∈ Rm×n na iloczyn ortogonalno-trójkątny.

Niech A = (~a1, ~a2, . . . , ~an), gdzie ~aj są wektorami-kolumnami macierzy A. Wybierzmy pierwsze odbicie Householdera H1 = Im− ~u1~u1T1 tak, aby przekształcało pierwszy wektor-kolumnę macierzy A na kierunek ~e1. Efektem pomnożenia macierzy A z lewej strony przez H1 będzie wtedy macierz

A(1) = (~a1(1), . . . , ~an(1)) = (H1~a1, . . . , H1~an),

w której pierwsza kolumna, czyli ~a1(1),ma niezerową tylko pierwszą współrzędną. W następnym kroku wybieramy drugie przekształcenie Householdera ¯H2 = Im−1− ~v2~v2T2 wymiaru m − 1 tak, aby prze-prowadzało wektor (a(1)i,2)mi=2 na kierunek pierwszego wektora bazy kanonicznej w Rm−1. Rozszerzając

~v2 ∈ Rm−1 do wektora ~u2 ∈ Rm przez dodanie zera jako jego pierwszej współrzędnej, ~u2 = (0, ~v2)T,

Pomnożenie macierzy A(1) z lewej strony przez H2 spowoduje teraz wyzerowanie drugiej kolumny macierzy pod elementem a(1)2,2, przy czym pierwszy wiersz i pierwsza kolumna pozostaną niezmienione.

Postępując tak dalej n razy (albo n − 1 razy gdy m = n) otrzymujemy HnHn−1· · · H2H1A = R,

gdzie R ∈ Rm×n jest uogólnioną macierzą trójkątną górną, tzn. ri,j = 0 dla i > j. Stąd, podstawiając Q = H1H2· · · Hn, dostajemy rozkład macierzy na iloczyn ortogonalno-trójkątny

A = Q R. (5.3)

5.3. ALGORYTM DLA ZADANIA WYGŁADZANIA 41 Rzeczywiście, macierz Q ∈ Rm×m jest ortogonalna, bo

Q−1 = (H1H2· · · Hn)−1 = Hn−1· · · H2−1H1−1

= HnT · · · H2TH1T = (H1H2· · · Hn)T = QT.

Dyspunując rozkładem (5.3) zadanie wygładzania liniowego można rozwiązać następująco. Ponie-waż mnożenie przez macierz ortogonalną nie zmienia normy drugiej wektora, mamy

k~r k2 = k~b − A~xk2 = k~b − QR~xk2 = kQ(QT~b − R~x)k2 = k~c − R~xk2,

gdzie ~c = QT~b = Hn· · · H2H1~b. Rozbijając wektor ~c na ~c = (~cI, ~cII)T, gdzie ~cI ∈ Rn i ~cII ∈ Rm−n, oraz macierz R na

R = RI 0

!

,

gdzie RI ∈ Rn×n jest macierzą trójkątną górną, a 0 jest macierzą zerową formatu (m − n) × n, otrzymujemy

k~r k22 = k~cI− RI~xk22 + k~cIIk22.

Rozwiązanie ~x zadania wygładzania jest więc rozwiązaniem układu liniowego trójkątnego,

~

x = R−1I ~cI, oraz k~rk2 = k~b − A~xk2 = k~cIIk2.

Zastanówmy się nad praktyczną realizacją tego algorytmu. Każde z kolejnych przekształceń Ho-useholdera Hk wyznaczamy przez obliczenie γk oraz współrzędnych wektora ~uk. Wektor ten ma tylko m − k + 1 współrzędnych niezerowych, a ponadto uk,i = a(k−1)i,k dla k + 1 ¬ i ¬ m. Dzięki takiej reprezentacji Hk, mnożenia Hk~xmożemy dla dowolnego ~x realizować według wzoru

(Hk~x)i = xi − s uk,i, gdzie s = ~uTk~x/γk.

Uwzględnizjąc obecność zerowych elementów w ~uk, przejście od macierzy A(k−1) do A(k) kosztuje 4(m − k + 1)(n − k) operacji arytmetycznych i obliczenie jednego pierwiastka kwadratowego. Cały rozkład A = QR kosztuje więc

n

X

k=1

4(m − k + 1)(n − k) ≈ 4

3n3+ 2n2(m − n) = 2n2(m − n/3)

operacji arytmetycznych i n pierwiastków kwadratowych. Zauważmy, że w przypadku m = n, a więc dla kwadratowego układu równań, koszt ten wynosi (4/3)n3 i jest dwa razy większy od kosztu eliminacji Gaussa.

Uwagi i uzupełnienia

U. 5.1 Pokazaliśmy, że rozwiązaniem zadania wygładzania liniowego jest wektor ~x = A+~b, gdzie A+ = (ATA)−1AT.

Macierz A+∈ Rn×mnazywa się macierzą pseudoodwrotną do A ∈ Rm×n, o ile rank(A) = n. Dla nieosobliwych macierzy kwadratowych mamy oczywiście A+= A−1, ponieważ wtedy ~x= A−1.

42 ROZDZIAŁ 5. ZADANIE WYGŁADZANIA LINIOWEGO

U. 5.2 Pokażemy, że każdą macierz Am×n, rank(A) = n, można rozłożyć na iloczyn

A = U Σ VT, (5.4)

gdzie U ∈ Rm×m i V ∈ Rn×n są macierzami ortogonalnymi, a Σ ∈ Rm×n jest macierzą diagonalną (tzn.

σi,j= 0 dla i 6= j) o dodatnich wyrazach σi,i.

Ponieważ macierz ATA jest symetryczna i dodatnio określona, znane twierdzenie z algebry liniowej mówi, że istnieje w Rn baza ortonormalna (~ξj)nj=1 wektorów własnych tej macierzy, a odpowiadające im wartości własne są rzeczywiste i dodatnie, tzn.

h~ξi, ~ξji2 =

( 0 i 6= j, 1 i = j, oraz (ATA)~ξj = λjj, gdzie

λ1 ­ λ2 ­ · · · ­ λn> 0.

Zauważmy, że wektory ~ηi= λ−1/2i (A~ξi) są ortonormalne w Rm, bowiem

h~ηi, ~ηji2 = iλj)−1/2hA~ξi, A~ξji2 = (λiλj)−1/2h(ATA)~ξi, ~ξji2

= iλj)−1/2λih~ξi, ~ξji2 =

( 0, i 6= j, 1, i = j.

Wektory ~ηi, 1 ¬ i ¬ n, można uzupełnić m − n dodatkowymi wektorami tak, aby cały układ (~ηi)mi=1 był bazą ortonormalną w Rm. Zdefiniujmy teraz macierze ortogonalne U o kolumnach ~ηi, 1 ¬ i ¬ m, oraz V o kolumnach ~ξj, 1 ¬ j ¬ n. Bezpośredni rachunek pokazuje, że macierz UTAV jest diagonalna z wyrazami na przekątnejpλj. Stąd A = U Σ VT z σj,j =pλj, 1 ¬ j ¬ n.

Liczbypλj nazywa się wartościami szczególnymi macierzy A, a rozkład (5.4) rozkładem macierzy według wartości szczególnych.

Zauważmy jeszcze, że jeśli A = U Σ VT to A+ = V Σ+UT oraz Σ+ ∈ Rn×m jest macierzą diagonalną z wyrazami na diagonali równymi 1/pλj. Rozwiązanie zadania wygładzania liniowego można więc zapisać jako

~

x = V Σ+UT~b.

U. 5.3 Przedstawimy teraz jedną z możliwych implementacji algorytmu Householdera rozkładu macierzy na iloczyn A = QR. Po wykonaniu poniższego programu wyrazy ri,j macierzy R dla 1 ¬ i ¬ j zostaną zapamiętane na miejscach a[i, j], współrzędne uj,i wektora ~uj dla j + 1 ¬ i ¬ m na miejscach a[i, k], a współrzędna uj,j i liczba γj odpowiednio na u[j] i gam[j], 1 ¬ j ¬ n.

for k := 1 to n do begin

{ obliczanie kolejnego odbicia Householdera } norm2 := 0.0;

for l := k to m do begin

aa := a[l, k];

norm2 := norm2 + aa ∗ aa end;

norm := sqrt(norm2);

aa := a[k, k];

if (aa ­ 0.0) then begin

5.3. ALGORYTM DLA ZADANIA WYGŁADZANIA 43 uu := aa + norm;

akk := −norm end else

begin

uu := aa − norm;

akk := norm end;

gamma := norm2 + abs(aa) ∗ norm;

u[k] := uu;

gam[k] := gamma;

{ modyfikacja kolumn macierzy } a[k, k] := akk;

for j := k + 1 to n do begin

s := uu ∗ a[k, j];

for l := k + 1 to m do s := s + a[l.k] ∗ a[l, j];

s := s/gamma;

a[k, j] := a[k, j] − s ∗ uu;

for l := k + 1 to m do a[l, j] := a[l, j] − s ∗ a[l, k]

end;

end.

U. 5.4 Można pokazać, że przedstawiony algorytm Householdera rozkładu macierzy na iloczyn ortogonalno-trójkątny jest numerycznie poprawny. To znaczy, otrzymane w flν macierz trójkątna górna Rν i ortogonalna Qν (reprezentowana przez n wektorów ~uk i liczb γk) spełniają (A + E) = QνRν, gdzie kEk ¬ K(m, n)νkAk.

U. 5.5 Zadanie wygładzania liniowego można również rozwiązać stosując innego rodzaju rozkład ortogonalno-trójkątny macierzy A ∈ Rm×n; mianowicie przez zastosowanie ortogonalizacji Grama-Schmidta do wektorów kolumn ~aj macierzy A. W wyniku otrzymujemy ciąg wektorów ~qj, 1 ¬ j ¬ n, tworzący układ ortonormalny w Rm, oraz spełniający

span ~q1, ~q2, . . . , ~qj = span ~a1, ~a2, . . . , ~aj, 1 ¬ j ¬ n. (5.5) Zauważmy, że jeśli z wektorów ~qj stworzymy macierz Q = (~q1, ~q2, . . . , ~qn) ∈ Rm×n, to (5.5) implikują istnienie kwadratowej macierzy trójkątnej górnej R ∈ Rn×n takiej, że

A = Q R.

(W odróżnieniu od efektu działania algorytmu Householdera, macierz Q nie jest tu kwadratowa, ale za to kwadratowa jest macierz R.)

Wektory ortonormalne ~qj oraz współczynniki ri,j macierzy R można wyznaczyć z układu równań

~aj =

j

X

s=1

rs,j~qs, 1 ¬ j ¬ n.

Mnożąc j-te równanie skalarnie przez ~qi, 1 ¬ i ¬ j, otrzymujemy ri,j = h~aj, ~qii2 = ~qiT~aj, a stąd wzory rekurencyjne

44 ROZDZIAŁ 5. ZADANIE WYGŁADZANIA LINIOWEGO

for j := 1 to n do begin

for i := 1 to j − 1 do ri,j := h~qi, ~aji2;

~

pj := ~aj Pj−1s=1rs,j~qs; rj,j := k~pjk2;

~

qj := ~pj/rj,j

end.

Dysponując rozkładem A = QR, rozwiązanie ~x zadania wygładzania wyznaczamy z równania R~x = QT~b. Rzeczywiście, układ (~qj)nj=1 można formalnie uzupełnić do układu ortonormalnego w Rm dodając do niego pewne wektory ~qj dla n + 1 ¬ j ¬ m. Tworząc macierz ortogonalną Q = (~q1, . . . , ~qm) i rozszerzając macierz R ∈ Rn×n do macierzy R ∈ Rm×n przez dodanie do niej m − n zerowych wierszy, otrzymujemy A = Q R, a więc rozkład taki jak w algorytmie Householdera. Postępując dalej tak, jak w analizie algorytmu Householdera, otrzymujemy żądany wynik.

U. 5.6 Okazuje się, że algorytm ortogonalizacyjny Grama-Schmidta z U. 5.5 ma niedobre własności nume-ryczne, gdy wektory-kolumny macierzy wyjściowej A są “słabo liniowo niezależne”; tzn. otrzymane w flν wektory ~qj(1) mogą być wtedy “słabo” ortogonalne. W takim wypadku należy stosować podwójną ortogona-lizację, najpierw do wektorów ~aj, a potem do ~qj(1), 1 ¬ j ¬ n. (Zob. Ćw. 5.8.)

Ćwiczenia

Ćw. 5.1 Pokazać, że dla macierzy pseudoodwrotnej A+do danej macierzy A ∈ Rm×n, rank(A) = n, macierz A+A = Injest identycznością w Rn×n, natomiast AA+jest rzutem prostopadłym w Rm×m na podprzestrzeń rozpiętą na wektorach-kolumnach macierzy A.

Ćw. 5.2 Niech A ∈ Rm×n. Uzasadnić, że jądro macierzy AT,

ker(AT) = { ~y ∈ Rm: AT~y = ~0 }, jest podprzestrzenią prostopadłą do obrazu A,

im(A) = { A~x ∈ Rm: ~x ∈ Rn}.

Ćw. 5.3 Pokazać, że macierze ATA i AAT mają takie same niezerowe wartości własne, a podprzestrzenie własne im odpowiadające mają ten sam wymiar.

Ćw. 5.4 Uzasadnić, że dana macierz kwadratowa Q ∈ Rm×m jest ortogonalna wtedy i tylko wtedy gdy jej kolumny (wiersze) tworzą bazę ortonormalną w Rm.

Ćw. 5.5 Niech ~u będzie niezerowym wektorem w Rm oraz γ = k~uk22/2. Uzasadnić, że algorytm obliczania H~x = ~x − s ~u, s = (~uT~x)/γ,

według powyższego wzoru, jest numerycznie poprawny ze względu na dany wektor ~x ∈ Rm.

Ćw. 5.6 Policzyć złożoność algorytmu ortogonalizacyjnego opisanego w U. 5.5 rozwiązania zadania wygła-dzania liniowego.

5.3. ALGORYTM DLA ZADANIA WYGŁADZANIA 45 Ćw. 5.7 Rozpatrzmy dwa rozkłady ortogonalno-trójkątne macierzy A ∈ Rm×n, rank(A) = n. Pierwszy to A = QR, gdzie Q ∈ Rm×m i R ∈ Rm×n (np. pochodzący z algorytmu Householdera), a drugi to A = Q1R1, gdzie Q1 ∈ Rm×n i R1 ∈ Rn×n (np. pochodzący z algorytmu Grama-Schmidta z U. 5.5). Pokazać, że n pierwszych kolumn macierzy Q różnią się od n pierwszych kolumn macierzy Q1 co najwyżej znakami; tzn.

istnieje macierz diagonalna D ∈ Rm×n taka, że di,i= ±1 dla 1 ¬ i ¬ n oraz Q1 = D Q.

Ćw. 5.8 Zastosujmy ortogonalizację Grama-Schmidta do dwóch wektorów liniowo niezależnych ~a i ~b o nor-mach k~ak2 = 1 = k~bk2. Załóżmy dla uproszczenia, że w obliczeniach jedynie iloczyn skalarny tych wektorów s = h~a,~bi2 liczy się z błędem, flν(s) = s(1 + ε), gdzie |ε| jest dodatnie i na poziomie ν. Pokazać, że wtedy dla otrzymanej w wyniku ortogonalizacji unormowanej pary wektorów ~a i ~c mamy

h~a, ~c i2 = −εs p1 − s2(1 − ε2).

Wywnioskować stąd, że gdy ~a i ~b są “prawie liniowo zależne”, to ~a i ~c są dalekie od ortogonalnych.

Ćw. 5.9 Zaprogramować algorytm Grama-Schmidta z U. 5.5 (z podwójną ortogonalizacją) rozwiązujący zadanie wygładzania.

Ćw. 5.10 Zaprogramować algorytm obliczający macierz odwrotną do danej nieosobliwej macierzy A ∈ Rn×n wykorzystujący rozkład Householdera A = QR.

Powiązane dokumenty