MN12

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Nadokreślone układy równań liniowych

Zajmiemy się zadaniem wygładzania liniowego nazywanym też liniowym zadaniem najmniejszych kwadratów. Jest ono uogólnieniem zadania rozwiązywania kwadratowych układów równań liniowych do przy\-pa\-dku, gdy układ jest nadokreślony.

Jest to praktycznie bardzo często pojawiające się zadanie (pewien jego wariant rozwiązują np. nasze przenośne odbiorniki GPS), a autorem pierwszego rozwiązania był nie kto inny jak sam wielki Gauss.

Carl Friedrich Gauss
Zobacz biografię

Układ normalny

Niech A będzie daną macierzą o m wierszach i n kolumnach, Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A\inR^{m\times n}} , taką, że

mn=rank(A),

albo równoważnie, taką że jej wektory kolumny są liniowo niezależne. Niech także dany będzie wektor Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle b\inR^m} . Jasne jest, że wtedy układ równań Ax=b nie zawsze ma rozwiązanie - mówimy, że układ jest nadokreślony.

Zadanie wygładzania liniowego polega na znalezieniu wektora Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle x^*\inR^n} , który minimalizuje wektor residualny r=bAx w normie drugiej, tzn.

Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle \| b\,-\,A x^*\|_2\,=\,\min_{ x\inR^n} \| b\,-\,A x\|_2. }

Przykład

Przypuśćmy, że dla pewnej funkcji Parser nie mógł rozpoznać (nieznana funkcja „\toR”): {\displaystyle \displaystyle f:[a,b]\toR} obserwujemy jej wartości fi (dokładne lub zaburzone) w punktach ti, 1im. Funkcję tą chcielibyśmy przybliżyć inną funkcją w należącą do pewnej n wymiarowej przestrzeni liniowej W, np. przestrzeni wielomianów stopnia mniejszego niż n. Jakość przybliżenia mierzymy wielkością

i=1m(fiw(ti))2.

Wybierając pewną bazę (wj)j=1n w W i rozwijając w w tej bazie, w(t)=j=1ncjwj(t), sprowadzamy problem do minimalizacji

i=1m(fij=1ncjwj(ti))2

względem cj, a więc do zadania wygładzania liniowego. Rzeczywiście, kładąc Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A=(a_{i,j})\inR^{m\times n}} z ai,j=wj(ti), b=(fi)i=1m i x=(cj)j=1n, wielkość (Uzupelnic: unorm ) jest równa bAx22.

Lemat

Zadanie wygładzania liniowego ma jednoznaczne rozwiązanie x*, które spełnia układ równań

ATAx=ATb.

Zauważmy, że jeśli macierz A jest kwadratowa, m=n, to rozwiązaniem jest x*=A1b i residuum jest zerem. Zadanie wygładzania liniowego jest więc uogólnieniem rozwiązywania kwadratowych układów równań liniowych.

Równanie (Uzupelnic: unormal ) nazywa się układem normalnym. Może ono nam sugerować sposób rozwiązania zadania wygładzania liniowego. Wystarczy bowiem pomnożyć macierz AT przez A i rozwiązać układ normalny. Zauważmy ponadto, że macierz ATA jest symetryczna i dodatnio określona, bo (ATA)T=ATA i dla x0 mamy xT(ATA)x=(Ax)T(Ax)=Ax2>0, przy czym ostatnia nierówność wynika z faktu, że kolumny macierzy A są liniowo niezależne i dlatego Ax0. Przy mnożeniu AT przez A wystarczy więc obliczyć tylko elementy na głównej przekątnej i pod nią, a do rozwiązania równania z macierzą ATA można zastosować algorytm Banachiewicza-Choleskiego opisany w U. Uzupelnic: BC . Jak łatwo się przekonać, koszt takiego algorytmu wynosi n2(k+n/3), przy czym dominuje koszt mnożenia obliczenia macierzy ATA.

Ma on jednak pewne wady. Mnożenie macierzy powoduje w flν powstanie po drodze dodatkowych błędów, które mogą nawet zmienić rząd macierzy. Na przykład dla macierzy

A=(1111ϵϵϵϵ)

mamy

ATA=(1+ϵ211111+ϵ211111+ϵ211111+ϵ2).

Jeśli ϵ2<ν to flν(1+ϵ2)=1, co implikuje rank(flν(ATA))=1, podczas, gdy rank(flν(A))=4.

Poniżej przedstawimy inną metodę rozwiązywania zadania wygładzania liniowego, która oparta jest na specjalnych przekształceniach zwanych odbiciami Householdera.

Odbicia Householdera

Dla danego wektora Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle w\inR^m} o normie w2=wTw=1, odbicie (macierz) Householdera zdefiniowane jest jako

H=I2wwT.

Zauważmy, że

Hx=x2(wTx)w,

a ponieważ (wTx)w=(x,w)2w jest rzutem prostopadłym x na kierunek wektora w ((,)2 oznacza iloczyn skalarny), to Hx jest odbiciem lustrzanym wektora x względem hiperpłaszczyzny (wymiaru m1) prostopadłej do w.

Odbicia Householdera są przekształceniami nieosobliwymi spełniającymi

H1=H=HT.

Rzeczywiście, ponieważ w ma normę jednostkową, mamy

