Numeeriset menetelmät Luento 4 To 15.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 1/38 p. 1/38
Lineaarinen yhtälöryhmä Lineaarinen yhtälöryhmä matriisimuodossa Ax = b missä a 11 a 12... a 1n a 21 a 22... a 2n A =... x = a n1 a n2... a nn x 1 x 2. x n b = b 1 b 2. b n ( A R n n, x R n, b R n ) Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 2/38 p. 2/38
Gaussin eliminointimenetelmä 1. Muunnetaan yhtälöryhmä yläkolmiomuotoon äärellisellä määrällä alkeisoperaatioita: kerrotaan yhtälö nollasta eroavalla vakiolla lisätään yhtälöön toinen yhtälö nollasta eroavalla vakiolla kerrottuna vaihdetaan kaksi yhtälöä keskenään 2. Ratkaistaan yläkolmiomuotoinen yhtälöryhmä takenevilla sijoituksilla Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 3/38 p. 3/38
LU-hajotelma Edellä esitetty klassinen Gaussin eliminointimenetelmä: Oikean puolen vektori b mukana eliminointivaiheessa Yleisempi versio Gaussin eliminointimenetelmästä: Tehdään eliminointivaihe b:stä riippumatta Muodostetaan LU-hajotelma Sama hajotelma käy mille tahansa b:lle Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 4/38 p. 4/38
LU-hajotelma Olkoon A (i) kerroinmatriisi (i 1):n eliminointiaskeleen jälkeen A (1) = A (alkuperäinen matriisi) A (2). A (n) = U (yläkolmiomatriisi) Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 5/38 p. 5/38
LU-hajotelma Olkoon M i siten, että A (i+1) = M i A (i) A (i) = M 1 i A (i+1) A = A (1) = M 1 1 A (2) = M 1 1 M 1 2 A (3) = M 1 1 M 1 2 M 1 3 A (4). = M 1 1 M 1 2 M 1 n 1 }{{} =L A (n) }{{} =U Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 6/38 p. 6/38
LU-hajotelma Saatiin hajotelma A = LU missä U on yläkolmiomatriisi (konstruktionsa perusteella) L on alakolmiomatriisi, jonka diagonaalialkiot ovat ykkösiä (voidaan laskea) Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 7/38 p. 7/38
LU-hajotelman matriisit M i = 1... 0 0 0 0... 0...... 0... 1 0 0 0... 0 0... 0 1 0 0... 0 0... 0 m i+1,i 1 0... 0 0... 0 m i+2,i 0 1... 0...... 0... 0 m n,i 0 0... 1 m ki = a (i) ki /a(i) ii Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 8/38 p. 8/38
LU-hajotelman matriisit M 1 i = 1... 0 0 0 0... 0...... 0... 1 0 0 0... 0 0... 0 1 0 0... 0 0... 0 ˆm i+1,i 1 0... 0 0... 0 ˆm i+2,i 0 1... 0...... 0... 0 ˆm n,i 0 0... 1 ˆm ki = m ki = a (i) ki /a(i) ii Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 9/38 p. 9/38
LU-hajotelman matriisit L = 1... 0 0 0... 0..... ˆm i 1,1... 1 0 0... 0 ˆm i,1... ˆm i,i 1 1 0... 0 ˆm i+1,1... ˆm i+1,i 1 ˆm i+1,i 1... 0..... ˆm n,1... ˆm n,i 1 ˆm n,i ˆm n,i+1... 1 Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 10/38 p. 10/38
LU-hajotelma Vertaamalla vastinalkioita LU-hajotelmassa voidaan johtaa suoraan kaavat matriisien L ja U nollasta eroaville alkioille A = LU a ij = n l ik u kj Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 11/38 p. 11/38
Matriisi L j < i a ij = n l ik u kj = j 1 l ik u kj + l ij u jj + n k=j+1 l ik u kj }{{} =0 l ij = ( a ij j 1 l ik u kj )/u jj, j < i Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 12/38 p. 12/38
Matriisi U j i a ij = n l ik u kj = i 1 l ik u kj + l ii }{{} =1 u ij + n k=i+1 l ik }{{} =0 u kj u ij = a ij i 1 l ik u kj, j i Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 13/38 p. 13/38
Hajotelmamatriisit Matriisien alkiot voidaan laskea järjestyksessä: U:n 1. rivi, L:n 1. sarake U:n 2. rivi, L:n 2. sarake jne. Matriisit voidaan tallentaa A:n päälle: U:n alkiot A:n yläkolmio ja diagonaali L:n alkiot A:n alakolmio (L:n diagonaalia ei tarvitse tallentaa) Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 14/38 p. 14/38
Yhtälöryhmän ratkaiseminen Ax = b LUx = b L (Ux) }{{} =y = b { Ly = b Ux = y Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 15/38 p. 15/38
Etenevät sijoitukset Ly = b b i = n l ik y k = i 1 l ik y k + l ii }{{} =1 y i + n k=i+1 l ik }{{} =0 y k y i = b i i 1 l ik y k, i = 1, 2,..., n Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 16/38 p. 16/38
Takenevat sijoitukset Ux = y x i = y i = = ( y i n i 1 n k=i+1 u ik x k u ik }{{} =0 x k + u ii x i + n k=i+1 u ik x k u ik x k )/u ii, i = n, n 1,..., 1 Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 17/38 p. 17/38
Yhtälöryhmän ratkaiseminen Apuvektoria y ei tarvita: y:n alkiot x:n päälle Myöskään vektoria x ei välttämättä tarvita: x:n alkiot b:n päälle Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 18/38 p. 18/38
Rivien permutointi Jos u jj = 0 jollain j LU-hajotelmaa ei voi muodostaa edellä esitetyllä tavalla Ratkaisu: Permutoidaan matriisin rivejä Jos A 1 on olemassa rivejä voidaan permutoida siten, että u jj 0 kaikilla j Lisäksi: Numeerinen stabiilisuus vältetään itseisarvoltaan pienellä luvulla jakamista Permutoidaan rivejä siten, että u jj on itseisarvoltaan mahdollisimman suuri Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 19/38 p. 19/38
Rivien permutointi Osittaistuenta (partial pivoting): permutoidaan vain rivejä ei aina takaa parasta mahdollista tarkkuutta Osittaistuentaan voidaan liittää skaalaus: yhtälöitä kerrotaan vakioilla siten, että rivien itseisarvoltaan suurimmat alkiot ovat samaa suuruusluokkaa Täydellinen tuenta (complete pivoting): permutoidaan sekä rivejä että sarakkeita (ei käsitellä) Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 20/38 p. 20/38
LU-hajotelma osittaistuennalla Eliminointiaskeleessa j : Etsitään rivi r siten, että jos vaihdetaan rivit r ja j keskenään, niin alkioksi u jj tulisi itseisarvoltaan mahdollisimman suuri luku Vaihdetaan matriisin rivit r ja j keskenään Suoritetaan muut laskutoimitukset Huom: Järjestämällä laskutoimitukset sopivasti, rivi r saadaan selville etsimällä sarakkeesta j itseisarvoltaan suurin matriisialkio Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 21/38 p. 21/38
Permutaatiomatriisit Matriisi P on permutaatiomatriisi, jos jokaisella rivillä ja sarakkeella on täsmälleen yksi ykkönen ja muut alkiot ovat nollia Permutoidaan matriisin A rivejä P A Permutoidaan matriisin A sarakkeita AP Permutaatiomatriisien tulo on permutaatiomatriisi Huom: Permutaatiomatriiseja ei tallenneta kokonaan (vektori riittää) Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 22/38 p. 22/38
Esimerkki 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 11 12 13 14 21 22 23 24 31 32 33 34 = 41 42 43 44 31 32 33 34 21 22 23 24 41 42 43 44 11 12 13 14 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 0 0 1 0 0 1 0 0 0 0 0 1 = 1 0 0 0 14 12 11 13 24 22 21 23 34 32 31 33 44 42 41 43 Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 23/38 p. 23/38
LU-hajotelma osittaistuennalla Olkoon P i permutaatiomatriisi, jolla vaihdetaan rivit eliminointiaskeleessa i Olkoon P = P n 1 P n 2 P 1... LU-hajotelma permutoidulle matriisille PA = ˆLÛ Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 24/38 p. 24/38
Yhtälöryhmän ratkaiseminen Ax = b PAx = Pb ˆLÛx = Pb ˆL (Û }{{ x) = Pb } =y { ˆLy = Pb Ûx = y Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 25/38 p. 25/38
Yhtälöryhmän ratkaiseminen Permutaatiot voidaan tallentaa vektoriin p : Aluksi p i = i kaikilla i = 1,..., n Vaihdetaan rivit r ja j vaihdetaan p r ja p j Eliminointivaiheen päätyttyä: Alkuperäisen yhtälöryhmän rivin i alkiot ovat permutoidun yhtälöryhmän rivillä p i Ennen eteneviä sijoituksia: Oikean puolen vektori permutoidaan samalla tavalla kuin hajotelmamatriisit Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 26/38 p. 26/38
Algoritmi: Hajotelma LU_factor(A,p,δ,error) error [ := 0 ] p = 1 2 3... n do k = 1,...,n 1 Etsi r s.e. a rk = max { a sk } k s n swap(a k,1:n,a r,1:n ) swap(p k,p r ) if a kk δ then error := 1 do i = k + 1,...,n a ik := a ik /a kk do j = k + 1,...,n a ij := a ij a ik a kj end do end do end do (tarkistetaan myös return onko a nn δ) end if Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 27/38 p. 27/38
Algoritmi: Sijoitukset backsolve(a, p, b, x) do i = 1,...,n do i = n,n 1,...,1 x i := b pi do j = i + 1,...,n do j = 1,...,i 1 x i := x i a ij x j x i := x i a ij x j end do end do x i := x i /a ii end do end do (Tarvittaessa x voidaan tallentaa b:n päälle) Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 28/38 p. 28/38
Käänteismatriisit Yleensä käänteismatriisia ei kannata laskea numeerisesti Esimerkiksi: α = c T A 1 d { x = A 1 d α = c T x missä x ratkaistaan yhtälöryhmästä A x = d Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 29/38 p. 29/38
Lineaarinen yhtälöryhmä Ax = b LU-hajotelma tarkoitettu yleiselle matriisille A Jos tunnetaan matriisin erityisominaisuuksia, voidaan käyttää niille kehitettyjä, tehokkaampia menetelmiä Esimerkiksi: A positiivisesti definiitti voidaan käyttää Choleskyn menetelmää Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 30/38 p. 30/38
Positiividefiniittisyys Matriisi A R n n on positiivisesti definiitti, jos A T = A eli A on symmetrinen x T Ax > 0 kaikille x R n, x 0 Käytännössä positiividefiniittisyyttä on vaikea todeta määritelmän avulla Mutta: Usein se tiedetään yhtälöryhmään johtaneen alkuperäisen tehtävän perusteella Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 31/38 p. 31/38
Positiividefiniittisyys Olkoon A R n n positiivisesti definiitti Matriisin A suurin alkio on diagonaalilla, diagonaalialkiot ja ominaisarvot ovat > 0 On olemassa A 1 eli matriisi on kääntyvä On olemassa yksikäsitteinen alakolmiomatriisi L, jonka diagonaalialkiot ovat > 0 ja jolle pätee A = LL T Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 32/38 p. 32/38
Positiividefiniittisyys Aikaisemmin: Matriisi A kääntyvä yhtälöryhmällä Ax = b yksikäsitteinen ratkaisu Joten: Positiividefiniittisillä yhtälöryhmillä aina yksikäsitteinen ratkaisu Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 33/38 p. 33/38
Choleskyn menetelmä Positiivisesti definiiteillä matriiseilla kolmiohajotelma A = LL T Kuten LU-hajotelma, missä yläkolmiomatriisia U vastaa yläkolmiomatriisi L T Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 34/38 p. 34/38
Choleskyn hajotelma Vertaamalla vastinalkioita kolmiohajotelmassa voidaan johtaa kaavat matriisin L nollasta eroaville alkioille A = LL T a ij = n l ik (l T ) kj = n l ik l jk Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 35/38 p. 35/38
Matriisi L j < i a ij = n l ik l jk = j 1 l ik l jk + l ij l jj + n k=j+1 l ik l jk }{{} =0 l ij = ( a ij j 1 l ik l jk )/l jj, j < i Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 36/38 p. 36/38
Matriisin L diagonaali j = i a ii = = n i 1 l ii = l 2 ik l 2 ik + l 2 ii + ( a ii i 1 n k=i+1 l 2 ik ) 1/2 l 2 ik }{{} =0 Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 37/38 p. 37/38
Hajotelmamatriisi Matriisin alkiot voidaan laskea riveittäin: l 11 = (a 11 ) 1/2 l 21 = a 21 /l 11, l 22 = (a 22 l 2 21) 1/2 l 31 = a 31 /l 11, l 32 = (a 32 l 31 l 21 )/l 22, l 33 = (a 33 l 2 31 l 2 32) 1/2 jne. Matriisi voidaan tallentaa A:n päälle: L:n alkiot A:n alakolmio (mukaanlukien diagonaali) Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 38/38 p. 38/38