• Nie Znaleziono Wyników

Algorytm dla zadania wygładzania

Odbić Hauseholdera 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 macie-rzy A. Wybierzmy pierwsze odbicie Hauseholdera H1 = Im− ~u1~uT11

tak, aby przekształcało pierwszy wektor-kolumnę macierzy A na kieru-nek ~e1. Efektem pomnożenia macierzy A z lewej strony przez H1 będzie wtedy macierz

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

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

~v2 ∈ Rm−1 do wektora ~u2 ∈ Rm przez dodanie zera jako pierwszej współrzędnej, ~u2 = (0, ~v2)T, otrzymujemy przekształcenie (macierz) Hauseholdera H2 = Im− ~u2~uT22 w Rm postaci

H2 = 1 ~0T

~0 ¯H2

!

.

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)

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.

5.3. ALGORYTM DLA ZADANIA WYGŁADZANIA 57 Dyspunując rozkładem (5.3) zadanie wygładzania liniowego można rozwiązać następująco. Ponieważ mnożenie przez macierz ortogonalną nie zmienia normy drugiej wektora, mamy

k~rk2 = 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×njest macierzą trójkątną górną, a 0 jest macierzą zerową wymiaru (m − n) × n, otrzymujemy

k~rk22 = 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ń Hauseholdera 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~x moż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 ma-cierzy A(k−1)do A(k)kosztuje rzędu 4(m−k+1)(n−k) operacji arytme-tycznych i obliczenie jednego pierwiastka kwadratowego. Cały rozkład A= QR kosztuje więc rzędu (dla dużych m i n)

Xn k=1

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

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

58 ROZDZIAŁ 5. ZADANIE WYGŁADZANIA LINIOWEGO 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×m nazywa się macierzą pseudoodwrotną do A ∈ Rm×n, rank(A) = n. Dla nieosobliwych macierzy kwadratowych mamy oczywiście A+= A−1, ponieważ wtedy ~x = A−1.

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=1wektorów własnych tej macierzy, a odpowiadające im wartości własne są rzeczywiste i dodatnie, tzn.

h~ξi, ~ξji2 =

( 0 i6= j, 1 i = j, oraz (ATA)~ξj = λjξ~j, 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 i6= j, 1 i = j.

5.3. ALGORYTM DLA ZADANIA WYGŁADZANIA 59 Wektory ~ηi, 1 ≤ i ≤ n, można uzupełnić m − n dodatkowymi wektorami tak, aby cały układ (~ηi)mi=1był 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 dia-gonalna z wyrazami na przekątnej pλ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 Hauseholdera 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 miej-scach 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 Hauseholdera } 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

uu := aa + norm;

akk := −norm end else

begin

uu := aa − norm;

akk := norm

60 ROZDZIAŁ 5. ZADANIE WYGŁADZANIA LINIOWEGO 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 Hauseholdera 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ν (re-prezentowana 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; miano-wicie przez zastosowanie ortogonalizacji Grama-Schmidta do wektorów ko-lumn ~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 Hauseholdera, macierz Q nie jest tu kwadratowa, ale za to kwadratowa jest macierz R.)

5.3. ALGORYTM DLA ZADANIA WYGŁADZANIA 61 Wektory ortonormalne ~qj oraz współczynniki ri,j macierzy R można wy-znaczyć z układu równań

~aj = Xj 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= ~qTi~aj, a stąd wzory rekurencyjne

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 for-malnie 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 Hauseholdera. Postępując dalej tak, jak w analizie algorytmu Hauseholdera, otrzymujemy żądany wynik.

U. 5.6 Okazuje się, że algorytm ortogonalizacyjny Grama-Schmidta z U.

5.5 ma niedobre własności numeryczne, 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ą ortogonalizację, najpierw do wektorów ~aj, a potem do ~qj(1), 1 ≤ j≤ n. (Zob. Ćw. 5.7.)

Ćwiczenia

Ćw. 5.1 Pokazać, że dla macierzy pseudoodwrotnej A+ do danej macierzy A ∈ Rm×n, rank(A) = n, macierz A+A = In jest identycznością w Rn×n, natomiast

AA+ = In 0

0 0

!

∈ Rm×m,

62 ROZDZIAŁ 5. ZADANIE WYGŁADZANIA LINIOWEGO czyli AA+ jest rzutem prostopadłym na podprzestrzeń rozpiętą na pierw-szych n wersorach w Rm.

