b 12 10 8 6 4 2 0 Möjliga lösningar? 0 1 2 3 4 5 6 t
b 12 10 8 6 4 2 0 Elementen i residualen r 5 r 4 r 3 0 1 2 3 4 5 6 t r 1 r 2
b 12 10 8 6 4 2 0 Minstakvadratlösningen 0 1 2 3 4 5 6 t
OH-bild från Matte 3 Minstakvatdratproblemet Om A är en m n-matris och b är en vektor i R n, så är minstakvadratlösningen till A x = b en vektor ˆx i R n så att för alla x i R n. b A ˆx b A x Sats 13 Mängden av minstakvadratlösningar till A x = b sammanfaller med den icke tomma mängden av lösningar till normalekvationen A T A x = A T b.
OH-bild från Matte 3 Ortogonala komplementet Om en vektor z är ortogonal mot varje vektor i ett underrum W, i R n, så säger vi att z är ortogonal mot W. Mängden av alla vektorer z som är ortogonala mot W kallas ortogonala komplementet till W, och betecknas W. 1. En vektor x tillhör W om och endast om x är ortogonal mot varje vektor i en mängd som spänner upp W. 2. W är ett underrum till R n. Sats 3 Om A är en m n-matris, så är (Row(A)) = Nul(A) och (Col(A)) = Nul(A T ).
Minstakvadratproblemet: Lösning via normalekvationen Vi finner x R n som uppfyller min x A x b 2 där A R m n, m n och b R m genom att lösa normalekvationen: A T A x = A T b. Om rank(a) = n (dvs kolonnerna i A är linjärt oberoende), så är A T A s.p.d. (symmetriskt positivt definit), och vi löser ekvationssystemet med Choleskyfaktorisering. Total beräkningskostnad: n 2 m + 1 3 n3 + O(mn) flyttalsoperationer.
Sats 3.1: QR-faktorisering Antag att A R m n, m n och rank(a) = n. Då finns en matris Q R m n med ortonormerade kolonner, och en övertriangulär matris R R n n så att A = Q R.
Algoritm: Gram-Schmidt Låt A = [ a 1 a 2... a n ] och Q = [ q 1 q 2... q n ] for i = 1 to n q i = a i for j = 1 to i 1 r ji = q T j a i q i = q i r ji q j end r ii = q i 2 q i = q i /r ii end /* for i =... */ VARNING! Gram-Schmidt är en INSTABIL algoritm när man räknar med flyttal.
OH-bild från Matte 3 Grahm-Schmidt-ortogonalisering Sats 11 Givet en bas {x1, x2,..., xp} för ett underrum W till R n, låt v1 = x1 v2 = x2 x 2 v1 v1 v1 v1 v3 = x3 x 3 v1 v1 v1. v1 x 3 v2 v2 v2 v2 vp = xp x p v1 v1 v1 v1 x p v2 v2 v2 v2 x p vp 1 vp 1 vp 1 vp 1 Då är {v1, v2,..., vp} en ortogonal bas för W.
Algoritm: Modifierad Gram-Schmidt Låt A = [ a 1 a 2... a n ] och Q = [ q 1 q 2... q n ] for i = 1 to n q i = a i for j = 1 to i 1 r ji = q T j q i q i = q i r ji q j end r ii = q i 2 q i = q i /r ii end /* for i =... */ VARNING! Modifierad Gram-Schmidt beräknar R stabilt, men EJ Q.
Minstakvadratproblemet: Lösning via QR-faktorisering Vi finner x R n som uppfyller min x A x b 2 där A R m n, m n och b R m genom att lösa det övertriangulära ekvationssystemet: R x = Q T b. där Q och R ges av QR-faktoriseringen av A. Om vi QR-faktoriserar med Housholderspeglingar (ej Gram-Schmidt) blir den totala beräkningskostnaden: 2n 2 m 2 3 n3 + O(mn) flyttalsoperationer. För (modifierad) Gram-Schmidt är motsvarande beräkningskostnad 2n 2 m + O(mn).
Singulärvädesuppdelning = SVD Sats 3.2: SVD Varje matris A R m n, m n kan uttrycka som A = U Σ V T, där U R m n har ortonormerade kolonner, dvs U T U = I, V R n n är en ortogonal matris och Σ R n n är en diagonalmatris vars diagonalelement uppfyller σ 1 σ 2 σ n 0. Dessutom är σ 1 = A 2. Kolonnerna i U kallas vänstra singulärvektorer, kolonnerna i V kallas högra singulärvektorer och diagoalelementen i Σ, dvs σ 1,..., σ n, kallas singulärvärden.
Utvalda egenskaper hos SVD Några av egenskaperna i Sats 3.3 i boken tas upp här. Vi antar här att A R m n med m n och att A = U Σ V T. 1. Om matrisen A är symmetrisk och positivt definit är SVD identisk med, den ortogonala diagonaliseringen A = U Σ U T. 2. Vi ser att A T A = V Σ 2 V T. Därför är egenvärdena till s.p.d. matrisen A T A lika med singulärvärdena i kvadrat, och egenvektorerna är lika med högra singulärvektorerna i V. 5. Om A har full rang, löses min x A x b 2 av x = V Σ 1 U T b. Beräkningskostnad 4n 2 m 4/3 n 3 + O(mn). 6. A 2 = σ 1. Om A är kvadratisk och ickesingulär är A 1 2 = 1/σ n. Därför är κ 2 (A) = A 2 A 1 2 = σ 1 /σ n
7. Om σ 1 σ 2 σ r > σ r+1 = = σ n = 0, dvs bara de r första singulärvärdena är större än noll, så är rank(a) = r. En ortogonal bas för nollrummet till A ges av de n r sista kolonnerna i V. En ortogonal bas för kolonnrummet ges av de r första kolonnerna i U. 8. Om man bildar en matris av endast de k första kolonnerna i U och V och endast de k första singulärvärdena, dvs A k = k i=1 σ i u i v T i, då är A k den rang k matris som ligger närmast A, räknat i 2-norm.
SVD som bildkomprimering k=5, kompression=0.0511 k=10, kompression=0.102 k=20, kompression=0.204 k=40, kompression=0.409 k=80, kompression=0.818
Konditionstal för icke kvadratiska matriser För icke kvadratiska matriser fungerar inte den gängse definitionen av κ, vi kan inte invertera matrisen. För icke kvadratiska matriser definierar vi κ 2 (A) = σ 1 σ n dvs det största singulärvärdet genom det minsta.
Störningsanalys för minstakvadratproblemet Vi använder den alternativa formuleringen från sidan 118 i kursboken. Låt x vara lösningen till min x A x b 2 och r = A x b. Låt x vara lösningen till min x (A + δa) x (b + δb) 2 och r = (A + δa) x (b + δb). ( δa 2 Låt ɛ = max, δb ) 2 och antag att A 2 b 2 ɛ κ 2 (A) < 1. Då är x x 2 x 2 ɛ κ 2(A) 1 ɛ κ 2 (A) och r r 2 r 2 ( r 2 + (κ 2 (A) + 1) 2 A 2 x 2 (1 + 2 ɛ κ 2 (A)) ) TOLKNING: Om r är liten bestäms störningen i lösningen av κ 2 (A). Om r är stor bestäms störningen av (κ 2 (A)) 2. Avrundningsfelet i QR-faktorisering och SVD uppfyller detta, dvs de är stabila. Lösning med normalekvationen ger alltid ett fel i storleksordningen (κ 2 (A)) 2 dvs ej stabil.
Definition Pseudoinvers Pseudoinversen A + R n m av matrisen A R m n, m n som har full rang, ges av A + = V Σ 1 U T där A = U Σ V T är SVD av A. Alternativa formuleringar: A + = (A T A) 1 A T = R 1 Q T Minstakvadratlösningen min x A x b 2 ges alltså av x = A + b
Householderspegling En Householderspeglingsmatris P = I 2 v vt v T v är symmetrisk och ortogonal. Genom att välja v = a + ± a 2 0. 0 = a ± a 2ê 1 speglar P vektorn a till en vektor med endast första elementet skillt från 0 P a = a 2 0. 0 = a 2ê 1 För att undvika kanselation vid bildandet av v använder vi v = a + sgn(a 1 ) a 2 ê 1 där sgn(a 1 ) är tecknet hos första elementet i a.
Algoritm: QR-faktorisering 1 Här används Matlabliknande notation. Vi antar att A R m n, m n Q = I for i = 1 to n a = A(i : m, i) α = sgn(a(1)) a 2 v = a + α ê 1 Q(:, i : m) = Q(:, i : m) Q(:, i : m) v(v T 2 v T v ) A(i, i) = α A(i : m, i + 1 : n) = A(i : m, i + 1 : n) ( 2 v T v v)vt A(i : m, i + 1 : n) end /* for i =... */ R = triu(a) Denna QR-faktorisering ger en ortogonal matris Q R m m och en matris R R m n vars toppkvardat är övertriangulär, och resten av R är noll. Detta ger A = Q R = Q [ R1 0 ] = [ Q 1 Q 2 ] [ R1 0 ] = Q 1 R 1. Det avslutande uttrycket ovan Q 1 R 1 är identiskt med vår ursprunliga definition av QRfaktorisering.
Matlabversion av QR 1 function [Q,R] = F8qr1(A) [m,n] = size(a); Q = eye(m); for i = 1:min(n,m-1) a = A(i:m,i); alpha = sign(a(1))*norm(a,2); v = a; v(1) = v(1) + alpha; Cv = (2/(v *v))*v; Q(:,i:m) = Q(:,i:m) - (Q(:,i:m)*v)*Cv ; A(i,i) = -alpha; A(i:m,i+1:n) = A(i:m,i+1:n) - Cv*(v *A(i:m,i+1:n)); end R = triu(a); Test A = randn(3,2) A = -0.4326 0.2877-1.6656-1.1465 0.1253 1.1909 [Q,R] = F8qr1(A) Q = -0.2507 0.4556-0.8542-0.9653-0.0514 0.2559 0.0726 0.8887 0.4527 R = 1.7254 1.1211 0 1.2484 0 0 Q*R ans = -0.4326 0.2877-1.6656-1.1465 0.1253 1.1909
Algoritm: QR-faktorisering 2 För att minska antalet flyttalsoperationer beräknar vi inte Q explicit, utan sparar istället Householdervektorerna v under diagonalen på matrisen. for i = 1 to n a = A(i : m, i) α = sgn(a(1)) a 2 v = a + α ê 1 /* Skala om v så att v(1) = 1 */ v = v/v(1) A(i, i) = α A(i : m, i + 1 : n) = A(i : m, i + 1 : n) ( 2 v T v v)vt A(i : m, i + 1 : n) /* Spara v, utom ettan, under diagonalen */ A(i + 1 : m, i) = v(2 : m i + 1) end /* for i =... */ När vi sedan multiplicerar högerledet med Q T gör vi det genom en serie av multiplikationer med Housholdermatriser som vi bildar från v:na. Att lösa minstakvadratproblem enligt denna metod kräver flyttalsoperationer. 2 n 2 m 2 3 n3 + O(mn)
Matlabversion av QR 2 function A = F8qr2(A) [m,n] = size(a); for i = 1:min(n,m-1) a = A(i:m,i); alpha = sign(a(1))*norm(a,2); v = a; v(1) = v(1) + alpha; % Skala om v så att första elementet är 1 v = (1/v(1))*v; Cv = (2/(v *v))*v; A(i,i) = -alpha; A(i:m,i+1:n) = A(i:m,i+1:n) - Cv*(v *A(i:m,i+1:n)); % Spara v, utom ettan, under diagonalen A(i+1:m,i) = v(2:m-i+1); end Lösa minstakvadratproblem function x = F8solveLS(QR,b) [m,n] = size(qr); % Multiplicera högerled med Q rhs = b; for i = 1:n v = [1;QR(i+1:m,i)]; rhs(i:m) = rhs(i:m) - (2/(v *v)*(v *rhs(i:m)))*v; end % Bakåtsubstitution R = triu(qr(1:n,:)); x = R\rhs(1:n);
Körning av F8qr2 och F8solveLS A = randn(5,3) A = -0.2624-0.6451 0.2895-1.2132 0.8057 1.4789-1.3194 0.2316 1.1380 0.9312-0.9898-0.6841 0.0112 1.3396-1.2919 b = randn(5,1) b = -0.0729-0.3306-0.8436 0.4978 1.4885 QR = F8qr2(A) QR = 2.0369-0.9919-1.9752 0.5276-1.7057 1.0227 0.5738 0.0140 0.8694-0.4050-0.3648 0.0356-0.0049 0.5760 0.8381 x = F8solveLS(QR,b) x = -0.0728 0.2809-0.7166 x = A\b x = -0.0728 0.2809-0.7166