DEV Community

Cover image for Lineáris algebra gyorstalpaló NumPy példákkal
Code & Stats with Olivér
Code & Stats with Olivér

Posted on

Lineáris algebra gyorstalpaló NumPy példákkal

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 nn dimenziós vektort nn 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 AA pont koordinátája:

A=(2,4) A=(2,4)

Az origóból az AA pontba mutató helyvektor:

a‾=(24) \underline{a}=\begin{pmatrix}2\\4\end{pmatrix}

Felső nyíllal ábrázolva:

a⃗=(24) \vec{a}=\begin{pmatrix}2\\4\end{pmatrix}

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:

a‾=(246),b‾=(368) \underline{a}=\begin{pmatrix}2\\4\\6\end{pmatrix}, \qquad \underline{b}=\begin{pmatrix}3\\6\\8\end{pmatrix}

Ekkor:

c‾=a‾+b‾=(2+34+66+8)=(51014) \underline{c}=\underline{a}+\underline{b} =\begin{pmatrix}2+3\\4+6\\6+8\end{pmatrix} =\begin{pmatrix}5\\10\\14\end{pmatrix}

A vektorok összeadása kommutatív, vagyis a tagok sorrendje nem számít:

a‾+b‾=b‾+a‾ \underline{a}+\underline{b}=\underline{b}+\underline{a}

Az összeadás asszociatív is, vagyis a zárójelezés nem befolyásolja az eredményt:

(a‾+b‾)+c‾=a‾+(b‾+c‾) (\underline{a}+\underline{b})+\underline{c} =\underline{a}+(\underline{b}+\underline{c})

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]
Enter fullscreen mode Exit fullscreen mode

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‾=(246) \underline{a}=\begin{pmatrix}2\\4\\6\end{pmatrix}

A kettes skalárral vett szorzat:

2a‾=2(246)=(4812) 2\underline{a} =2\begin{pmatrix}2\\4\\6\end{pmatrix} =\begin{pmatrix}4\\8\\12\end{pmatrix}

A negatív skalárszoros a vektor irányát is megfordítja:

−a‾=(−2−4−6) -\underline{a}=\begin{pmatrix}-2\\-4\\-6\end{pmatrix}

NumPy-ban:

a = np.array([2, 4, 6])

print(2 * a)
# [ 4  8 12]
Enter fullscreen mode Exit fullscreen mode

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:

a‾=(246),b‾=(368) \underline{a}=\begin{pmatrix}2\\4\\6\end{pmatrix}, \qquad \underline{b}=\begin{pmatrix}3\\6\\8\end{pmatrix}

Ekkor:

c‾=a‾⊙b‾=(2⋅34⋅66⋅8)=(62448) \underline{c}=\underline{a}\odot\underline{b} =\begin{pmatrix}2\cdot3\\4\cdot6\\6\cdot8\end{pmatrix} =\begin{pmatrix}6\\24\\48\end{pmatrix}

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 ⊙\odot 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]
Enter fullscreen mode Exit fullscreen mode

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:

a‾=(24),b‾=(56) \underline{a}=\begin{pmatrix}2\\4\end{pmatrix}, \qquad \underline{b}=\begin{pmatrix}5\\6\end{pmatrix}

Ekkor:

a‾Tb‾=2⋅5+4⋅6=10+24=34 \underline{a}^{T}\underline{b} =2\cdot5+4\cdot6 =10+24 =34

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ő:

(24)(56)=34 \begin{pmatrix}2&4\end{pmatrix} \begin{pmatrix}5\\6\end{pmatrix} =34

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:

a‾⋅b‾=b‾⋅a‾ \underline{a} \cdot \underline{b} = \underline{b} \cdot \underline{a}

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‾⋅b‾)⋅c‾≠a‾⋅(b‾⋅c‾) (\underline{a} \cdot \underline{b}) \cdot \underline{c} \neq \underline{a} \cdot (\underline{b} \cdot \underline{c})

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
Enter fullscreen mode Exit fullscreen mode

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‾=(24),b‾=(56) \underline{a}=\begin{pmatrix}2\\4\end{pmatrix}, \qquad \underline{b}=\begin{pmatrix}5\\6\end{pmatrix}

A diadikus szorzat:

a‾b‾T(24)(56) \underline{a}\underline{b}^{T} \begin{pmatrix}2\\4\end{pmatrix} \begin{pmatrix}5&6\end{pmatrix}

A művelet során a sorvektor minden elemét megszorozzuk az oszlopvektor minden elemével. Az eredmény egy mátrix:

a‾b‾T=(2⋅52⋅64⋅54⋅6)=(10122024) \underline{a}\underline{b}^{T} {=} \begin{pmatrix} 2\cdot5&2\cdot6\\ 4\cdot5&4\cdot6 \end{pmatrix} {=} \begin{pmatrix} 10&12\\ 20&24 \end{pmatrix}

