Gram–Schmidt-eljárás

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

A főként a lineáris algebrában és a numerikus analízisben használatos Gram–Schmidt-ortogonalizálás (avagy Gram–Schmidt-eljárás, esetleg Gram–Schmidt-féle ortogonalizálási eljárás) egy skalárszorzatos tér egy véges, lineárisan független {vj} vektorrendszerét alakítja át egy olyan {uj} vektorrendszerré, melynek elemei páronként merőlegesek egymásra (a skalárszorzatra vonatkozóan), más szóval ortogonálisak, és a két vektorrendszer ugyanazt az alteret feszíti ki az említett skalárszorzatos térben.[1]

A módszert Jørgen Pedersen Gram és Erhard Schmidt után nevezték el, bár korábban Laplace-nál is szerepelt az eljárás.[2] A Gram–Schmidt-ortogonalizálás egy általánosításának tekinthető a Lie-csoportok elméletében szereplő Iwasawa-dekompozíció.[3]

Az eljárás alkalmazható például a reguláris mátrixok QR-felbontásánál.[4]

Lebegőpontos számításokhoz kevéssé alkalmas, mivel a felhalmozódó kerekítési hibák miatt a kapott vektorok nem lesznek ortogonálisak. Egyes módosítások kiküszöbölik ezt a hibát, így alkalmassá téve a módszert ezekre a számításokra.

A Gram–Schmidt-eljárás

Az egydimenziós altérre vetítés

Pre-Hilbert-térben (skalárszorzatos térben) az u nemnulla vektor alterébe merőlegesen vetít a

proj𝐮𝐱=𝐮,𝐱𝐮𝐮2

leképezés, ahol <u, x> a két vektor skaláris szorzatát jelöli. A projekciótételből következik ugyanis, hogy pre-Hilbert-térben, ha létezik olyan y vektor az u kifeszítette altérben, hogy minden λC(ill. R)-re

𝐱𝐲𝐱λ.𝐮

akkor az ilyen y-t egyértelműen jellemzi az, hogy minden λC (illetve R)-re:

𝐱𝐲,λ.𝐮=0

És valóban létezik ilyen y éspedig pont a fenti projekció, ugyanis

𝐱𝐮,𝐱𝐮𝐮2,λ.𝐮=𝐱,λ.𝐮𝐮,𝐱λ.𝐮2𝐮2=𝐱,λ.𝐮λ.𝐮,𝐱1=0

Az eljárás

A Gram–Schmidt-eljárás első lépése: vetítsük merőlegesen v2-t v1-re. Ekkor Span(v1,v2) = Span(v1,v2 - proj v2) és az utóbbiak merőlegesek.

Legyen {v1, ... , vn } lineárisan független vektorrendszer. Azt az {u1, ... , un } vektorrendszert, melynek elemei páronként merőlegesek és Span(v1, ... , vn) = Span(u1, ... , un) (azaz ugyanazt az alteret feszítik ki, ugyanaz a generált Span(...) részalgebrájuk) a következőképpen kapjuk. Legyen u1=v1. Vetítsük v2-t merőlegesen u1-re, legyen ez w2. Ekkor u2 = v2w2. Tegyük ezt v3-mal és u1-vel illetve u2-vel ... Ha ortonormált bázist akarunk, akkor osszuk le az uk-kat a hosszukkal.

𝐮1=𝐯1, 𝐞1=𝐮1𝐮1
𝐮2=𝐯2proj𝐮1𝐯2, 𝐞2=𝐮2𝐮2
𝐮3=𝐯3proj𝐮1𝐯3proj𝐮2𝐯3, 𝐞3=𝐮3𝐮3
𝐮4=𝐯4proj𝐮1𝐯4proj𝐮2𝐯4proj𝐮3𝐯4, 𝐞4=𝐮4𝐮4
𝐮n=𝐯nk=1n1proj𝐮k𝐯n, 𝐞n=𝐮n𝐮n

