Az adatelemzők és adattudósok matematikai eszköztárában egyaránt megtalálható a statisztika és a valószínűségszámítás. A matematika azonban olyan tudomány, amelyben az egyes területek közötti kapcsolatok meglehetősen szorosak és szövevényesek. Ezért van az, hogy a statisztika gyakran operál a lineáris algebra eszközeivel.
Ez számodra azt jelenti, hogy nem úszod meg az alapok elsajátítását. A jó hír viszont az, hogy nem kell minden matematikai műveletet kézzel elvégezned. A NumPy segítségével a számításokat programozott módon is végrehajthatod.
Ebben a cikkben végigvesszük a lineáris algebra legfontosabb fogalmait, a vektoroktól kezdve egészen a sajátértékekig és sajátvektorokig. A matematikai összefüggések mellett NumPy-példákat is mutatok, hogy lásd, miként alkalmazhatod mindezt a gyakorlatban.
Vektorok
A vektorokat legegyszerűbben úgy képzelheted el, mint számok rendezett sorozatát. A geometriában irányított szakaszokként is értelmezhetjük őket, a lineáris algebrában azonban ennél általánosabb matematikai objektumokról beszélünk.
Egy kétdimenziós vektor két, egy háromdimenziós vektor három koordinátával rendelkezik. Általánosan egy dimenziós vektort számérték alkot.
A pontokat általában az ábécé nagybetűivel, a vektorokat pedig kisbetűkkel jelöljük. A vektorok elnevezéseit gyakran aláhúzzuk, vagy felső nyíllal jelöljük, hogy megkülönböztessük őket a sima számoktól (skalároktól).
Legyen például az pont koordinátája:
Az origóból az pontba mutató helyvektor:
Felső nyíllal ábrázolva:
A két objektum koordinátái megegyeznek, a geometriai jelentésük viszont eltér. A pont egy helyet jelöl a koordinátarendszerben, a helyvektor pedig az origóból az adott helyre mutató irányított szakaszt reprezentálja.
A vektorokkal többféle műveletet végezhetünk. Ezeket vesszük most sorra.
Vektorok összeadása
Az összeadásnál egyszerűen összeadjuk a vektorok azonos helyen álló koordinátáit.
Legyen:
Ekkor:
A vektorok összeadása kommutatív, vagyis a tagok sorrendje nem számít:
Az összeadás asszociatív is, vagyis a zárójelezés nem befolyásolja az eredményt:
Az összeadás csak azonos dimenziójú vektorok között értelmezhető.
NumPy-ban a művelet egyszerűen elvégezhető:
import numpy as np
a = np.array([2, 4, 6])
b = np.array([3, 6, 8])
print(a + b)
# [ 5 10 14]
Skalárszoros
A vektorokat egyetlen számmal, azaz skalárral is megszorozhatjuk. Ilyenkor a vektor minden koordinátáját megszorozzuk ugyanazzal a számmal.
Legyen:
A kettes skalárral vett szorzat:
A negatív skalárszoros a vektor irányát is megfordítja:
NumPy-ban:
a = np.array([2, 4, 6])
print(2 * a)
# [ 4 8 12]
Vektorok szorzása
A vektorok szorzásánál fontos különbséget tenni a koordinátánkénti szorzás, a skaláris szorzat és a diadikus szorzat között. Ezek különböző műveletek, és más-más eredményt adnak.
Koordinátánkénti szorzás
A koordinátánkénti szorzás során az azonos helyen álló koordinátákat szorozzuk össze.
Legyen:
Ekkor:
Az eredmény ismét egy vektor. A művelet kommutatív és asszociatív, feltéve, hogy a műveletben részt vevő vektorok méretei megfelelnek egymásnak.
A jelölésben használt arra utal, hogy koordinátánkénti szorzásról van szó. Ez nem ugyanaz, mint a hagyományos mátrixszorzás.
NumPy-ban:
a = np.array([2, 4, 6])
b = np.array([3, 6, 8])
print(a * b)
# [ 6 24 48]
Skaláris szorzat
Fontos! A skaláris szorzat nem ugyanaz, mint a skalárszoros.
A skalárszoros egy vektort és egy számot használ fel, a skaláris szorzat viszont két vektor között értelmezett művelet. Eredménye egyetlen szám, azaz skalár.
Két valós koordinátájú vektor skaláris szorzatát úgy számítjuk ki, hogy az azonos helyen álló koordinátákat összeszorozzuk, majd a szorzatokat összeadjuk.
Legyen:
Ekkor:
A transzponálás azt jelenti, hogy az oszlopvektorból sorvektort készítünk. Így a művelet mátrixszorzásként is értelmezhető:
A skaláris szorzat eredménye tehát nem vektor és nem mátrix, hanem egyetlen szám.
A skaláris szorzat kommutatív a vektorok esetében:
Ez a számítás viszont nem asszociatív, mert a zárójelek átcsoportosítása megváltoztatja a végeredményül kapott vektor irányát és nagyságát is:
A skaláris szorzat egy skalárt eredményez, így a műveletek különböző csoportosítása nem ugyanazt az eredményt adja vissza. Próbáld ki három tetszőleges vektorral, és meglátod, miért!
NumPy-ban:
a = np.array([2, 4])
b = np.array([5, 6])
print(np.dot(a, b))
# 34
Diadikus szorzat
A diadikus szorzatnál éppen fordított szerepet játszik a két vektor, mint a skaláris szorzatnál. Az első vektort oszlopvektorként, a másodikat sorvektorként kezeljük.
Legyen:
A diadikus szorzat:
A művelet során a sorvektor minden elemét megszorozzuk az oszlopvektor minden elemével. Az eredmény egy mátrix:
Figyeld meg a különbséget: a skaláris szorzat eredménye -es szám, a diadikus szorzaté pedig -es mátrix.
NumPy-ban:
a = np.array([2, 4])
b = np.array([5, 6])
print(np.outer(a, b))
# [[10 12]
# [20 24]]
Vektorok hossza
A vektor hosszát vagy normáját a koordináták négyzetösszegének négyzetgyökével számíthatjuk ki. Ez a kétdimenziós esetben közvetlenül a Pitagorasz-tételből következik.
Ha a vektor:
akkor a hossza:
Három dimenzióban:
Általánosan, dimenzióban:
Vegyük például a következő vektort:
A hossza:
NumPy-ban:
a = np.array([3, 4])
print(np.linalg.norm(a))
# 5.0
A vektor hossza nem azonos a koordinátáinak összegével. A normát a vektor geometriai hosszának általánosításaként érdemes értelmezni.
Vektorok elforgatása
A kétdimenziós vektorok elforgatását egy egyszerű koordináta-transzformációval is elvégezhetjük.
Legyen a vektor:
A vektor -os, az óramutató járásával ellentétes irányú elforgatásához cseréljük fel a koordinátákat, majd az új első koordinátát (az eredeti második koordinátát) vegyük negatív előjellel:
A -os, óramutató járásával megegyező irányú forgatás:
A -os forgatásnál mindkét koordináta előjelet vált:
A fenti műveleteket forgatómátrixok segítségével is felírhatjuk. A -os, pozitív irányú forgatás mátrixa:
A forgatott vektor:
NumPy-ban:
v = np.array([3, 4])
R = np.array([
[0, -1],
[1, 0]
])
print(R @ v)
# [-4 3]
Mátrixok
A mátrixok számok sorokba és oszlopokba rendezett, téglalap alakú matematikai objektumok. Az elemeket a sor- és oszlopindexük segítségével azonosítjuk.
A mátrixokat általában nagybetűkkel jelöljük. Egy sorból és oszlopból álló mátrix mérete .
Például:
Ez egy -as mátrix. Az első index a sort, a második az oszlopot jelöli. Így például az elem a második sor harmadik oszlopában található.
A mátrixokat elképzelheted úgy is, mint egymás mellé helyezett, azonos dimenziójú oszlopvektorokat. Ez a szemlélet később különösen hasznos lesz a lineáris egyenletrendszerek és a főkomponens-analízis megértésénél.
NumPy-ban:
A = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(A.shape)
# (2, 3)
Mátrixok összeadása
A mátrixok összeadásakor az azonos sorban és oszlopban álló elemeket adjuk össze. Ehhez a két mátrixnak azonos méretűnek kell lennie.
Legyen:
Ekkor:
A mátrixok összeadása kommutatív (felcserélhetők a szereplők):
Az összeadás asszociatív is (tetszés szerint csoportosítható):
NumPy-ban:
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A + B)
# [[ 6 8]
# [10 12]]
Mátrixok skalárral való szorzása
A mátrix minden elemét megszorozhatjuk ugyanazzal a skalárral (számmal).
A mátrix háromszorosát így kapjuk meg:
NumPy-ban:
A = np.array([[1, 2], [3, 4]])
print(3 * A)
# [[ 3 6]
# [ 9 12]]
Mátrixok transzponálása
A transzponálás során a sorokat és az oszlopokat felcseréljük. A transzponált mátrixot általában -vel jelöljük.
Legyen:
A transzponáltja:
Az eredeti mátrix -as, a transzponáltja pedig -as. A sorok és oszlopok száma felcserélődik.
NumPy-ban:
A = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(A.T)
# [[1 4]
# [2 5]
# [3 6]]
Mátrixok szorzása
A mátrixszorzás az egyik legfontosabb művelet a lineáris algebrában. Segítségével többek között lineáris transzformációkat hajthatunk végre, lineáris egyenletrendszereket írhatunk fel, és statisztikai módszereket is megvalósíthatunk.
A mátrixszorzást kézzel a Falk-séma segítségével is elvégezhetjük.
A szorzás méretfeltétele rendkívül fontos: egy -es mátrixot csak olyan mátrixszal szorozhatunk meg a szokásos sorrendben, amelynek sora van. Ha a második mátrix mérete , akkor az eredmény -es lesz.
A szorzás tehát akkor értelmezhető, ha az első mátrix oszlopainak száma megegyezik a második mátrix sorainak számával.
Nézzünk egy egyszerű példát!
NumPy-ban a @ operátorral végezhetünk mátrixszorzást:
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A @ B)
# [[19 22]
# [43 50]]
Nagyon fontos: a mátrixszorzás általában nem kommutatív. Ez azt jelenti, hogy a sorrend felcserélésével rendszerint más eredményt kapunk:
Sőt, előfordulhat, hogy értelmezhető, miközben nem.
A mátrixok szorzása viszont asszociatív, tehát:
Ha nem hiszed, próbáld ki! Végső soron ugyanazok a műveletek mennek végbe, csak más sorrendben.
Mikor nem szorozható össze két mátrix?
Vegyünk egy -es és egy -as mátrixot:
Az szorzatnál az első mátrix két oszloppal rendelkezik, a második pedig három sorral. A belső méretek nem egyeznek meg:
Ezért az szorzat nem értelmezhető.
Ugyanez igaz a fordított sorrendre is, hiszen:
esetén a belső méretek ismét eltérnek.
NumPy-ban a hibás méretű mátrixszorzás kivételt eredményez:
A = np.ones((2, 2))
B = np.eye(3)
# ValueError
A lényeg tehát nem az, hogy a mátrixoknak egyforma dimenziókkal kell rendelkezniük. Különböző méretű mátrixok is összeszorozhatók, amennyiben az első oszlopainak száma megegyezik a második sorainak számával.
Speciális mátrixok
Néhány mátrixtípus különösen fontos a lineáris algebrában.
Négyzetes mátrix
A négyzetes mátrix sorainak és oszlopainak száma megegyezik.
Ez egy -es négyzetes mátrix. A determináns, a sajátértékek és a sajátvektorok szokásos fogalmai négyzetes mátrixokhoz kapcsolódnak.
Diagonális mátrix
A diagonális mátrix főátlóján kívül minden elem nulla:
A főátló a bal felső saroktól a jobb alsó sarokig húzódó elemekből áll. A diagonális mátrixokkal sok számítás egyszerűbben elvégezhető.
Egységmátrix
Az egységmátrix olyan a mátrixok szorzásában, mint az a valós számok szorzásában. A főátlóján minden elem , a többi eleme pedig nulla.
Bármely megfelelő méretű négyzetes mátrixra igaz:
Az egységmátrix méretének illeszkednie kell a művelethez. Például egy -es mátrixot a -es egységmátrixszal szorozva kapjuk vissza az eredeti mátrixot.
NumPy-ban:
print(np.eye(3))
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
Lineáris egyenletrendszerek megoldása mátrixokkal
A lineáris algebra egyik legfontosabb alkalmazása a lineáris egyenletrendszerek megoldása.
Vegyük a következő rendszert:
Az egyenletrendszert mátrixos alakban is felírhatjuk:
Röviden:
Ha az mátrix invertálható, akkor az egyenlet mindkét oldalát balról megszorozhatjuk az inverz mátrixszal:
Mivel , ezért:
A gyakorlatban azonban nem feltétlenül érdemes előbb kiszámítani az inverz mátrixot. NumPy-ban célszerűbb közvetlenül megoldani az egyenletrendszert:
A = np.array([
[1, 2],
[3, 4]
])
b = np.array([5, 11])
x = np.linalg.solve(A, b)
print(x)
# [1. 2.]
A megoldás tehát , .
Van egy részletesebb, könnyen követhető anyagom is arról, hogyan működik az elemi bázistranszformáció, amely a lineáris egyenletrendszerek megoldásának egyik fontos módszere:
Vektorok lineáris függetlensége
A lineáris függetlenség a lineáris algebra egyik központi fogalma. Segítségével többek között megérthetjük a mátrixok rangját, a bázisokat, a determinánsokat és a sajátértékek számítását is. (Később lesz szó arról, hogy mit jelentenek ezek a fogalmak pontosan.)
Vektorok akkor lineárisan függetlenek, ha csak úgy kaphatjuk meg a nullvektort a vektorok skalárszorosainak összegeként, ha minden együttható nulla.
Formálisan a vektorok akkor lineárisan függetlenek, ha:
egyenletből kizárólag a következő megoldás adódik:
Nézzük meg a háromdimenziós tér legegyszerűbb példáját!
Vizsgáljuk meg, mikor teljesül a következő egyenlet:
A koordináták szerint:
Ebből egyértelműen következik, hogy mindhárom együttható nulla. A vektorok tehát lineárisan függetlenek.
Nézzünk egy másik példát!
Ebben az esetben a harmadik vektor az első kettő kétszeresének összege:
Rendezzük át az egyenletet:
Ez már egy nem triviális megoldás, hiszen az együtthatók nem mind nullák:
A három vektor tehát lineárisan összefüggő.
Fontos különbség: három lineárisan független vektor létezhet a háromdimenziós térben, de a kétdimenziós térben három vektor már nem lehet lineárisan független. Általánosan egy dimenziós vektortérben legfeljebb lineárisan független vektorunk lehet.
Mátrixok rangja, generátorrendszer és bázis
A mátrix rangja szorosan összefügg a lineáris függetlenséggel. A rang azt mutatja meg, hogy a mátrix oszlopai között hány lineárisan független vektor található. Ezzel egyenértékűen a sorok által kifeszített tér dimenzióját is megadja.
Jelöljük a mátrix rangját -val.
Például:
Ennek a mátrixnak a három oszlopa lineárisan független, ezért:
Ezzel szemben:
A második oszlop az első oszlop kétszerese. Így csak egyetlen lineárisan független oszlop van:
NumPy-ban a rang a matrix_rank függvénnyel számítható ki:
A = np.eye(3)
B = np.array([[1, 2], [2, 4]])
print(np.linalg.matrix_rank(A))
# 3
print(np.linalg.matrix_rank(B))
# 1
Generátorrendszer
Egy vektorhalmaz generátorrendszer, ha a vektoraiból képzett lineáris kombinációkkal előállítható a vizsgált vektortér minden eleme.
A háromdimenziós térben például a következő vektorok generátorrendszert alkotnak:
Bármely háromdimenziós vektor felírható ezek lineáris kombinációjaként:
Bázis
A bázis olyan lineárisan független vektorokból álló generátorrendszer, amely a teljes vektorteret kifeszíti.
A fenti három egységvektor tehát a háromdimenziós tér egy bázisát alkotja.
A bázis azért különösen fontos, mert segítségével minden vektort egyértelműen reprezentálhatunk koordinátákkal. A lineáris algebra számos módszere, köztük a bázistranszformáció is erre az elvre épül.
Mátrix determinánsa
A determináns egy négyzetes mátrixhoz rendelt szám. Jelölése például vagy .
A determináns többek között arról ad információt, hogy egy mátrix invertálható-e, illetve hogy a hozzá tartozó lineáris transzformáció hogyan változtatja meg a területet vagy a térfogatot.
Egy -es mátrix esetében a determináns egyszerűen kiszámítható:
Például:
Mivel a determináns nem nulla, a mátrix invertálható.
Ezzel szemben:
A mátrix oszlopai lineárisan összefüggők, így a mátrix szinguláris.
Egy négyzetes mátrix pontosan akkor invertálható, ha a determinánsa nem nulla:
Geometriailag a kétdimenziós esetben a determináns abszolút értéke a mátrix oszlopvektorai által kifeszített paralelogramma területét adja meg. Ha a determináns nulla, a paralelogramma összeomlik egy egyenesre vagy egy pontra, tehát a területe nulla.
Három dimenzióban a determináns abszolút értéke a megfelelő paralelogramma-test, azaz a paralelepipedon (vicces szó 😁) térfogatát adja meg.
Laplace-féle kifejtés mátrix determinánsára
Ha -esnél nagyobb (például -es) négyzetes mátrix determinánsát keressük, a Laplace-féle kifejtési tételt alkalmazzuk. A determináns értékét bármelyik sor vagy oszlop mentén kifejtve megkaphatjuk, a pozícióknak megfelelő sakktábla-szabály (előjelmodell) figyelembevételével.
Vegyük a következő általános -as mátrixot:
1. Kifejtés az első sor szerint
Az első sor szerinti kifejtésnél az első sor elemeit egyenként megszorozzuk a hozzájuk tartozó aldeterminánsokkal és a pozíció előjelével. (Az igazsághoz hozzá tartozik, hogy a gyakorlatban nem külön-külön húzzuk át az elemeket, hanem a teljes sort/oszlopot. Ilyen lehetőséget Katexben viszont nem találtam.)
-
1. elem ( ): Kihúzzuk az első sort és az első oszlopot:
Ennek aldeterminánsa: -
2. elem ( ): Kihúzzuk az első sort és a második oszlopot:
Ennek aldeterminánsa: -
3. elem ( ): Kihúzzuk az első sort és a harmadik oszlopot:
Ennek aldeterminánsa:
2. A sakktábla-szabály (Előjelmodell)
Az aldeterminánsok előjelét a formula adja meg, ahol a sor, pedig az oszlop indexe. Ez egy váltakozó előjelű mintát hoz létre:
3. A teljes determináns kiszámítása
A determinánsokat megszorozzuk a (-1) (sorindex + oszlopindex) szerinti hatványával, valamint az adott sorban és oszlopban lévő mátrix-elemmel. Például, ha az első sor első oszlop szerinti az aldetermináns, akkor az:
Ebben a konkrét példában pedig:
Sarrus-szabály mátrix determinánsára
A Sarrus-szabály egy vizuális és gyors módszer -as mátrixok determinánsának kiszámítására.
⚠️ Fontos: A Sarrus-szabály kizárólag -as mátrixokra alkalmazható! Sem -es, sem -es vagy nagyobb mátrixoknál nem működik.
A számítás menete
- Írjuk le a -as mátrixot.
- A mátrix mögé (vagy alá) másoljuk le az első két oszlopát (vagy sorát).
- Szorozzuk össze a főátlóval párhuzamos átlók elemeit (pozitív előjellel).
- Szorozzuk össze a mellékátlóval párhuzamos átlók elemeit (negatív előjellel).
Vegyük a korábbi mátrixot:
Egészítsük ki az első két oszloppal:
Főátlóbeli szorzatok (hozzáadandók):
Mellékátlóbeli szorzatok (kivonandók):
Determináns:
Látható, hogy mindkét módszer pontosan ugyanazt a -as eredményt adja.
Mátrixok inverze
Az inverz mátrix a mátrixszorzásban az egységmátrixhoz hasonló szerepet tölt be, mint a reciprok a valós számok szorzásában. Egy skalár (sima szám) reciproka az a szám, amivel megszorozva egyet kapunk.
Egy négyzetes mátrix inverze, , akkor létezik, ha:
Nem minden négyzetes mátrix invertálható. Az invertálható mátrixokat regulárisnak, az invertálhatatlanokat szingulárisnak nevezzük. A reguláris mátrixok determinánsa nem nulla, tehát az oszlopvektorok lineárisan függetlenek.
Vegyük a következő mátrixot:
Az inverze:
Az inverz mátrix kiszámításához egy olyan lineáris egyenletrendszer megoldására van szükség, amelyben az invertálandó mátrix és az ugyanolyan méretű egységmátrix szerepel. Nézzünk egy példát:
1. Lépés: Első oszlop nullázása
Oldjuk meg ezt most Gauss-eliminációval! A második sorból vonjuk ki az első sor 5-szörösét.
- Második sor új elemei:
A mátrix a művelet után:
2. Lépés: A főátló második elemének skálázása
A második sort osszuk el -14-gyel, hogy a főátlóban 1-est kapjunk:
3. Lépés: Második oszlop nullázása
Az első sorból vonjuk ki a második sor 4-szeresét:
- Első sor új elemei:
A kibővített mátrix végleges alakja:
A bal oldalon megjelent az egységmátrix, így a jobb oldalon lévő mátrix az eredeti mátrix inverze:
NumPy-ban:
A = np.array([[1, 4], [5, 6]])
A_inv = np.linalg.inv(A)
print(A_inv)
Geometriai transzformációk mátrixokkal
Mátrixok segítségével képesek vagyunk geometriai transzformációkat végrehajtani vektorokon, és ehhez csak egy mátrix-vektor szorzásra van szükség. Vegyük például a következő vektort:
Végezzük el a következő szorzást:
Látható, hogyha az mátrixot megszorzom jobb oldalról az vektorral, akkor kétszeresére skáláztam azt. Most végezzünk el egy másik szorzást!
Ilyenkor az vektor -koordinátája ugyan kétszeresére nő, de az -koordinátája marad az eredeti. Az utóbbi esetben nem csupán skálázás, hanem elforgatás (vagy matematikailag még pontosabban fogalmazva nyírás) is történt az eredeti vektorhoz képest, hiszen ha a koordináták nem egyenlő arányban növekednek, akkor a transzformált vektor más szöget fog bezárni az - és -tengellyel, mint az eredeti.
Sajátérték és sajátvektor
A sajátértékek és sajátvektorok a lineáris algebra különösen fontos fogalmai. A statisztikában például a főkomponens-analízis során is szerepet kapnak.
A kiindulópont egy négyzetes mátrix és egy nem nulla vektor. Azt keressük, hogy létezik-e olyan skalár, amelyre:
Ebben az egyenletben:
- a négyzetes mátrix;
- a sajátvektor;
- a hozzá tartozó sajátérték.
A sajátvektor olyan nem nulla vektor, amelyet az mátrixszal való szorzás nem fordít el más irányba: a vektor legfeljebb megnyúlik, összehúzódik, vagy az előjele megváltozik.
Rendezzük nullára az egyenletet:
Mivel skalár, a második tagot így is felírhatjuk:
Emeljük ki a közös vektort:
Itt jelenik meg az egységmátrix jelentősége. Az mátrixból önmagában nem vonhatunk ki egyetlen skalárt, de a mátrix már ugyanolyan méretű, mint , ezért a kivonás értelmezhető.
A kérdés most az, hogy mikor létezik az egyenletnek nem nulla megoldása.
Ha az mátrix invertálható lenne, akkor az egyenlet mindkét oldalát megszorozhatnánk az inverzével:
Ebből:
adódna. Ez azonban nem felel meg a sajátvektor definíciójának, hiszen a sajátvektor nem lehet nullvektor.
Ezért olyan értékeket keresünk, amelyeknél az mátrix szinguláris, azaz a determinánsa nulla:
Ezt nevezzük karakterisztikus egyenletnek. A megoldásai a mátrix sajátértékei.
Miért kapcsolódik mindez a lineáris függetlenséghez?
Vegyük a következő egyenletet:
Ha invertálható, akkor csak a nullvektor lehet megoldás. Ha viszont szinguláris, akkor a homogén egyenletrendszernek létezik nem nulla megoldása.
Nézzük meg az egységmátrixot:
Az egyenlet:
csak akkor teljesül, ha és .
Ezzel szemben a következő mátrix szinguláris:
A két oszlop lineárisan összefüggő, hiszen a második oszlop az első kétszerese. A determináns:
A egyenletnek van nem nulla megoldása is. Például:
Ellenőrzés:
Ez a kapcsolat teszi lehetővé a sajátértékek meghatározását: azokat a értékeket keressük, amelyeknél az mátrix oszlopai lineárisan összefüggővé válnak.
Sajátérték és sajátvektor példa
Vegyük a következő mátrixot:
Első lépésként felírjuk a karakterisztikus egyenletet:
Helyettesítsük be a mátrixot és az egységmátrixot:
A kivonás elvégzése után:
Számítsuk ki a determinánst:
Bontsuk fel a zárójeleket:
Rendezzük az egyenletet:
A másodfokú egyenletet tényezőkre bonthatjuk:
A két sajátérték tehát:
Most számítsuk ki a sajátvektorokat.
Első sajátérték: λ₁ = 6
Helyettesítsük be a sajátértékünket az egyenletbe! Mivel lett a sajátérték, azért ezt a hatost az egységmátrixszal megszorozva a következő diagonális mátrixot kapjuk:
Így az mátrix főátlójának elemeiből szimplán csak ki kell vonni hatot, majd megoldani a homogen lineáris egyenletrendszert nullára:
Ez a következő egyenletrendszert adja:
Ha megpróbáljuk megoldani ezt az egyenletrendszert, akkor végtelen sok megoldást kapunk. Ilyenkor nem konkrétan x1 és x2 értékei, hanem azok arányai a fontosak. Ez az arány határozza meg az összes olyan sajátvektort, amelyet az eredeti, kiindulási mátrix nem forgat el, csak skáláz.
A mátrixszorzást elvégezve a következő két egyenletből álló rendszert kapjuk:
Látható, hogy a második egyenlet az elsőnek a -szerese (a két egyenlet lineárisan függ egymástól), így az egyik egyenlet elhagyható. Fejezzük ki az változót az segítségével:
Legyen az egy szabadon választható paraméter ( ). Ekkor az ismeretlenek:
A sajátvektor általános alakja tehát:
Ha el akarjuk kerülni a törteket a reprezentatív bázisvektorban, akkor választhatjuk a értéket, amivel az első sajátértékhez tartozó sajátvektort a következő egész számú aránnyal adhatjuk meg:
Második sajátérték: λ₂ = −3
Hasonlóan járunk el:
Az első sorból:
Tehát:
Ha , akkor . Az egyik sajátvektor:
A sajátvektorok nem egyediek. Bármely nem nulla skalárszorosuk szintén sajátvektor ugyanahhoz a sajátértékhez.
Ezt NumPy-val is ellenőrizhetjük:
A = np.array([
[1, 4],
[5, 2]
])
eigenvalues, eigenvectors = np.linalg.eig(A)
print(eigenvalues)
# 6 és -3, a sorrend eltérhet
print(eigenvectors)
A np.linalg.eig() a sajátértékeket és a hozzájuk tartozó sajátvektorokat adja vissza. A sajátvektorok a visszaadott mátrix oszlopaiban találhatók, és a NumPy általában egységnyi hosszúságúra normalizálja őket. Emiatt az eredmény számszerűen eltérhet a kézzel kiszámított vektoroktól, de ugyanabba az irányba mutatnak, vagy annak ellentettjébe.
Geometriai ellenőrzés
Van egy tök jó kis sajátvektorunk, ez a következő:
Szorozzuk meg az eredeti mátrixot ezzel a vektorral:
Nem lehet nem észrevenni, hogy az és a vektorok pontosan ugyanabba az irányba mutatnak.






Top comments (0)