Figyeld meg a különbséget: a skaláris szorzat eredménye 1×11\times1 -es szám, a diadikus szorzaté pedig 2×22\times2 -es mátrix.

NumPy-ban:

a = np.array([2, 4])
b = np.array([5, 6])

print(np.outer(a, b))
# [[10 12]
#  [20 24]]
Enter fullscreen mode Exit fullscreen mode

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:

a‾=(a1a2) \underline{a}=\begin{pmatrix}a_1\\a_2\end{pmatrix}

akkor a hossza:

∣a‾∣=a12+a22 |\underline{a}|=\sqrt{a_1^2+a_2^2}

Három dimenzióban:

∣a‾∣=a12+a22+a32 |\underline{a}|=\sqrt{a_1^2+a_2^2+a_3^2}

Általánosan, nn dimenzióban:

∣a‾∣=∑i=1nai2 |\underline{a}|=\sqrt{\sum_{i=1}^{n}a_i^2}

Vegyük például a következő vektort:

a‾=(34) \underline{a}=\begin{pmatrix}3\\4\end{pmatrix}

A hossza:

∣a‾∣=32+42=9+16=25=5 |\underline{a}|=\sqrt{3^2+4^2} =\sqrt{9+16} =\sqrt{25}=5

NumPy-ban:

a = np.array([3, 4])

print(np.linalg.norm(a))
# 5.0
Enter fullscreen mode Exit fullscreen mode

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:

v‾=(xy) \underline{v}=\begin{pmatrix}x\\y\end{pmatrix}

A vektor 90∘90^\circ -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:

(xy)⟶(−yx) \begin{pmatrix}x\\y\end{pmatrix} \longrightarrow \begin{pmatrix}-y\\x\end{pmatrix}

A 90∘90^\circ -os, óramutató járásával megegyező irányú forgatás:

(xy)⟶(y−x) \begin{pmatrix}x\\y\end{pmatrix} \longrightarrow \begin{pmatrix}y\\-x\end{pmatrix}

A 180∘180^\circ -os forgatásnál mindkét koordináta előjelet vált:

(xy)⟶(−x−y) \begin{pmatrix}x\\y\end{pmatrix} \longrightarrow \begin{pmatrix}-x\\-y\end{pmatrix}

A fenti műveleteket forgatómátrixok segítségével is felírhatjuk. A 90∘90^\circ -os, pozitív irányú forgatás mátrixa:

R=(0−110) R=\begin{pmatrix}0&-1\\1&0\end{pmatrix}

A forgatott vektor:

Rv‾(0−110)(xy)(−yx) R\underline{v} \begin{pmatrix}0&-1\\1&0\end{pmatrix} \begin{pmatrix}x\\y\end{pmatrix} \begin{pmatrix}-y\\x\end{pmatrix}

NumPy-ban:

v = np.array([3, 4])

R = np.array([
    [0, -1],
    [1,  0]
])

print(R @ v)
# [-4  3]
Enter fullscreen mode Exit fullscreen mode

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 mm sorból és nn oszlopból álló mátrix mérete m×nm\times n .

Például:

A=(a11a12a13a21a22a23) A= \begin{pmatrix} a_{11}&a_{12}&a_{13}\\ a_{21}&a_{22}&a_{23} \end{pmatrix}

Ez egy 2×32\times3 -as mátrix. Az első index a sort, a második az oszlopot jelöli. Így például az a23a_{23} 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)
Enter fullscreen mode Exit fullscreen mode

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:

A=(1234),B=(5678) A=\begin{pmatrix}1&2\\3&4\end{pmatrix}, \qquad B=\begin{pmatrix}5&6\\7&8\end{pmatrix}

Ekkor:

A+B=(1+52+63+74+8)(681012) A+B= \begin{pmatrix} 1+5&2+6\\ 3+7&4+8 \end{pmatrix} \begin{pmatrix} 6&8\\10&12 \end{pmatrix}

A mátrixok összeadása kommutatív (felcserélhetők a szereplők):

A+B=B+A A+B=B+A

Az összeadás asszociatív is (tetszés szerint csoportosítható):

(A+B)+C=A+(B+C) (A+B)+C=A+(B+C)

NumPy-ban:

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(A + B)
# [[ 6  8]
#  [10 12]]
Enter fullscreen mode Exit fullscreen mode

Mátrixok skalárral való szorzása

A mátrix minden elemét megszorozhatjuk ugyanazzal a skalárral (számmal).

A=(1234) A=\begin{pmatrix}1&2\\3&4\end{pmatrix}

A mátrix háromszorosát így kapjuk meg:

