Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
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 pivotolas1 eseten
1pivot = 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 jobboldal eloall azegyenletrendszer 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 aktualis 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, raadasul 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 oszlop 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 (ha mar y ismert):
I U eseteben ugyanugy a jobb also sarokbol kell indulni
I L eseteben a bal felsobol
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ıcio 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 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
Belathato, hogy ha I− A matrix-normaja kisebb egynel, akkor aziteracio konvergens.