Gauss-elimináció

Innen: testwiki
Ugrás a navigációhoz Ugrás a kereséshez

A Gauss-elimináció a lineáris algebra egy lineáris egyenletrendszerek megoldására használatos algoritmusa. Az eljárás Carl Friedrich Gauss nevét viseli, aki maga is leírt a lineáris egyenletrendszerek megoldására szolgáló általános eljárást, azonban ez az eljárás már Gauss előtt is ismert volt.

Az eljárás célja és előnyei

Legyen adott a következő lineáris egyenletrendszer:

a11x1+a12x2++a1nxn=b1
a21x1+a22x2++a2nxn=b2
am1x1+am2x2++amnxn=bm

Az eljárás során az egyenletrendszer megoldásait keressük, ahol megoldás alatt olyan k1,k2,,kn értendő, amely az x1,x2,,xn ismeretlenek helyére behelyettesítve mind az m egyenletet kielégíti.[1]

Az elimináció-, azaz kiküszöbölés-módszer lényege abban áll, hogy rendszerünket visszavezetjük vagy valamely háromszög- vagy átlós mátrixszal reprezentálható alakra. Ezt sorozatos, jobb és bal oldalon egyaránt alkalmazott, lineáris transzformációk segítségével érjük el.
Az egyenletrendszert felfoghatjuk így:

Ax=b

Első lépésben a T1 mátrixszal szorozzuk mindkét oldalt:

T1Ax=T1b

Majd T2 transzformációnak vetjük alá:

T2T1Ax=T2T1b

Az m-edik lépés után az egyenletünk:

Ax=b

amely numerikus megoldása közvetlen módon kivitelezhető.
Azt is megtehetjük, hogy az A,b → A',b' transzformáció helyett A,x → A',x' típusú alakítást végzünk:

(AQ1)(Q11x)=b

Szemben az előbbi esettel, itt szükséges számontartanunk a végzett transzformációkat, mivel a megoldást nem a végső x', hanem az eredeti x = Q1 · Q2 · ... Qm · x' vektorra akarjuk meghatározni. A gyakorlatban a Ti és Qi gyöktartó transzformációkat egyidejűleg végezzük. Feladatunk ezek azonosítása, illetve egymás utáni alkalmazásuk algoritmizálása.
Célunk az A mátrix bizonyos elemeinek a kinullázása a lehető legkisebb kerekítési hiba mellett. A következő egyszerű műveleteket használjuk:

  • Felcserélve A bármely két sorát és a megfelelő sorokat b-ben , nem módosul az x megoldásvektor. Ez nyilvánvalóvá válik, ha észrevesszük, hogy a művelet az eredeti egyenletrendszer két egyenletének triviális felcserélését jelenti.
  • Hasonlóképpen, ha bármelyik sort A-ban helyettesítjük önmaga és bármely másik sor lineáris kombinációjával, nem módosul a megoldás, ha azonos műveletet végzünk el b vektoron is. Az egyenletrendszer szintjén ez megint csak magától értetődik, tudniillik két egyenlet összeadása nem módosítja a megoldást.
  • Két oszlop cseréje az A-ban a megfelelő együtthatók felcserélését teszik szükségessé az x megoldásvektorban. Az egyes egyenletek szintjén ez az összeadás kommutativitásának kihasználását jelenti.

A mátrix-szorzások n3-bel arányos számítási költségének elkerülése érdekében kihasználjuk azt a tényt, hogy a fenti műveleteknek megfelelő transzformációs mátrixokban csak n elem különbözik nullától. Ezért a sorok és oszlopok módosítását közvetlenül elvégezhetjük n-nel arányos művelettel.

Megengedett módszerek

A Gauss-elimináció szerint az egyenletrendszereket csak a következő megengedett lépésekkel szabad megoldani:

  • két egyenlet felcserélése,
  • egyenlet számmal szorzása,
  • egyik egyenlethez a másik skalárszorosának hozzáadása.

Az egyenletrendszer rendezése

a11x1+a12x2++a1nxn=b1

a21x1+a22x2++a2nxn=b2

am1x1+am2x2++amnxn=bm

Ekkor tegyük fel, hogy a110. (Ez az állapot az egyenletek sorrendjének felcserélésével elérhető.) Ekkor vonjuk ki az i. egyenletből (ahol i2) az első egyenlet ai1a11 – szeresét. Az a11 átló menti elemet, amellyel osztunk, főelemnek nevezzük. A következő egyenletrendszert kapjuk:

a11,x1+a12,x2++a1n,xn=b1,

0+a22,x2++a2n,xn=b2,

0+am2,x2++amn,xn=bm,

Ezután az i2 egyenletekből vonjuk ki a második egyenlet ai2a22–szeresét. Ekkor a

a11,,x1+0++a1n,,xn=b1,,