3A=(3⋅13⋅23⋅33⋅4)(36912) 3A= \begin{pmatrix} 3\cdot1&3\cdot2\\ 3\cdot3&3\cdot4 \end{pmatrix} \begin{pmatrix}3&6\\9&12\end{pmatrix}

NumPy-ban:

A = np.array([[1, 2], [3, 4]])

print(3 * A)
# [[ 3  6]
#  [ 9 12]]
Enter fullscreen mode Exit fullscreen mode

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 ATA^T -vel jelöljük.

Legyen:

A=(123456) A=\begin{pmatrix} 1&2&3\\ 4&5&6 \end{pmatrix}

A transzponáltja:

AT=(142536) A^T= \begin{pmatrix} 1&4\\ 2&5\\ 3&6 \end{pmatrix}

Az eredeti mátrix 2×32\times3 -as, a transzponáltja pedig 3×23\times2 -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]]
Enter fullscreen mode Exit fullscreen mode

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 m×nm\times n -es mátrixot csak olyan mátrixszal szorozhatunk meg a szokásos sorrendben, amelynek nn sora van. Ha a második mátrix mérete n×pn\times p , akkor az eredmény m×pm\times p -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!

A=(1234),B=(5678) A=\begin{pmatrix}1&2\\3&4\end{pmatrix}, \qquad B=\begin{pmatrix}5&6\\7&8\end{pmatrix}
(5678)(1234)(1⋅5+2⋅71⋅6+2⋅83⋅5+4⋅73⋅6+4⋅8) \begin{array}{c|c} & \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} \\ \hline \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} & \begin{pmatrix} 1\cdot5 + 2\cdot7 & 1\cdot6 + 2\cdot8 \\ 3\cdot5 + 4\cdot7 & 3\cdot6 + 4\cdot8 \end{pmatrix} \end{array}
(5678)(1234)(19224350) \begin{array}{c|c} & \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} \\ \hline \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} & \begin{pmatrix} 19 & 22 \\ 43 & 50 \end{pmatrix} \end{array}

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]]
Enter fullscreen mode Exit fullscreen mode

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:

AB≠BA AB\ne BA

Sőt, előfordulhat, hogy ABAB értelmezhető, miközben BABA nem.

A mátrixok szorzása viszont asszociatív, tehát:

A⋅(B⋅C)=(A⋅B)⋅C A \cdot (B \cdot C) = (A \cdot B) \cdot C

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 2×22\times2 -es és egy 3×33\times3 -as mátrixot:

A=(1234),B=(100010001) A=\begin{pmatrix}1&2\\3&4\end{pmatrix}, \qquad B=\begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix}

Az ABAB szorzatnál az első mátrix két oszloppal rendelkezik, a második pedig három sorral. A belső méretek nem egyeznek meg:

(2×2)⋅(3×3) (2\times{\color{red}2})\cdot({\color{red}3}\times3)

Ezért az ABAB szorzat nem értelmezhető.

Ugyanez igaz a fordított sorrendre is, hiszen:

(3×3)⋅(2×2) (3\times{\color{red}3})\cdot({\color{red}2}\times2)

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
Enter fullscreen mode Exit fullscreen mode

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.

A=(1234) A=\begin{pmatrix}1&2\\3&4\end{pmatrix}

Ez egy 2×22\times2 -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:

D=(200050007) D=\begin{pmatrix} 2&0&0\\ 0&5&0\\ 0&0&7 \end{pmatrix}

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 11 a valós számok szorzásában. A főátlóján minden elem 11 , a többi eleme pedig nulla.

I3=(100010001) I_3=\begin{pmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{pmatrix}

Bármely megfelelő méretű AA négyzetes mátrixra igaz:

AI=IA=A AI=IA=A

Az egységmátrix méretének illeszkednie kell a művelethez. Például egy 2×22\times2 -es mátrixot a 2×22\times2 -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.]]
Enter fullscreen mode Exit fullscreen mode

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:

x1+2x2=5,3x1+4x2=11. \begin{aligned} x_1+2x_2&=5,\\ 3x_1+4x_2&=11. \end{aligned}

Az egyenletrendszert mátrixos alakban is felírhatjuk:

(1234)⏞A(x1x2)⏞x‾=(511)⏞b‾ \overbrace{\begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}}^{A} \overbrace{\begin{pmatrix} x_1 \\ x_2 \end{pmatrix}}^{\underline{x}} {=} \overbrace{\begin{pmatrix} 5 \\ 11 \end{pmatrix}}^{\underline{b}}

Röviden:

Ax‾=b‾ A\underline{x}=\underline{b}

Ha az AA mátrix invertálható, akkor az egyenlet mindkét oldalát balról megszorozhatjuk az inverz mátrixszal:

A−1Ax‾=A−1b‾ A^{-1}A\underline{x}=A^{-1}\underline{b}

Mivel A−1A=IA^{-1}A=I , ezért:

