Rozdziaª 9 Liniowe zadania najmniejszych kwadratów Liniowe zadania najmniejszych kwadratów polega na znalezieniu x R n, który minimalizuje Ax b 2 dla danej macierzy A R m,n i wektora b R m. Zauwa»my,»e je±li m = n i A jest nieosobliwa, to LZNK jest równowa»ne rozwi zaniu ukªadu Ax = b. Funkcj octave'a rozwi zuj c dowolne LZNK jest operator \. Wywoªanie x=a\b powinno zwróci rozwi zanie LZNK. W przypadku niejednoznaczno±ci LZNK rozwi zanie jest wybrane wedªug odpowiedniego kryterium, o którym napiszemy poni»ej w rozdziale 9.2. Przetestujmy ten operator na kilku bardzo prostych przykªadach macierzy wymiaru 3 2. Pierwszy przykªad z b b d cym pierwsz kolumn : A=[1 1 1 ; 1 1 2 ] ' b=[1 1 1 ] ' x=a\b Tutaj rozwi zanie jest jednoznaczne. We¹my macierz o niezerowym j drze (przestrzeni zerowej), wtedy oczywi±cie dodanie wektora z j dra macierzy do x nie zmieni normy Ax b. A=[1 1 b=[1 1 x=a\b 1 ; 1 1 1] ' 1 ] ' 94
J dro macierzy: y=null (A) norm(a ( x+y) b, 2 ) 9.1 Regularne LZNK Je±li macierz A jest kolumnami regularna (tzn. kolumny stanowi ukªad niezale»ny liniowo), to LZNK nazywamy regularnym i tylko wtedy ma ono jednoznaczne rozwi zanie. Rozwi»my najbardziej klasyczne zadanie najmniejszych kwadratów. Dla danych punktów (x k, y k ) m k=1 dopasuj krzyw postaci n j=1 a jf j (x) dla znanych funkcji {f j } tak, aby min a j y k j byªa minimalna. To jest oczywi±cie LZNK z macierz : k A = (f j (x k )) k,j a j f j (x k ) 2 i wektorem prawej strony b = (y k ). Rozwi»my to zadanie dla dowolnych punktów zadanych poprzez dwa pionowe wektory x = (x k ) i y = (y k ) oraz krzywych postaci a 1 cos(x) + a 2 sin(x): function a=dopasuj ( x, y,n=length ( x ) ) A=[cos ( x ), sin ( x ) ] ; a=a\y ; end Przetestujmy na punktach le» cych na wykresie funkcji sin. x=linspace (0,2 pi, 1 0 ) ' ; y=sin ( x ) ; a=dopasuj ( x, y ) Czyli a 1 = 0 i a 2 = 1 (tak, jak si spodziewali±my). Teraz rozpatrzmy losowe punkty blisko wykresu cos, por. rysunek 9.1: y=cos ( x )+0.5 (rand (10,1) 0.5); a=dopasuj ( x, y ) z=linspace (0,2 pi ) ; plot ( x, y, "+", z, a (1) cos ( z)+a (2) sin ( z ), " ;... dopasowana krzywa ; ", z, cos ( z ), " ; cos ; " ) 95
Rysunek 9.1: Wykres funkcji cos oraz funkcji dopasowanej do punktów oznaczonych przez plusy. Teraz mo»emy np. doda du»e dodatkowe zaburzenie np. y 1 i zobaczy jak zmieni si dopasowywana krzywa. Pozostawimy to jako zadanie. 9.2 Nieregularne LZNK i rozkªad SVD W programie Matematyki Obliczeniowej nie ma tre±ci zwi zanych z nieregularnym LZNK, niemniej my w tym skrypcie poka»emy jak mo»na rozwi zywa takie LZNK w octave'ie. W ogólno±ci nie ma miejsca wtedy jednoznaczno±ci rozwi zania - jak to ju» zauwa»yli±my. Do rozwi zywania nieregularnego LZNK sªu»y rozkªad macierzy SVD, czyli rozkªad wzgl dem szczególnych warto±ci macierzy. Rozkªad SVD macierzy A (dowolnej) to A = UΛV T, gdzie U, V to macierze ortogonalne, a Λ to macierz diagonalna z nierosn cymi 96
nieujemnymi warto±ciami na diagonali. Wszystkie te warto±ci z diagonali, które s nieujemne, oznaczmy przez σ 1,..., σ r. Nazywamy je warto±ciami szczególnymi macierzy A. Wyznaczone one s jednoznacznie, ale ju» sam rozkªad SVD nie jest jednoznaczny. Wida,»e Ax b 2 2 = UΛV T x b 2 2 = Λy U T b 2 2 dla y = V T x. Je±li wi c znajdziemy rozwi zanie y LZNK dla macierzy diagonalnej Λ z praw stron g = U T b, to od razu x = V y. Dalej otrzymujemy,»e Λy U T b 2 2 = r n σ k y k g k 2 + g k 2. k=1 k=r+1 Bior c minimum po y k widzimy,»e rozwi zaniem tego LZNK jest dowolne y speªniaj ce: y k = g k σ k k = 1,..., r. y r+1,..., y n mog przyj dowolne warto±ci. Otrzymujemy wi c,»e rozwi zaniem wyj±ciowego LZNK jest podprzestrze«: { V ( w z ) } : z R n r = V ( w 0 ) + { V ( 0 z ) } : z R n r dla w R r takiego,»e w k = y k = g k σ k. Zbiorem rozwi za«jest podprzestrze«aniczna wymiaru n r. Operator \ zwraca element zbioru rozwi za«o najmniejszej normie drugiej, czyli V ( w 0 ). Do znalezienia rozkªadu SVD macierzy sªu»y funkcja SVD: [U, S, V] = svd (A) gdzie U, V to macierze ortogonalne, S to macierz diagonalna z warto±ciami szczególnych macierzy A takie,»e U S V T = A. Mo»na te» wywoªa t funkcj jako: S = svd (A) Wtedy funkcja zwróci tylko warto±ci szczególne macierzy w wektorze. Przetestujmy t funkcj : 97
A=hilb ( 3 ) ; S=svd (A) norm(u S V' A, 1 ) Przetestujmy t funkcj dla macierzy niekwadratowej: A=[1 1 1 ; 1 2 3 ] ; B=A' ; norm(u S V' A, 1 ) [U, S, V] = svd (B) norm(u S V' B, 1 ) Rozpatrzmy macierz kwadratow osobliw : A=[1 1 ; 2 2 ] ; Formalnie wynik jest faªszywy. Druga wªasno± szczególna powinna by równa zero. Z uwagi na bª dy zaokr gle«nie mo»emy si spodziewa tego,»e otrzymamy zero, a wynik na poziomie 1e 16 mo»emy uzna za numeryczne zero. Rz d macierzy nie jest numerycznie dobrze uwarunkowany, najmniejsze zaburzenie macierzy mo»e zmieni rz d, a wi c badanie rz du maciery w arytmetyce zmiennopozycyjnej jest wªa±ciwie niemo»liwe. Przetestujmy, jak dziaªa operator \ oraz funkcja svd() zastosowane do rozwi zania nieregularnego LZNK. Na pocz tek rozwa»ymy LZNK z macierz o maksymalnym rz dzie, ale o wi kszej ilo±ci kolumn ni» wierszy: A=[1 1 1 ; 1 2 3 ] s = [ 1 ; 0 ; 0 ] ; f=a s ; y=v( :, 1 : 2 ) ( S ( 1 : 2, 1 : 2 ) \ (U' f ) ) norm(a y f, 2 ) Rozpatrzmy f nie b d ce w przestrzeni kolumn macierzy A. f=rand ( 2, 1 ) ; y=v( :, 1 : 2 ) ( S ( 1 : 2, 1 : 2 ) \ (U' f ) ) norm( xx y, 2 ) Zajmijmy si macierz, która nie ma maksymalnego rz du: 98
A=[1 1 1 1 ; 2 2 2 2 ; 1 1 2 3 ] ' s = [ 1 ; 0 ; 0 ] ; f=a s ; g=u' f ; x=v( :, 1 : 3 ) ( S ( 1 : 3, 1 : 3 ) \ g ( 1 : 3 ) ) norm(a x f, 2 ) Znów rozpatrzmy f nie b d ce w przestrzeni kolumn macierzy A: f=rand ( 4, 1 ) ; g=u' f ; x=v( :, 1 : 3 ) ( S ( 1 : 3, 1 : 3 ) \ g ( 1 : 3 ) ) norm(a x f, 2 ) Wynik jest inny ni» tego oczekiwali±my. Przyjmijmy,»e trzecia warto± szczególna wynosi zero: S (3,3)=0; x=v( :, 1 : 2 ) ( S ( 1 : 2, 1 : 2 ) \ g ( 1 : 2 ) ) norm(a y f, 2 ) norm( xx x, 2 ) Otrzymali±my te same rozwi zania. W praktyce pojawia si pytanie, jak ustali epsilon takie,»e je±li σ k ɛ, to przyjmiemy,»e σ k jest równa zero. Jaki± próg musimy przyj, ale zawsze wrowadzi to pewien bª d do naszego przybli»onego rozwi zania LZNK. Przy pomocy rozkªadu SVD wyznacza si te» wspóªczynnik uwarunkowania macierzy. Porównajmy wyniki obliczania przybli»onego uwarunkowania macierzy otrzymane przez svd(a) i funkcj cond(a): H=hilb ( 1 5 ) ; S=svd (H) ; max(s)/min(s) cond(a) Otrzymali±my ten sam wynik. Wspóªczynnik uwarunkowania macierzy Hilberta dla N = 15 jest równy 2.7878e + 17. W przypadku, gdy A jest symetryczna i dodatnio okre±lona, to U = V w rozkªadzie SVD tej macierzy, tzn. rozkªad SVD jest równowa»ny znalezieniu bazy zªo»onej z ukªadu ortonormalnych wektorów wªasnych A. 99
H=hilb ( 4 ) ; [U, S, V] = svd (H) ; norm(u V, 1 ) 100