0+a22,,x2++a2n,,xn=b2,,

0+0++amn,,xn=bm,,

egyenletrendszert kapjuk. Hasonló módon folytatva az eljárást a következő egyenletrendszerhez jutunk:

a11*x1+0++a1r+1*xr+1++a1nxn=b1*

0+a22*x2++a2r+1*xr+1++a2n*xn=b2*

0+0++arr*xr+arr+1*xr+1++arn*xn=br*

0=br+1*

0=bm*

Így az egyenletrendszer kibővített mátrixából elemi átalakításokkal eljutottunk a következő mátrixhoz:

[a11*00a1r+1*a1n*b1*0a22*0a2r+1*a2n*b2*00arr*arr+1*arn*br*00br+1*00bn*]

Következmények

Ha a br+1*bm* mindegyike egyenlő 0-val, akkor az egyenletrendszer megoldható (ekkor az egyenletrendszer mátrixának rangja megegyezik a kibővített mátrixának rangjával).

Ha ezen elemek valamelyike nem 0 akkor az egyenletrendszer nem oldható meg. (ekkor az egyenletrendszer mátrixának rangja kisebb a kibővített mátrixénál.)

Tehát egy egyenletrendszer akkor és csak akkor oldható meg, ha mátrixának rangja egyenlő kibővített mátrixának rangjával.

Ha az egyenletek száma nem pontosan r akkor az egyenletrendszer megoldása nem egyértelmű. Egy lineáris egyenletrendszer akkor és csak akkor oldható meg egyértelműen, ha mátrixának és kibővített mátrixának rangja egyaránt megegyezik az egyenletben szereplő ismeretlenek számával.

Algoritmus

Miután kinullázzuk a megfelelő elemeket, a rendszerünk ilyen alakú lesz:

(a11(1)a12(1)a1n(1)0a22(2)a2n(2)00ann(n))(x1x2xn)=(b1(1)b2(2)bn(n))


az (1), (2)... (n) felső indexek az egyes lépéseket jelölik.

A Gauss-módszer algoritmusa a következőképpen képzelhető el:

function Gauss inout: (aij),(bi)i,j=1..n (az A mátrixot és a b vektort „helyben” módosítjuk)

for k1 to n1 do
for ik+1 to n do
laik/akk
bibilbk
for jk to n do
aijaijlakj
end for
end for
end for
return (aij),(bi)

end function

Ebben az algoritmusban feltételeztük, hogy az akk(k)0 feltétel minden esetben teljesül. Az algoritmus megvalósításánál azonban ezt a tesztelést célszerű a kódba beépíteni.

A kapott rendszer mátrixa egy felső-háromszög mátrix. Amennyiben az utolsó egyenletre is érvényes az ann(n)0 feltétel, akkor a rendszert egyszerűen megoldhatjuk.

A kiküszöbölés vezető rendben 2n3/3 műveletet tesz szükségessé, tehát a visszahelyettesítés n2/2 műveletigénye elhanyagolható nagy rendszerek megoldása esetén.

Példa

Példaképpen tekintsük át a módszer lépéseit egy konkrét 3 x 3-as mátrixszal leírható egyenletrendszer esetén:

(152231243) (x1x2x3) = (252) (főelem: 1) →

(152075061) (x1x2x3) = (212) (főelem: -7) →

(15207500237) (x1x2x3) = (21207)

A megoldások: x1=3123,x2=1123,x3=2023

Ritka mátrixok

A ritka mátrixok Gauss-eliminációja során fellépő jelenséget, hogy olyan helyeken keletkezik nemzérus elem, ahol eredetileg nulla állt, feltöltődésnek nevezik. Mivel a ritka mátrixokban a nulla elemeket általában helytakarékosan tárolják, ezért a feltöltődésre ügyelni kell: helyet kell szerezni az újonnan keletkezett elemeknek. Ha külön nem foglalkoznak vele, a feltöltődés nagymértékű is lehet; egy eliminációs lépés alatt akár az egész mátrix feltöltődhet.[2]

A minimális feltöltődés (minimum fill-in) elérése kívánatos cél, a szükséges számítási bonyolultságról még kevés tanulmány született;[3] általában segíthet, ha a problémát okozó sorokat, oszlopokat a Gauss-elimináció végén kezeljük, amit a minimális fokszám algoritmus (az elimináció k-adik lépésében azt a főátlóbeli elemet választjuk főelemnek, amelynek az i index fokszáma minimális) valósít meg.

Hivatkozások

  • Stoyan Gisbert-Takó Galina: Numerikus módszerek I.
  • Lázár Zsolt, Lázár József, Járai-Szabó Ferenc: Numerikus módszerek
  • A. G. Kuros: Felsőbb algebra, Tankönyvkiadó

Jegyzetek

Sablon:Portál