x‾=A−1b‾ \underline{x}=A^{-1}\underline{b}

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.]
Enter fullscreen mode Exit fullscreen mode

A megoldás tehát x1=1x_1=1 , x2=2x_2=2 .

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 v‾1,v‾2,…,v‾n\underline{v}_1,\underline{v}_2,\ldots,\underline{v}_n vektorok akkor lineárisan függetlenek, ha:

λ1v‾1+λ2v‾2+⋯+λnv‾n=0‾ \lambda_1\underline{v}_1+\lambda_2\underline{v}_2+\cdots+ \lambda_n\underline{v}_n=\underline{0}

egyenletből kizárólag a következő megoldás adódik:

λ1=λ2=⋯=λn=0 \lambda_1=\lambda_2=\cdots=\lambda_n=0

Nézzük meg a háromdimenziós tér legegyszerűbb példáját!

a‾=(100),b‾=(010),c‾=(001) \underline{a}=\begin{pmatrix}1\\0\\0\end{pmatrix}, \qquad \underline{b}=\begin{pmatrix}0\\1\\0\end{pmatrix}, \qquad \underline{c}=\begin{pmatrix}0\\0\\1\end{pmatrix}

Vizsgáljuk meg, mikor teljesül a következő egyenlet:

λ1a‾+λ2b‾+λ3c‾=0‾ \lambda_1\underline{a}+ \lambda_2\underline{b}+ \lambda_3\underline{c}=\underline{0}

A koordináták szerint:

(λ1λ2λ3)=(000) \begin{pmatrix} \lambda_1\\ \lambda_2\\ \lambda_3 \end{pmatrix} {=} \begin{pmatrix} 0\\0\\0 \end{pmatrix}

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!

a‾=(123),b‾=(234),c‾=(61014) \underline{a}=\begin{pmatrix}1\\2\\3\end{pmatrix}, \qquad \underline{b}=\begin{pmatrix}2\\3\\4\end{pmatrix}, \qquad \underline{c}=\begin{pmatrix}6\\10\\14\end{pmatrix}

Ebben az esetben a harmadik vektor az első kettő kétszeresének összege:

c‾=2a‾+2b‾ \underline{c}=2\underline{a}+2\underline{b}

Rendezzük át az egyenletet:

−2a‾−2b‾+c‾=0‾ -2\underline{a}-2\underline{b}+\underline{c}=\underline{0}

Ez már egy nem triviális megoldás, hiszen az együtthatók nem mind nullák:

λ1=−2,λ2=−2,λ3=1 \lambda_1=-2,\qquad \lambda_2=-2,\qquad \lambda_3=1

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 nn dimenziós vektortérben legfeljebb nn 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 rank⁡(A)\operatorname{rank}(A) -val.

Például:

