3. line aris egyenletrendszerek megold asadobos/teaching/fiznum2017/slides/03.pdf · 2017-03-03 ·...
TRANSCRIPT
3. Linearis egyenletrendszerek megoldasa
2017. februar 16.
Linearis egyenletrendszer
M darab egyenlet N valtozoval, az aij es bj ertekek ismertek:
a11x1 + a12x2 + ...+ a1NxN = b1a21x1 + a22x2 + ...+ a2NxN = b2
...aM1x1 + aM2x2 + ...+ aMNxN = bM
Felırhatjuk indexes1 es matrix alakban is:
aij · xj = biA · x = b
Cel: az xi ismeretlenek meghatarozasa.
1azonos indexekre automatikus Σ
Linearis egyenletrendszer meghatarozottsaga
M = N eseten
I Jo esely van konkret megoldas megtalalasara, kiveve ha
I van olyan sor, ami mas sorok linearkombinaciojakent eloall−→ ekkor a matrix sorok szerint degeneralt, vagy
I a matrix ket oszlopa megegyezik2,−→ ekkor a matrix oszlopok szerint degeneralt
I Negyzetes matrix eseteben:sorok szerint degeneralt ⇔ oszlopok szerint degeneralt⇔ det(A) = 0−→ ekkor a matrix szingularis
2pontosabban: ha az egyenletrendszer bizonyos valtozokat csak teljesenazonos linearkombinaciokban tartalmaz
Numerikusan szingularis matrixok
A szamıtogep a valos szamokat veges precizitassal abrazolja,emiatt kerekıtesi hibak adodnak.
Ha ket sor nem teljesen azonos, de nagyon hasonloak (ε ' 10−10)
I Ekkor a kerekıtesi hibak miatt elofordulhat 0-val osztas−→ a matrix numerikusan szingularis
I Ilyen esetekben a 0-val valo osztas miatt hibat kapunk 3.
N � 1⇒ az egyenletrendszer megoldasa sok muveletet igenyel
I A kerekıtesi hibak osszeadodnak
I A program lefut, de a vegeredmeny hibas lesz
I Behelyettesıtessel kell ellenorizni
3Ujabb C implementaciok hiba helyett Infinity vagy NaN erteket hasznalnak.
Numerikusan szingularis matrixok kezelese
Az elobbi ket problema kikuszobolesere leteznek algoritmusok
Specialis algoritmus alkalmazasa nelkul
I Nehany 10 valtozos egyenlet meg megoldhato
I Nehany 100 egyenlethez duplapontossagu aritmetika kell:double tıpusu valtozok hasznalata
I 1000 egyenlet folott mar biztosan jelentkeznek a problemak
Linearis egyenletrendszerek megoldasanak sebessege
A feladat gepigenye:
I a memoriaigeny N2-tel skalazik
I a szamıtasigeny N3-bel skalazik
Egy megoldasi lehetoseg: a feladat parhuzamosıthato
Specialis alaku matrixok eseteben van gyorsabb megoldas.
I tridiagonalis (ld. spline interpolacio)
I Vandermonde-tıpusu (ld. interpolalt polinom egyutthatoi)
Gyakori megoldando problemak
I Az A · x = b linearis egyenletrendszer megoldasa
I Az A · xk = bk egyenletrendszerek megoldasaI Egyszerre erdemes a k darab egyenletrendszert megoldaniI Az A matrix invertalasa, es bk beszorozgatasa a kerekıtesi
hibak miatt nem celszeru
I Az A matrix inverzenek meghatarozasaI ez azonos az elozovel, ha bk a trivialis bazisvektorok
I Az A matrix determinansanak kiszamıtasa, stb.
Alulhatarozott egyenletrendszerek
Ha M < N, vagy M = N, de az egyenletrendszer degeneralt,azaz kevesebb egyenlet van, mint ahany ismeretlen; azegyenletrendszer alulhatarozott
I Egyaltalan nincsen megoldas, vagy
I A megoldas egy egesz alter:xp egy lehetseges megoldas, es ehhez jon meg N −M vektortetszoleges linearkombinacioja
A megoldast ilyenkor un. szingularisertek-dekompozıcioval keressuk(singular value decomposition = SVD)
Tulhatarozott egyenletrendszerek
Ha M > N, akkor az egyenletrendszer tulhatarozott
I Altalaban nincsen megoldas, de
I Van ertelme egy lehetseges legjobb megoldasrol beszelni.
Peldaul: Mi az a pont, ami a leheto legjobban kielegıti azegyenletrendszert olyan ertelemben, hogy az egyenletek jobb esbaloldalai kozotti elteresek negyzetosszege minimalis?
arg minxj
∑i
(bi − aijxj)2
Tulhatarozott egyenletrendszer “leheto legjobb” megoldasa
Hazi feladat
Lassuk be, hogy a szingularis egyenletek legkisebb negyzetekalapjan definialt leheto legjobb megoldasa eloall a kovetkezoegyenletrendszer megoldasakent:
ATAx = ATb,
ahol AT az A matrix transzponaltja!
I A fenti egyenletrendszert az eredeti egyenletrendszernormalegyenleteinek nevezzuk.
I Altalaban ezeket is SVD-vel celszeru megoldani direktmegoldas helyett.
Programcsomagok linearis egyenletek megoldasara
Nagyon altalanos problema
I Sok ember dolgozik rajta
I Optimalizalt programcsomagok leteznek
Peldaul: LINPACK, LAPACK stb.
I Parhuzamosıtott valtozat: ScaLAPACK
I Intel processzorokra optimalizalt: MKL
Tamogatjak specialis matrixok optimalis tarolasat is, pl.:
I Szimmetrikus matrix, haromszog-matrix
I Savmatrixok
I Ritka matrixok (majdnem minden elem 0)
Gauss–Jordan-eliminacio
Feladat: megoldani az alabbi egyenletrendszert:
A · x = b,
ahol A negyzetes matrix.
A Gauss–Jordan-eliminacio tulajdonkeppen az altalanos iskolabantanult modszer linearis egyenletrendszerek megoldasara.
I Egyszerre allıtja elo az egyenletrendszer megoldasat, es
I adja meg az A matrix inverzet.
I Numerikusan legalabb annyira stabil, mint mas eljaras,
I foleg teljes pivotolas4 eseten
4pivot = csuklopont, de a pivoting es pivot element szavaknak nincsenbevett fordıtasa
A Gauss–Jordan-eliminacio tulajdonsagai
Memoriaigeny:
I tarolni kell a matrixot, es a megoldasvektort: N2 + N
I a matrix inverzet elvileg lehet tarolni a bemeneti matrix helyen
Szamıtasi igeny:
I szukseges muveletek szama O(N3)
I de ha olyan algoritmusokat nezunk, amik hasonloan megoldjakaz egyenletrendszer, es ugyanakkor elo is allıtjak a matrixinverzet, akkor ez haromszor lassabb, mint a legjobb modszer
A megoldasi modszer elemi lepesei
A kovetkezo muveletek nem valtoztatjak meg egy linearisegyenletrendszer megoldasat:
I ket sor felcsereleseez nyilvanvalo, hiszen az egyenletek sorrendje teljesentetszoleges, felteve persze, hogy a jobboldal megfelelo sorait ismegcsereljuk
I mas sorok linearkombinaciojanak hozzaadasa barmely sorhozebbe belefer az is, hogy egy sort szammal szorzunk, ha az aszam nem nulla; termeszetesen mindket oldalon el kell vegezni
I a valtozok felcsereleseez lenyegileg nem valtoztat az egyenleteken, ha emlekszunk,hogy a vegen a valtozokat megfelelo permutacio szerint visszakell cserelgetni; ez az A matrix oszlopainak felcserelesetjelenti.
Kiindulas: kibovıtett matrixA megoldando egyenletrendszer: 2 6 2
1 1 −13 9 5
· x =
181
35
Felırjuk a matrixot es a jobb oldalt a kovetkezo alakban: 2 6 2 18
1 1 −1 13 9 5 35
Ha az inverz matrixot keressuk, akkor pedig: 2 6 2 1 0 0
1 1 −1 0 1 03 9 5 0 0 1
(A jobb oldalon tulajdonkeppen akarhany oszlop allhat,amennyiben egyszerre tobb egyenletet akarunk megoldani.)
Az eliminacio menete
Cel: a korabban ismertetett elemi muveletek segıtsegevel abaloldalt egysegmatrix alakra hozzuk ugy, hogy kozben amuveleteket a jobb oldalon is elvegezzuk. Ekkor jobboldalt eloallaz egyenletrendszer megoldasa (illetve a matrix inverze).
Elindulunk a foatlo elso elemetol.
1. Ha az elem nem 1, akkor az egesz sort elosztjuk a foatlobelielemmel, hogy a foatloban 1 legyen 2 6 2 18
1 1 −1 13 9 5 35
−→ 1 3 1 9
1 1 −1 13 9 5 35
2. Minden alatta levo sorbol kivonjuk az elso sorvalahanyszorosat ugy, hogy a foatlo alatt vegig 0 legyen 1 3 1 9
1 1 −1 13 9 5 35
−→ 1 3 1 9
0 −2 −2 −80 0 2 8
3. Ha foatlobeli elem alatt mindent kinullaztunk, akkor folytatjuk
a foatlo kovetkezo elemevel: 1 3 1 90 -2 −2 −80 0 2 8
−→ 1 3 1 9
0 1 1 40 0 2 8
4. Majd kivonjuk a sor valahanyszorosat az osszes tobbibol ugy,
hogy a foatlot kiveve mindenutt 0 legyen: 1 3 1 90 1 1 40 0 2 8
−→ 1 0 −2 −3
0 1 1 40 0 2 8
5. Az eljarast tovabb folytatjuk a foatlo elemeire 1 0 −2 −30 1 1 40 0 2 8
−→ 1 0 −2 −3
0 1 1 40 0 1 4
−→
1 0 0 50 1 0 00 0 1 4
6. Az eljaras akkor er veget, ha a baloldali reszmatrix az
egysegmatrix alakjat veszi fel. Ekkor jobboldalon vagy amegoldast kapjuk, vagy pedig a matrix inverzet, attol fuggoenmibol indultunk ki. 1 0 0 5
0 1 0 00 0 1 4
1. problema: Zerus elem a foatloban
Kepzeljuk el a kovetkezo szituaciot:1 0 50 1 60 0 0 · · · · · ·
...
Ilyenkor az adott sorral nem tudjuk az alatta es folotte levoelemeket eliminalni.
Megoldas: sorcsere! Keressunk a foatlo aktualis eleme alattioszlopban olyan elemet, ami nem nulla (ez lesz az un. pivot-elem),csereljuk meg a ket sort (a jobboldalt is!), majd folytassuk azeliminaciot, mintha mi se tortent volna.
Az eljaras neve: reszleges pivotolas.
2. problema: Nagyon pici elem a foatloban
Ha ezzel probalnank eliminalni, akkor nagy szorzotenyezok miattnagyon nagy szamok jelennenek meg a matrixban, ami numerikusinstabilitasi problemakhoz vezet.
Megoldas: valasszuk az adott oszlop foatlo alatti abszolut ertekbenlegnagyobb elemet, a megfelelo sorokat csereljuk meg, esfolytassuk ıgy az eliminaciot.
3. problema: a matrix sorai tetszolegesen normalhatok
A sorokat tetszoleges szammal szorozva vegul is barmelyik aktualisoszlopbeli, foatlo alatti elem lehet maximalis.
Megoldas: Ugy keressuk a legnagyobb elemet, hogy a sorokat azeredeti matrix sorainak legnagyobb elemevel normaljuk.
I Ez a gyakorlatban azt jelenti, hogy a soronkenti legnagyobbelemet tarolni kell.
I Vagy a matrix sorait a legelejen leosztjuk minden sor abszolutertekben maximalis elemevel.
4. problema: Az oszlop foatlo alatti resze csupa 0
1 0 50 1 60 0 0 · · · · · ·
00...0
Ez konnyu: a matrix szingularis, megallunk.
Tovabbi javıtasi lehetoseg: oszlopcsere
Ilyenkor a foatlobeli aktualis elem alatti, es tole jobbra levoalmatrixban keressuk az abszolut ertekben legnagyobb elemet, ezlesz a pivot-elem.
A megfelelo sorokat es oszlopokat megcsereljuk (feljegyezve, hogymelyik ket valtozot kell az eljaras vegen visszacserelni!), majd apivot-elemmel eliminalunk.
Ezt nevezzuk teljes pivotolasnak.
Nem bizonyıtott allıtas, csak sejtes, hogy az algoritmus stabil, hapivotnak mindig az almatrix abszolut ertekben legnagyobb elemetvalasztjuk.
Gauss-eliminacio visszahelyettesıtessel
Ez nagyjabol azonos az elobbiekkel, de
I Eliminalaskor csak a foatlo alatti elemeket nullazuk le
I A foatloban minden elemet 1-esre hozunk
I A felso haromszoget csak ezutan, a jobb also sarokbolkiindulva nullazzuk ki
I Ez nemileg kevesebb muveletet igenyel, ezert numerikusanstabilabb 1 3 1 9
0 1 1 40 0 2 8
−→ 1 3 1 9
0 1 1 40 0 1 4
−→ 1 3 0 5
0 1 0 00 0 1 4
−→ 1 0 0 5
0 1 0 00 0 1 4
Az algoritmus epıtokovei
Az implementalast sosem a fo algoritmussal kezdjuk, hanemazonosıtjuk a fo reszalgortimusokat, amiket kulon-kulon konnyumegırni.
I Eldontjuk, hogy milyen formaban taroljuk a matrixokat(sorok vagy oszlopok szerint)
I Azonosıtjuk az alapveto muveleteket:I Legnagyobb abszolut erteku elem megtalalasa sorbanI Sor szorzasa szammalI Legnagyobb abszolut erteku elem megtalalasa oszlopban,
foatlo alattI Legnagyobb abszolut erteku elem megtalalasa almatrixbanI Ket sor cserejeI Ket oszlop csereje (oszlopcsere konyvelese)I Ket sor kulonbsegenek kepzese
Az algoritmus implementalasa
I Az epıtoelemeket kulon-kulon megvalosıtjuk es
I Kulon-kulon teszteljuk!
Soha ne ırjunk ugy programot, hogy elobb “nagyjabol” kesz legyen,aztan majd javıtgatjuk. Soha sem fog mukodni. Mindig alulrolfelfele, az egyes fuggvenyeket alaposan kiprobalva kell haladni!
I Ezek utan johet a fo algoritmus leprogramozasa
I Tobbfajta matrixon teszteljuk
Direkt kell olyan matrixokat gyartani, ami probara teszi azalgoritmust. Peldaul: van a foatloban 0 elem, szingularis matrixstb. A numerikus stabilitas tesztelese ugyanakkor nehez feladat.
Also-felso haromszog dekompozıcio
Invertalashoz a matrixot gyakran erdemes faktorizalni, azaz kettovagy tobb specialis tulajdonsagu matrix szorzatakent eloallıtani.
A legegyszerubb faktorizacio: LU-dekompozıcio.
Az A matrixot A = L ·U alakban keressuk, ahol
I L csak foatlobeli, es foatlo alatti elemeket tartalmaz
I U csak foatlobeli, es foatlo folotti elemeket tartalmaz
a11 a12 a13a21 a22 a23a31 a32 a33
=
l11 0 0l21 l22 0l31 l32 l33
u11 u12 u130 u22 u230 0 u33
Az LU-dekompozıcio alapotlete
Vegyuk eszre, hogy ha A = L ·U, akkor az A · x = b egyenletatırhato
A · x = (L ·U) · x = L · (U · x) = b
alakra, azaz a problema ket lepesre bonthato:
L · y = b
U · x = y
A modszer elonye, hogy mivel L es U haromszog-matrixok, akorabbi visszahelyettesıteses modszerrel kozvetlenulmeghatarozhatok:
I L eseteben a bal felso sarokbol kell indulni
I U eseteben a jobb alsobol
L es U meghatarozasa
L es U osszesen N2 + N ismeretlen elemet tartalmaz az
(L ·U) · x = b
egyenletrendszer viszont csak N2 egyenletet ad:
i < j : li1u1j + li2u2j + . . .+ liiuij = aiji = j : li1u1j + li2u2j + . . .+ liiujj = aiji > j : li1u1j + li2u2j + . . .+ lijujj = aij
Kossuk, ki hogy az L matrix foatlojaban csupa 1-es szerepel, azazlii = 1. Ez az altalanossag megszorıtasa nelkul megteheto. Eztovabbi N egyenletet ad.
Az N2 + N egyenlet megoldasa
Az egyenletrendszer a Crout-algoritmussal megoldhato:
for j = 1, 2, ..., N dofor i = 1, 2, ..., j do
az elso ket egyenlet felhasznalasaval:uij = aij −
∑i−1k=1 likukj
endfor i = j + 1, j + 2, ..., N do
a harmadik egyenlet felhasznalasaval:lij = (1/ujj)(aij −
∑j−1k=1 likukj
end
end
Az algoritmus masodik belso ciklusaban az ujj elem a nevezobenszerepel. Elkerulendo, hogy ez ne legyen 0, a Gauss-eliminaciohozhasonloan itt is szukseg lehet atrendezesre.
Az LU-dekompozıcio elonyei
Az A matrix determinansa eloall a kovetkezo alakban:
detA =N∏j=1
ujj
A dekompozıciot elegendo egyszer elvegezni, es utana mar avisszahelyettesıteses modszerrel gyorsan megkaphato azegyenletrendszer megoldasa barmilyen jobb oldal esetere. Ugyanıgya matrix inverze is konnyen szamolhato.
Iteratıv modszerek
Iteratıv lepes
I Altalaban egy egyszeru muveletet ismetelgetunk
I A muvelet egy fuggveny, aminek bemenete xk , kimenete xk+1
I A kovetkezo lepes bemenete az elozo lepes kimenete
Tekintsuk a lepesek altal eloallıtott xk ertekek sorozatat
I Tart-e az xk sorozat valahova?
I Ha igen, akkor az iteracio konvergens
I A konvergenciat vagy elmeletileg kell belatni, vagy
I Lehet programmal is vizsgalni: |xk+1 − xk |?→ 0
I Ha tudjuk, hogy konvergens, akkor megallhatunk, amikor|xk+1 − xk | < ε, ahol ε elo van ırva
Honnan induljon az iteracio?
Termeszetesen valami x0 ertekbol kell elindulni
I Ennek jo megvalasztasa gyakran kerdes
I Ha barhonnan indulva konvergens az iteracio, akkor akonvergencia globalis
I Ha csak bizonyos helyekrol konvergens, akkor a konvergencialokalis
I Elofordul, hogy mashonnan indulva mashova konvergal aziteracio
A linearis iteracios modszerek, ha konvergensek, akkor globalisankonvergensek.
Iteratıv modszerek egyenletrendszerek megoldasara
A megoldast iteratıvan erdemes eloallıtani, ha
I az egyenletrendszer nagyon nagy
I kozel szingularis, es numerikusan nehezen kezelheto
Tegyuk fel, hogy ismerunk egy x + δx kozelıto megoldast.(Csak az osszeg ismert, de mi x erteket keressuk.)
Behelyettesıtve az egyenletbe a jobb oldal el fog terni az eredetitol:
A · (x + δx) = b + δb
Ebbol kivonva az eredeti A · x = b egyenletet:
A · δx = δb
Iteracios lepes
Viszont az eredetit atrendezve:
δb = A · (x + δx)− b,
aminek a jobb oldalat ismerjuk, tehat megoldhatjuk δx-re a
A · δx = A · (x + δx)− b
egyenletet.
Ha A LU-faktorizaciojat ismerjuk, akkor csak behelyettesıtgetnikell. Varhatoan pontosabb megoldast kapunk, es az eljarastismetelve egyre konvergalunk az egyenlet megoldasahoz.
Iteracios modszerek altalanosabban
Irjuk at az A · x = b egyenletet:
x = (I− A) · x + b,
ahol I az egysegmatrix.
Itt x kivetelevel minden ismert, es ha ismerunk egy kelloen jo xkmegoldast, akkor kepezhetjuk a kovetkezo iteraciot:
xk+1 = (I− A) · xk + b
I Belathato, hogy ha I− A matrix-normaja kisebb egynel, akkoraz iteracio konvergens.
I Itt A-t nem kell invertalni (vagy faktorizalni)