H2=(I2wwT)2=I4wwT+4w(wTw)wT=I,

oraz

HT=(I2wwT)T=I2(wT)TwT=I.

W szczególności H jest więc przekształceniem ortogonalnym, H1=HT, czyli nie zmienia długości wektora,

Hx2=(Hx)T(Hx)=xT(HTH)x=xTx=x2.

Odbicia Householdera zastosujemy do przeprowadzenia danego wektora x0 na kierunek innego niezerowego wektora, powiedzmy e, tzn.

Hx=(I2wwT)x=αe.


<flash>file=Wektor.swf</flash><div.thumbcaption>Odbicie Househodera

Załóżmy dla uproszczenia, że e2=1. Aby wyznaczyć H zauważmy, że

w=xαe2(wTx),

a ponieważ α=±x2 i w2=1 to

w=xx2exx2e2.

W szczególności, jeśli e=e1 jest pierwszym wersorem, powyższe wzory dają

H=IuuTγ,

gdzie

ui={x1x2i=1,xi2im,

oraz

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned \gamma &= \frac 12\| u\|_2^2\,=\, \frac 1 2\Big((x_1\mp\| x\|_2)^2+\sum_{i=2}^m x_i^2\Big) \\ &= \frac 1 2 \Big(\sum_{i=1}^m x_i^2\,+\,\| x\|_2^2\,\mp\, 2 x_1\|x\|_2\Big) \,=\,\|x\|_2^2\,\mp\,x_1 \|x\|_2. \endaligned}

Otrzymaliśmy dwa odbicia Householdera przekształcające dany wektor x na kierunek pierwszego wersora, w zależności od wybranego znaku przy x2. Ustalimy ten znak na plus gdy x10, oraz na minus gdy x1<0, co pozwoli na obliczenie u1 i γ z małym błędem względem w flν. Wtedy bowiem mamy

u1={x1+x2x10,x1x2x1<0,

oraz γ=x22+|x1|x2, czyli zawsze dodajemy liczby tych samych znaków. Ponadto pierwsza współrzędna wektora Hx jest równa x2 dla x10 oraz +x2 dla x1<0.

Rozkład QR

Odbić Householdera można użyć do rozkładu macierzy Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A\inR^{m\times n}} na iloczyn ortogonalno-trójkątny.

Niech A=(a1,a2,,an), gdzie aj są wektorami-kolumnami macierzy A. Wybierzmy pierwsze odbicie Householdera H1=Imu1u1T/γ1 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))=(H1a1,,H1an),

w której pierwsza kolumna a1(1) ma niezerową tylko pierwszą współrzędną. W następnym kroku wybieramy drugie przekształcenie Householdera H¯2=Im1v2v2T/γ2 wymiaru m1 tak, aby przeprowadzało wektor (ai,2(1))i=2m na kierunek pierwszego wersora w Rm1. Rozszerzając Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle v_2\inR^{m-1}} do wektora Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle u_2\inR^m} przez dodanie zera jako pierwszej współrzędnej, u2=(0,v2)T, otrzymujemy przekształcenie (macierz) Householdera H2=Imu2u2T/γ2 w Rm postaci

H2=(10T0H¯2).

Pomnożenie macierzy A(1) z lewej strony przez H2 spowoduje teraz wyzerowanie drugiej kolumny macierzy pod elementem a2,2(1), przy czym pierwszy wiersz i pierwsza kolumna pozostaną niezmienione. Postępując tak dalej n razy (albo n1 razy gdy m=n) otrzymujemy

HnHn1H2H1A=R,

gdzie Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle R\inR^{m\times n}} jest uogólnioną macierzą trójkątną górną, tzn. ri,j=0 dla i>j. Stąd, podstawiając Q=H1H2Hn, dostajemy rozkład macierzy na iloczyn ortogonalno-trójkątny

A=QR.

Rzeczywiście, macierz Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle Q\inR^{m\times m}} jest ortogonalna, bo

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned Q^{-1} &= (H_1H_2\cdots H_n)^{-1}\,=\, H_n^{-1}\cdots H_2^{-1}H_1^{-1} \\ &= H_n^T\cdots H_2^TH_1^T \,=\, (H_1H_2\cdots H_n)^T\,=\,Q^T. \endaligned}

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

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned \| r\|_2 &= \| b-A x\|_2\;=\;\| b-QR x\|_2 \\ &= \|Q(Q^T b-R x)\|_2 \;=\;\| c-R x\|_2, \endaligned}

gdzie c=QTb=HnH2H1b. Rozbijając wektor c na c=(cI,cII)T, gdzie Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle c_I\inR^n} i Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle c_{II}\inR^{m-n}} , oraz macierz R na

R=(RI0),

gdzie Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle R_I\inR^{n\times n}} jest macierzą trójkątną górną, a 0 jest macierzą zerową wymiaru (mn)×n, otrzymujemy

r22=cIRIx22+cII22.

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

x*=RI1cI,

oraz r*2=bAx*2=cII2.

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

(Hkx)i=xisuk,i,

gdzie s=ukTx/γk.

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

k=1n4(mk+1)(nk)43n3+2n2(mn)=2n2(mn/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.

Uwarunkowanie

Biblioteki