A=(100010001) A=\begin{pmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{pmatrix}

Ennek a mátrixnak a három oszlopa lineárisan független, ezért:

rank⁡(A)=3 \operatorname{rank}(A)=3

Ezzel szemben:

B=(1224) B=\begin{pmatrix} 1&2\\ 2&4 \end{pmatrix}

A második oszlop az első oszlop kétszerese. Így csak egyetlen lineárisan független oszlop van:

rank⁡(B)=1 \operatorname{rank}(B)=1

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
Enter fullscreen mode Exit fullscreen mode

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:

e‾1=(100),e‾2=(010),e‾3=(001) \underline{e}_1=\begin{pmatrix}1\\0\\0\end{pmatrix}, \quad \underline{e}_2=\begin{pmatrix}0\\1\\0\end{pmatrix}, \quad \underline{e}_3=\begin{pmatrix}0\\0\\1\end{pmatrix}

Bármely háromdimenziós vektor felírható ezek lineáris kombinációjaként:

(xyz)=xe‾1+ye‾2+ze‾3 \begin{pmatrix}x\\y\\z\end{pmatrix} =x\underline{e}_1+y\underline{e}_2+z\underline{e}_3

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 det⁡(A)\det(A) vagy ∣A∣|A| .

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 2×22\times2 -es mátrix esetében a determináns egyszerűen kiszámítható:

A=(abcd) A=\begin{pmatrix}a&b\\c&d\end{pmatrix}
det⁡(A)=ad−bc \det(A)=ad-bc

Például:

A=(4215) A=\begin{pmatrix}4&2\\1&5\end{pmatrix}
det⁡(A)=4⋅5−2⋅1=18 \det(A)=4\cdot5-2\cdot1=18

Mivel a determináns nem nulla, a mátrix invertálható.

Ezzel szemben:

B=(2448) B=\begin{pmatrix}2&4\\4&8\end{pmatrix}
det⁡(B)=2⋅8−4⋅4=0 \det(B)=2\cdot8-4\cdot4=0

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:

det⁡(A)≠0  ⟺  A invertaˊlhatoˊ \det(A)\ne0 \iff A\text{ invertálható}

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 2×22 \times 2 -esnél nagyobb (például n×nn \times n -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 3×33 \times 3 -as mátrixot:

A=(245148132) A = \begin{pmatrix} 2 & 4 & 5 \\ 1 & 4 & 8 \\ 1 & 3 & 2 \end{pmatrix}

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 ( a11=2a_{11} = 2 ): Kihúzzuk az első sort és az első oszlopot:

    (2‾45148132)→(4832) \begin{pmatrix} \xcancel{\underline{2}} & \xcancel{4} & \xcancel{5} \\ \xcancel{1} & 4 & 8 \\ \xcancel{1} & 3 & 2 \end{pmatrix} \rightarrow \begin{pmatrix} 4 & 8 \\ 3 & 2 \end{pmatrix}
    Ennek aldeterminánsa:
    det⁡(4832)=(4⋅2)−(8⋅3)=8−24=−16 \det \begin{pmatrix} 4 & 8 \\ 3 & 2 \end{pmatrix} = (4 \cdot 2) - (8 \cdot 3) = 8 - 24 = -16
  • 2. elem ( a12=4a_{12} = 4 ): Kihúzzuk az első sort és a második oszlopot:

    (24‾5148132)→(1812) \begin{pmatrix} \xcancel{2} & \xcancel{\underline{4}} & \xcancel{5} \\ 1 & \xcancel{4} & 8 \\ 1 & \xcancel{3} & 2 \end{pmatrix} \rightarrow \begin{pmatrix} 1 & 8 \\ 1 & 2 \end{pmatrix}
    Ennek aldeterminánsa:
    det⁡(1812)=(1⋅2)−(8⋅1)=2−8=−6 \det \begin{pmatrix} 1 & 8 \\ 1 & 2 \end{pmatrix} = (1 \cdot 2) - (8 \cdot 1) = 2 - 8 = -6
  • 3. elem ( a13=5a_{13} = 5 ): Kihúzzuk az első sort és a harmadik oszlopot:

    (245‾148132)→(1413) \begin{pmatrix} \xcancel{2} & \xcancel{4} & \xcancel{\underline{5}} \\ 1 & 4 & \xcancel{8} \\ 1 & 3 & \xcancel{2} \end{pmatrix} \rightarrow \begin{pmatrix} 1 & 4 \\ 1 & 3 \end{pmatrix}
    Ennek aldeterminánsa:
    det⁡(1413)=(1⋅3)−(4⋅1)=3−4=−1 \det \begin{pmatrix} 1 & 4 \\ 1 & 3 \end{pmatrix} = (1 \cdot 3) - (4 \cdot 1) = 3 - 4 = -1

2. A sakktábla-szabály (Előjelmodell)

Az aldeterminánsok előjelét a (−1)i+j(-1)^{i+j} formula adja meg, ahol ii a sor, jj pedig az oszlop indexe. Ez egy váltakozó előjelű mintát hoz létre:

(+−+−+−+−+) \begin{pmatrix} + & - & + \\ - & + & - \\ + & - & + \end{pmatrix}

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:

i+j=1+1=2i + j = 1 + 1 = 2

Ebben a konkrét példában pedig:

A1,1=2A_{1,1} = 2
det⁡(A)=(+1)⋅2⋅(−16)+(−1)⋅4⋅(−6)+(+1)⋅5⋅(−1) \det(A) = (+1) \cdot 2 \cdot (-16) + (-1) \cdot 4 \cdot (-6) + (+1) \cdot 5 \cdot (-1)
det⁡(A)=−32+24−5=−13 \det(A) = -32 + 24 - 5 = -13

Sarrus-szabály mátrix determinánsára

A Sarrus-szabály egy vizuális és gyors módszer 3×33 \times 3 -as mátrixok determinánsának kiszámítására.

⚠️ Fontos: A Sarrus-szabály kizárólag 3×33 \times 3 -as mátrixokra alkalmazható! Sem 2×22 \times 2 -es, sem 4×44 \times 4 -es vagy nagyobb mátrixoknál nem működik.

A számítás menete

  1. Írjuk le a 3×33 \times 3 -as mátrixot.
  2. A mátrix mögé (vagy alá) másoljuk le az első két oszlopát (vagy sorát).
  3. Szorozzuk össze a főátlóval párhuzamos átlók elemeit (pozitív előjellel).
  4. Szorozzuk össze a mellékátlóval párhuzamos átlók elemeit (negatív előjellel).

Vegyük a korábbi mátrixot:

A=(245148132) A = \begin{pmatrix} 2 & 4 & 5 \\ 1 & 4 & 8 \\ 1 & 3 & 2 \end{pmatrix}

Egészítsük ki az első két oszloppal:

245241481413213 \begin{array}{ccc|cc} 2 & 4 & 5 & 2 & 4 \\ 1 & 4 & 8 & 1 & 4 \\ 1 & 3 & 2 & 1 & 3 \end{array}

Főátlóbeli szorzatok (hozzáadandók):

  • 2⋅4⋅2=162 \cdot 4 \cdot 2 = 16
  • 4⋅8⋅1=324 \cdot 8 \cdot 1 = 32
  • 5⋅1⋅3=155 \cdot 1 \cdot 3 = 15
O¨sszeg1=16+32+15=63 \text{Összeg}_1 = 16 + 32 + 15 = 63

Mellékátlóbeli szorzatok (kivonandók):

  • 5⋅4⋅1=205 \cdot 4 \cdot 1 = 20
  • 2⋅8⋅3=482 \cdot 8 \cdot 3 = 48
  • 4⋅1⋅2=84 \cdot 1 \cdot 2 = 8
O¨sszeg2=20+48+8=76 \text{Összeg}_2 = 20 + 48 + 8 = 76

Determináns:

det⁡(A)=O¨sszeg1−O¨sszeg2=63−76=−13 \det(A) = \text{Összeg}_1 - \text{Összeg}_2 = 63 - 76 = -13

Látható, hogy mindkét módszer pontosan ugyanazt a −13-13 -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 AA mátrix inverze, A−1A^{-1} , akkor létezik, ha:

AA−1=A−1A=I AA^{-1}=A^{-1}A=I

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:

A=(1234) A=\begin{pmatrix}1&2\\3&4\end{pmatrix}

Az inverze:

A−1=(−2132−12) A^{-1}= \begin{pmatrix} -2&1\\ \frac{3}{2}&-\frac{1}{2} \end{pmatrix}

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:

(14105601) \left(\begin{array}{cc|cc} 1 & 4 & 1 & 0 \\ 5 & 6 & 0 & 1 \end{array}\right)

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:
    • 5−5⋅1=05 - 5 \cdot 1 = 0
    • 6−5⋅4=−146 - 5 \cdot 4 = -14
    • 0−5⋅1=−50 - 5 \cdot 1 = -5
    • 1−5⋅0=11 - 5 \cdot 0 = 1

A mátrix a művelet után:

(14100−14−51) \left(\begin{array}{cc|cc} 1 & 4 & 1 & 0 \\ 0 & -14 & -5 & 1 \end{array}\right)

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:

(141001514−114) \left(\begin{array}{cc|cc} 1 & 4 & 1 & 0 \\ 0 & 1 & \frac{5}{14} & -\frac{1}{14} \end{array}\right)

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:
    • 1−4⋅0=11 - 4 \cdot 0 = 1
    • 4−4⋅1=04 - 4 \cdot 1 = 0
    • 1−4⋅514=1414−2014=−614=−371 - 4 \cdot \frac{5}{14} = \frac{14}{14} - \frac{20}{14} = -\frac{6}{14} = -\frac{3}{7}
    • 0−4⋅(−114)=414=270 - 4 \cdot \left(-\frac{1}{14}\right) = \frac{4}{14} = \frac{2}{7}

A kibővített mátrix végleges alakja:

(10−372701514−114) \left(\begin{array}{cc|cc} 1 & 0 & -\frac{3}{7} & \frac{2}{7} \\ 0 & 1 & \frac{5}{14} & -\frac{1}{14} \end{array}\right)

A bal oldalon megjelent az egységmátrix, így a jobb oldalon lévő mátrix az eredeti mátrix inverze:

A−1=(−3727514−114) A^{-1} = \begin{pmatrix} -\frac{3}{7} & \frac{2}{7} \\ \frac{5}{14} & -\frac{1}{14} \end{pmatrix}

NumPy-ban:

A = np.array([[1, 4], [5, 6]])

A_inv = np.linalg.inv(A)

print(A_inv)
Enter fullscreen mode Exit fullscreen mode

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:

a‾=(11) \underline{a} = \begin{pmatrix} 1 \\ 1 \end{pmatrix}

Végezzük el a következő szorzást:

A=(1111) A = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}
(11)(1111)(22) \begin{array}{c|c} & \begin{pmatrix} 1 \\ 1 \end{pmatrix} \\ \hline \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} & \begin{pmatrix} 2 \\ 2 \end{pmatrix} \end{array}
b‾=Aa‾=(22) \underline{b} = A \underline{a} = \begin{pmatrix} 2 \\ 2 \end{pmatrix}