Ć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 war-tości własne, a podprzestrzenie własne im odpowiadające mają ten sam wy-miar.

Ćw. 5.4 Uzasadnić, że dana macierz kwadratowa Q ∈ Rm×m jest ortogo-nalna wtedy i tylko wtedy gdy jej kolumny (wiersze) tworzą bazę ortonor-malną 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ładzania liniowego.

Ćw. 5.7 Zastosujmy ortogonalizację Grama-Schmidta do dwóch wektorów liniowo niezależnych ~a i ~b o normach k~ak2 = 1 = k~bk2. Załóżmy dla uprosz-czenia, ż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,~ci2 = −ε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.

5.3. ALGORYTM DLA ZADANIA WYGŁADZANIA 63 Ćw. 5.8 Zaprogramować algorytm Grama-Schmidta z U. 5.5 (z podwójną ortogonalizacją) rozwiązujący zadanie wygładzania.

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

æ

64 ROZDZIAŁ 5. ZADANIE WYGŁADZANIA LINIOWEGO

Rozdział 6

Interpolacja wielomianowa

Dotychczas rozpatrywaliśmy zadania, w których danymi są ciągi liczb rzeczywistych. Teraz zajmiemy się zadaniami, w których danymi są funkcje o wartościach rzeczywistych. Pierwszym z nich jest zadanie in-terpolacji wielomianowej.

6.1 Sformułowanie zadania interpolacji

Niech D ⊂ R i niech F będzie pewnym zbiorem funkcji f : D → R.

Niech x0, x1, . . . , xnbędzie ustalonym zbiorem parami różnych punktów z D, zwanych później węzłami.

Powiemy, że wielomian w interpoluje funkcję f ∈ F w węzłach xj, gdy

w(xj) = f(xj), 0 ≤ j ≤ n.

Oznaczmy przez Πnprzestrzeń liniową wielomianów stopnia co naj-wyżej n o współczynnikach rzeczywistych,

Πn = { w(x) = anxn+ an−1xn−1+ · · · + a1x+ a0 : aj ∈ R, 0 ≤ j ≤ n }.

Lemat 6.1 Dla dowolnej funkcji f : D → R istnieje dokładnie jeden wielomian wf ∈ Πn interpolujący f w węzłach xj, 0≤ j ≤ n.

Dowód Wybierzmy w Πn dowolną bazę wielomianów ϕj, 0 ≤ j ≤ n, Πn = span{ ϕ0, ϕ1, . . . , ϕn}.

65

66 ROZDZIAŁ 6. INTERPOLACJA WIELOMIANOWA Wtedy każdy wielomian z Πn można jednoznacznie przedstawić w po-staci rozwinięcia względem wybranej bazy. Warunkiem koniecznym i dostatecznym na to, aby wielomian wf(·) =Pnj=0cjϕj(·) interpolował f jest spełnienie układu n + 1 równań liniowych

Xn j=0

cjϕj(xi) = f(xi), 0 ≤ i ≤ n,

z n + 1 niewiadomymi cj, który w postaci macierzowej wygląda nastę-pująco:

Aby wykazać, że układ ten ma jednoznaczne rozwiązanie wystarczy, aby wektor zerowy był jedynym rozwiązaniem układu jednorodnego. Rze-czywiście, układ jednorodny odpowiada interpolacji danych zerowych, f(xi) = 0, ∀i. Istnienie niezerowego rozwiązania byłoby więc równo-ważne istnieniu niezerowego wielomianu stopnia nie większego od n, który miałby n + 1 różnych zer xi, co jest niemożliwe. 2

Zadanie znalezienia dla danej funkcji f jej wielomianu interpolacyj-nego stopnia co najwyżej n jest więc dobrze zdefiniowane, tzn. rozwią-zanie istnieje i jest wyznaczone jednoznacznie. Zauważmy, że wielomian interpolacyjny wf jako taki nie może być wynikiem obliczeń w naszym modelu obliczeniowym, możemy natomiast wyznaczyć jego współczyn-niki cj w wybranej bazie.

Definicja 6.1 Niech (ϕj)nj=0 będzie bazą w przestrzeni Πnwielomianów stopnia co najwyżej n. Zadanie (obliczeniowe) interpolacji wielomino-wej polega na obliczeniu dla danej funkcji f współczynników cj takich, że wielomian

wf(·) = Xn

j=0

cjϕj(·) (6.2)

interpoluje f w punktach xj, 0≤ j ≤ n.