Helyesség

Annak az igazolása, hogy az eljárás valóban a kívánt eredményt adja a következő.[5]

Először belátjuk, hogy az {uk} vektorrendszer bázisa a {vk} vektorrendszer által kifeszített L lineáris altérnek. Mivel L dimenziója a feltevés miatt éppen |{vk}| = n, ezért elég belátni, hogy {uk} generálja L-et. Tudjuk:

𝐮1=𝐯1
𝐮2=𝐯2λ21𝐮1
𝐮3=𝐯3λ32𝐮2λ31𝐮1
𝐮n=𝐯nk=1n1λnk𝐮k

alkalmas λij számokkal. Valójában tetszőleges λij-kre generálja {uk} az L-et, mert minden k-ra vk előáll az u1, ... , uk-k lineáris kombinációjaként, azaz előállítják az összes bázisvektort, melyek viszont előállítják L összes elemét.

Másodszor belátjuk, hogy minden k = 1, ..., n-re az algoritmus által előállított {u1,...,uk} ortogonális, azaz

𝐮i,𝐮j{0,hai=j=0,haij

k=1 esetén az egyetlen nemnulla u teljesíti az ortogonalitási kritériumot. Ha 1, ..., k–1 már teljesíti a páronkénti ortogonalitást, akkor az uk vektor mindegyik addigira merőleges, mert

𝐮i,𝐮k=𝐮i,𝐯kj=1k1λkj𝐮j=𝐮i,𝐯kj=1k1λkj𝐮i,𝐮j=
=𝐮i,𝐯kλki𝐮i,𝐮i=𝐮i,𝐯k𝐮i,𝐯k𝐮i2𝐮i,𝐮i=0,

hiszen az algoritmusból kiolvasva éppen

λki=𝐮i,𝐯k𝐮i2.

Megjegyzések

  • Az eljárás általános k-adik lépésének formuláját így is írhatjuk:
𝐯k=𝐮k+i=1k1proj𝐮i𝐯k.
Eszerint ha már megvan az {u1, ..., uk–1} ortogonális rendszer, akkor a k-adik lépésben nem mást teszünk, mint vesszük a vk vektor új, már meglévő báziselemekre eső merőleges vetületét és kiválasztjuk, hogy melyik uk vektor az, amelyiket a vetületekhez adva vk előáll. Míg a projekciótétel, lévén tiszta egzisztenciatétel, csak azt állítja, hogy létezik ilyen vektor, addig a Gram–Schmidt-eljárás konstruktívan adja meg a vetületet, éspedig:
𝐦0=𝐯k𝐮k=i=1k1proj𝐮i𝐯k.
A helyességi gondolatmenetben pont azt látjuk be, hogy a vkm0 vektor merőleges a Span({u1, ..., uk–1}) altérre, hisz mindegyik bázisvektorára merőleges.
  • Végtelen dimenziós altér esetén szintén alkalmazható az eljárás, azzal az eredménnyel, hogy az előállított (u1, ..., uk, ...) sorozatban bármely k-ig az u1, ..., uk vektorok páronként ortogonálisak. Itt a függetlenség azt jelenti, hogy egy elem sem fekszik a korábbiak lineáris burkában. Megszámlálható esetben (szeperábilis Hilbert-terekben) az ortogonalizáció visszavezethető véges esetre. Általában minden független rendszer a jólrendezési tétel szerint felírható egy (𝐰α)α<d sorozatként, ahol d kardinális szám, és α ordinális szám. Ha a rendszer lineáris burka sűrű, akkor d a Hilbert-tér dimenziója. Jelölje H a teret, és legyen πA:HA egy ortogonális projekció az A altérre, ami a teljesség miatt mindig létezik, és 𝐱^ legyen az 𝐱𝐱 normált vektor. Így adódik egy (𝐯α)α<d ortonormált rendszer, ahol
Aα:=span({𝐰β:β<α})
𝐯α:=(𝐰απAα(𝐰α))^.
𝐯α:=(𝐰αβ<α𝐯β,𝐰α𝐯β)^
A Bessel-egyenlőtlenség miatt az összeg jóldefiniált (legfeljebb megszámlálható sok elem különbözik nullától).
  • Lineárisan összefüggő vektorrendszerre alkalmazva az eljárást az eredményben előbb-utóbb előáll a 0 vektor. Ha ugyanis a k-adik vektor már az előzőek által kifeszített altérben van, akkor a vektorból az altérre eső vetületét kivonva a 0-t kapjuk. A lineárisan összefüggő vektorok által kifeszített alteret is lehet azonban ortogonális vektorokkal előállítani, éspedig úgy, hogy az algoritmusban minden új bázisvektor esetén megnézzük, hogy 0-t ad-e és ha igen, a régi vektort elvetjük és folytatjuk egy másik elem előállításával. Ekkor az algoritmus eredménye annyi vektor lesz, amennyi az eredeti vektorrendszer rangja volt.
  • Az eljárás alatt az addig kiszámolt 𝐯1,,𝐯i vektorok ugyanazt az alteret feszítik ki, mint az eredeti 𝐰1,,𝐰i vektorok. A 𝐯1,,𝐯i vektorok ortogonális bázist alkotnak a megfelelő altérben. Más szóval, az egyik rendszert a másik rendszer bázisában jobb felső háromszögmátrix fejezi ki. Ennek a mátrixnak pozitív a determinánsa, így az eredményként kapott ortogonális bázis irányítása megegyezik az eredetivel. Ha az ortonormált 𝐯1,,𝐯n vektorokból, mint oszlopokból megalkotjuk a Q mátrixot, és az eredeti 𝐰1,,𝐰n vektorokból az A mátrixot, akkor van egy R háromszögmátrix, úgy, hogy A=QR, tehát egy QR-felbontáshoz jutunk.
  • Kézzel számoláskor egyszerűbb, ha először csak ortogonalizálunk, és csak a végén normalizálunk. Így elkerüljük a kétszeres normalizációt, és gyakran egyszerűbb értékekkel kell számolni. Kifizetődő az ortogonalizáció előtt egy Gauß-eliminációt is elvégezni.

Példa

Vegyük az

A=[121]

mátrix magterét[6] mint R3 alterét és adjunk meg benne egy ortogonális bázist!

A feladatot az

𝐚𝐛=i=13𝐚i𝐛i

sztenderd skalárszorzat szerint végezzük el!

Megoldás:

A dimenziótétel szerint a magtér kétdimenziós, ugyanis dim(R3) = dim Ker A + dim Im A, de A oszlopai skalárok, így dim Im A = 1. A kétdimenziós magtérnek kételemű a bázisa. A magtér egy alkalmas bázisa lehet az {v1 = (2, -1, 0), v2 = (1, 0, -1)}, mert a két vektor nyilvánvalóan lineárisan független, és mindkettő magtérbeli, mivel

[121][211001]=[00].

Feladatunk most már a bázisvektorok oszlopmátrixának ortogonalizálása. Alkalmazzuk az eljárást {v1, v2}-re!

𝐮1=𝐯1=[210],
proj𝐮1𝐯2=𝐮1,𝐯2𝐮1𝐮12=21+(1)0+0(1)22+(1)2+02[210]=25[210]=[45250],
𝐮2=𝐯2proj𝐮1𝐯2=[101][45250]=[15251].

Ellenőrizzük vektoriális szorzattal! Mivel

KerA={(x,y,z)𝐑3x+2y+z=0},

ezért nincs más feladatunk, mint a

x+2y+z=0

síkban lévő két merőleges vektort mondanunk. Legyen ugyanaz az első:

𝐮1=[210],

ez valóban a síkban van. Most vegyük az (1, 2, 1) normálvektor[7] és az előbbi vektoriális szorzatát:

𝐮1=|𝐢𝐣𝐤121210|=1𝐢+2𝐣5𝐤,

ami valóban párhuzamos a fent kapott vektorral, éspedig az 5-szöröse. Ebből is világosan látható, hogy az ortogonális vektorrendszer nem egyértélmű (még akkor sem, ha egységvektorokat választunk bázisnak).

Ortonormalizáció

Az algoritmus egy változata nemcsak ortogonalizál, hanem normalizál is, így a 𝐰1,,𝐰n független vektorokból ortonormált rendszert kapunk, ami ugyanazt az alteret generálja, mint a kiindulási vektorok.

A 𝐯1,,𝐯n vektorok ortonormált rendszert alkotnak, hogyha az ortogonalizáció után normáljuk is őket:

𝐯1=𝐰1𝐰1 (az első vektor normalizációja)
𝐯2=𝐰2𝐯1,𝐰2𝐯1 (a második vektor ortogonalizációja)
𝐯2=𝐯2𝐯2 (a második vektorból kapott 𝐯2 vektor normalizációja)
𝐯3=𝐰3𝐯1,𝐰3𝐯1𝐯2,𝐰3𝐯2 (a harmadik vektor ortogonalizációja)
𝐯3=𝐯3𝐯3 (a harmadik vektorból kapott 𝐯3 vektor normalizációja)
𝐯n=𝐰ni=1n1𝐯i,𝐰n𝐯i (az n-edik vektor ortogonalizációja)
𝐯n=𝐯n𝐯n (a 𝐯n=𝐯n𝐯n-edik vektorból kapott 𝐯n vektor normalizációja)

Másként, a 𝐯j és a 𝐯j vektorok, ahol j=1,2,,n, rekurzívan is definiálhatók:

𝐯j=𝐰ji=1j1𝐯i,𝐰j𝐯i és 𝐯j=𝐯j𝐯j

Általában nem kapunk kitüntetett rendszert. A jobb- vagy balsodrású rendszerhez először rendezni kell a vektorokat.

Példa

2-ben a , skalárszorzattal adva van a következő bázis:

𝐰1=(31),𝐰2=(22)

Ezekből kiszámítunk egy 𝐯1 és 𝐯2 vektort, melyek 2 egy ortonormált bázisát alkotják.

𝐯1=𝐰1𝐰1=110(31)
𝐯2=𝐰2𝐯1,𝐰2𝐯1=(22)110(31),(22)110(31)=15(26)
𝐯2=𝐯2𝐯2=254015(26)=110(13)

Jegyzetek

Sablon:Jegyzetek

Források

Fordítás

Sablon:Fordítás

Sablon:Portál

  1. A módszer leírása például itt: Szörényi: Szemléletes lineáris algebra - összefoglaló I. informatikusoknak Sablon:Pdf 8. o.
  2. Earliest known uses of some of the words of mathematics: G. A bejegyzésben hivatkoznak Gram és Schmidt eredeti cikkére és a Laplace könyvre.
  3. Orthogonalization process in Encyclopaedia of Mathematics
  4. Szörényi: Szemléletes lineáris algebra - összefoglaló I. informatikusoknak Sablon:Pdf 30. o.
  5. Lásd például: Freud Róbert: Lineáris algebra (ELTE Eötvös Kiadó, 1998) 202. o.
  6. Az 1×3-as A mátrix Ker A magtere a következőképpen van definiálva: Ker A := { vR3 | Av = 0 }. Belátható, hogy Ker A lineáris altér R3-ban.
    Az A mátrix Im A képtere a következőképpen van definiálva: Im A := { wR | ∃ vR3: Av = w }.
  7. Az A mátrix most egyetlen sorvektor, ami merőleges az A magterének vektoraira, vagyis normálvektor.