Látható, hogyha az AA mátrixot megszorzom jobb oldalról az a‾\underline{a} vektorral, akkor kétszeresére skáláztam azt. Most végezzünk el egy másik szorzást!

B=(1110) B = \begin{pmatrix} 1 & 1 \\ 1 & 0 \end{pmatrix}
(11)(1110)(21) \begin{array}{c|c} & \begin{pmatrix} 1 \\ 1 \end{pmatrix} \\ \hline \begin{pmatrix} 1 & 1 \\ 1 & 0 \end{pmatrix} & \begin{pmatrix} 2 \\ 1 \end{pmatrix} \end{array}
c‾=Ba‾=(21) \underline{c} = B \underline{a} = \begin{pmatrix} 2 \\ 1 \end{pmatrix}

Ilyenkor az a‾\underline{a} vektor xx -koordinátája ugyan kétszeresére nő, de az yy -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 xx - és yy -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 AA mátrix és egy nem nulla v‾\underline{v} vektor. Azt keressük, hogy létezik-e olyan λ\lambda skalár, amelyre:

Av‾=λv‾ A\underline{v}=\lambda\underline{v}

Ebben az egyenletben:

  • AA a négyzetes mátrix;
  • v‾\underline{v} a sajátvektor;
  • λ\lambda a hozzá tartozó sajátérték.

