Gaussin eliminointi (tunnetaan myös nimellä rivien vähentäminen) on tehokas menetelmä lineaaristen yhtälöiden ratkaisemiseen. Menetelmä on nimetty Carl Friedrich Gaussin mukaan; hän popularisoi menetelmää, vaikka ei ollut sen alkuperäinen keksijä. Gaussin eliminoinnissa yhtälösysteemin kertoimet sijoitetaan niin kutsuttuun lisättyyn matriisiin (augmented matrix), ja tämän matriisin riveihin kohdistetaan yksinkertaisia alkeisrivioperaatioita, kunnes ratkaisut voidaan lukea suoraan tai määrälleen takaisin-substituoinnilla.

Alkeisrivioperaatiot ovat kolme erilaista muutosta, joita saa käyttää ilman että yhtälösysteemin ratkaisut muuttuvat:

  • Tyyppi 1: Kahden rivin vaihtaminen keskenään.
  • Tyyppi 2: Rivin kertominen nollasta poikkeavalla luvulla.
  • Tyyppi 3: Toisen rivin lisääminen tai vähentäminen toisen rivin monikertana.

Gaussin eliminoinnin tavoite on saada matriisi rivi-echelon-muotoon, jossa kunkin rivin vasemmassa reunassa olevien nollien määrä kasvaa alaspäin mentäessä. Usein halutaan vielä tiukempi muoto, pelkistetty rivi-echelon-muoto (reduced row-echelon form), jossa kunkin rivin ensimmäinen nollasta poikkeava termi on 1 ja se on ainoa ei-nollatermi siinä sarakkeessa. Menetelmää, joka tuottaa suoraan tämän pelkistetyn muodon, kutsutaan Gauss–Jordanin eliminoinniksi.

Menetelmä vaiheittain

  • Muodosta yhtälösysteemistä lisätty matriisi [A | b], jossa A on kertoimimatriisi ja b on vektori vapaista termeistä.
  • Suorita eteenpäin-eliminointi: valitse jokaiselle sarakkeelle pivot-alkio (ei-nolla), tarvittaessa vaihda rivejä (Tyyppi 1), skaalaa riviä (Tyyppi 2) ja poista pivotin alapuoliset termit käyttämällä rivien yhdistämistä (Tyyppi 3). Tällä tavoin saat matriisin rivi-echelon-muotoon.
  • Kun matriisi on rivi-echelon-muodossa, ratkaisut voi usein löytää takaisin-substituoinnilla: ratkaise ylin tuntematon ja sijoita se alempiin yhtälöihin vuorotellen.
  • Vaihtoehtoisesti jatka rivien käsittelyä niin, että saat pelkistetyn rivi-echelon-muodon, jolloin ratkaisut näkyvät suoraan (Gauss–Jordan).

Yksinkertainen esimerkki

Ratkaistaan järjestelmä

2x + y = 5
x - y = 1

Lisätty matriisi on aluksi: [ 2 1 | 5 ]
[ 1 -1 | 1 ]

Vaihe 1: Vaihda tarvittaessa rivejä, tai tässä tapauksessa käytetään toista riviä pivotina. Otetaan R1' = R1 - 2·R2:

[ 0 3 | 3 ]
[ 1 -1 | 1 ]

Vaihe 2: Vaihdetaan rivien järjestys jotta pivotit etenevät vasemmalta oikealle (R1 ↔ R2):

[ 1 -1 | 1 ]
[ 0 3 | 3 ]

Vaihe 3: Skaalataan toinen rivi jakamalla 3:lla: R2' = (1/3)·R2 → [0 1 | 1]

Vaihe 4: Poistetaan yläpuolen sarakkeesta 1:n vaikutus: R1' = R1 + R2 → [1 0 | 2]

Nyt ratkaisut ovat x = 2 ja y = 1.

Erikoistapaukset ja numeerinen vakaus

  • Jos rivien käsittelyssä kohtaa nollan pivot-arvona, pitää vaihtaa rivi (pivotointi). Osittainen pivotointi (valitaan suurimman itseisarvon omaava alarivi pivotiksi) parantaa numeerista vakautta etenkin liukuluku-laskennassa.
  • Mikäli saadaan rivi, jossa kaikki kertoimet ovat nollia mutta vapaiden termejen puolella on ei-nolla (esim. [0 0 ... 0 | c], c ≠ 0), systeemi on ristiriitainen eikä sillä ole ratkaisua.
  • Jos matriisista jää vapaita muuttujia (vähemmän riippumattomia riviehtoita kuin muuttujia), saadaan äärettömän monta ratkaisua, jotka ilmaistaan parametrien avulla.
  • Algoritmin laskennallinen monimutkaisuus on tyypillisesti O(n^3) n × n -matriiseille. Käytännössä numeerisissa sovelluksissa huomioidaan liukuluvun pyöristysvirheet ja valitaan pivotointimenetelmä sen mukaan.

Sovelluksia

Gaussin eliminointi on perusmenetelmä lineaarialgebrassa ja sillä on laajat käyttöalueet: differentiaaliyhtälöiden numeerinen ratkaisu, optimointi, verkkoanalyysi, koneoppiminen ja muut tekniset sekä tieteelliset laskennat. Se tarjoaa myös perustan matriisien käänteisen laskemiseen ja determinanttien arviointiin.

Vinkki: pieni järjestelmä kannattaa usein ratkaista käsin Gauss–Jordan-tekniikalla, mutta suuremmissa numeerisissa tehtävissä kannattaa käyttää valmiita ja vakaiksi todettuja ohjelmistokirjastoja, jotka toteuttavat pivotoinnin ja huomioivat liukuluvun rajoitteet.