A sajátvektor olyan nem nulla vektor, amelyet az AA 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:

Av‾−λv‾=0‾ A\underline{v}-\lambda\underline{v}=\underline{0}

Mivel λ\lambda skalár, a második tagot így is felírhatjuk:

Av‾−λIv‾=0‾ A\underline{v}-\lambda I\underline{v}=\underline{0}

Emeljük ki a közös vektort:

(A−λI)v‾=0‾ (A-\lambda I)\underline{v}=\underline{0}

Itt jelenik meg az egységmátrix jelentősége. Az AA mátrixból önmagában nem vonhatunk ki egyetlen skalárt, de a λI\lambda I mátrix már ugyanolyan méretű, mint AA , ezért a kivonás értelmezhető.

A kérdés most az, hogy mikor létezik az egyenletnek nem nulla megoldása.

Ha az A−λIA-\lambda I mátrix invertálható lenne, akkor az egyenlet mindkét oldalát megszorozhatnánk az inverzével:

(A−λI)−1(A−λI)v‾=(A−λI)−10‾ (A-\lambda I)^{-1}(A-\lambda I)\underline{v} =(A-\lambda I)^{-1}\underline{0}

Ebből:

v‾=0‾ \underline{v}=\underline{0}

adódna. Ez azonban nem felel meg a sajátvektor definíciójának, hiszen a sajátvektor nem lehet nullvektor.

Ezért olyan λ\lambda értékeket keresünk, amelyeknél az A−λIA-\lambda I mátrix szinguláris, azaz a determinánsa nulla:

det⁡(A−λI)=0 \boxed{\det(A-\lambda I)=0}

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:

Bv‾=0‾ B\underline{v}=\underline{0}

Ha BB invertálható, akkor csak a nullvektor lehet megoldás. Ha viszont BB szinguláris, akkor a homogén egyenletrendszernek létezik nem nulla megoldása.

Nézzük meg az egységmátrixot:

I=(1001) I=\begin{pmatrix}1&0\\0&1\end{pmatrix}

Az egyenlet:

I(xy)=(00) I\begin{pmatrix}x\\y\end{pmatrix} =\begin{pmatrix}0\\0\end{pmatrix}

csak akkor teljesül, ha x=0x=0 és y=0y=0 .

Ezzel szemben a következő mátrix szinguláris:

B=(2448) B=\begin{pmatrix}2&4\\4&8\end{pmatrix}

A két oszlop lineárisan összefüggő, hiszen a második oszlop az első kétszerese. A determináns:

det⁡(B)=2⋅8−4⋅4=0 \det(B)=2\cdot8-4\cdot4=0

A Bv‾=0‾B\underline{v}=\underline{0} egyenletnek van nem nulla megoldása is. Például:

v‾=(−21) \underline{v}=\begin{pmatrix}-2\\1\end{pmatrix}

Ellenőrzés:

(2448)(−21)=(00) \begin{pmatrix}2&4\\4&8\end{pmatrix} \begin{pmatrix}-2\\1\end{pmatrix} {=} \begin{pmatrix}0\\0\end{pmatrix}

Ez a kapcsolat teszi lehetővé a sajátértékek meghatározását: azokat a λ\lambda értékeket keressük, amelyeknél az A−λIA-\lambda I 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:

A=(1452) A=\begin{pmatrix}1&4\\5&2\end{pmatrix}

Első lépésként felírjuk a karakterisztikus egyenletet:

det⁡(A−λI)=0 \det(A-\lambda I)=0

Helyettesítsük be a mátrixot és az egységmátrixot:

det⁡((1452)λ(1001))=0 \det\left( \begin{pmatrix}1&4\\5&2\end{pmatrix} \lambda \begin{pmatrix}1&0\\0&1\end{pmatrix} \right)=0

A kivonás elvégzése után:

det⁡(1−λ452−λ)=0 \det\begin{pmatrix} 1-\lambda&4\\ 5&2-\lambda \end{pmatrix}=0

Számítsuk ki a determinánst:

(1−λ)(2−λ)−4⋅5=0 (1-\lambda)(2-\lambda)-4\cdot5=0

Bontsuk fel a zárójeleket:

2−3λ+λ2−20=0 2-3\lambda+\lambda^2-20=0

Rendezzük az egyenletet:

λ2−3λ−18=0 \lambda^2-3\lambda-18=0

A másodfokú egyenletet tényezőkre bonthatjuk:

(λ−6)(λ+3)=0 (\lambda-6)(\lambda+3)=0

A két sajátérték tehát:

λ1=6,λ2=−3 \lambda_1=6,\qquad\lambda_2=-3

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 λ=6\lambda = 6 lett a sajátérték, azért ezt a hatost az egységmátrixszal megszorozva a következő diagonális mátrixot kapjuk:

6⋅I=6⋅(1001)=(6006) 6 \cdot I = 6 \cdot \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 6 & 0 \\ 0 & 6 \end{pmatrix}

Így az AA mátrix főátlójának elemeiből szimplán csak ki kell vonni hatot, majd megoldani a homogen lineáris egyenletrendszert nullára:

(A−6I)v‾=0‾ (A-6I)\underline{v}=\underline{0}

Ez a következő egyenletrendszert adja:

(−545−4)(xy)=(00) \begin{pmatrix} -5&4\\ 5&-4 \end{pmatrix} \begin{pmatrix}x\\y\end{pmatrix} {=} \begin{pmatrix}0\\0\end{pmatrix}

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:

−5x+4y=05x−4y=0 \begin{aligned} -5x + 4y &= 0 \\ 5x - 4y &= 0 \end{aligned}

Látható, hogy a második egyenlet az elsőnek a −1-1 -szerese (a két egyenlet lineárisan függ egymástól), így az egyik egyenlet elhagyható. Fejezzük ki az xx változót az yy segítségével:

5x=4y  ⟹  x=45y 5x = 4y \implies x = \frac{4}{5}y

Legyen az yy egy szabadon választható tt paraméter ( t∈R∖0t \in \mathbb{R} \setminus {0} ). Ekkor az ismeretlenek:

y=t  ⟹  x=45t y = t \quad \implies \quad x = \frac{4}{5}t

A sajátvektor általános alakja tehát:

v‾=(xy)=(45tt)=t⋅(451) \underline{v} = \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} \frac{4}{5}t \\ t \end{pmatrix} = t \cdot \begin{pmatrix} \frac{4}{5} \\ 1 \end{pmatrix}

Ha el akarjuk kerülni a törteket a reprezentatív bázisvektorban, akkor választhatjuk a t=5t = 5 értéket, amivel az első sajátértékhez tartozó sajátvektort a következő egész számú aránnyal adhatjuk meg:

v‾1=(45) \underline{v}_1 = \begin{pmatrix} 4 \\ 5 \end{pmatrix}

Második sajátérték: λ₂ = −3

Hasonlóan járunk el:

(A+3I)v‾=0‾ (A+3I)\underline{v}=\underline{0}
(4455)(xy)=(00) \begin{pmatrix} 4&4\\ 5&5 \end{pmatrix} \begin{pmatrix}x\\y\end{pmatrix} {=} \begin{pmatrix}0\\0\end{pmatrix}

Az első sorból:

4x+4y=0 4x+4y=0

Tehát:

y=−x y=-x

Ha x=1x=1 , akkor y=−1y=-1 . Az egyik sajátvektor:

v‾2=(1−1) \underline{v}_2=\begin{pmatrix}1\\-1\end{pmatrix}

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)
Enter fullscreen mode Exit fullscreen mode

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ő:

a‾=(45) \underline{a} = \begin{pmatrix} 4 \\ 5 \end{pmatrix}

Szorozzuk meg az eredeti AA mátrixot ezzel a vektorral:

(45)(1452)(2430) \begin{array}{c|c} & \begin{pmatrix} 4 \\ 5 \end{pmatrix} \\ \hline \begin{pmatrix} 1 & 4 \\ 5 & 2 \end{pmatrix} & \begin{pmatrix} 24 \\ 30 \end{pmatrix} \end{array}
b‾=Aa‾=(2430)=6⋅(45) \underline{b} = A \underline{a} = \begin{pmatrix} 24 \\ 30 \end{pmatrix} = 6 \cdot \begin{pmatrix} 4 \\ 5 \end{pmatrix}

Nem lehet nem észrevenni, hogy az a‾\underline{a} és a b‾\underline{b} vektorok pontosan ugyanabba az irányba mutatnak.

Top comments (0)