Lineární zobrazení

Tomáš Kalvoda, KAM FIT ČVUT, 2019

Příklad 6.8

Tento příklad je poměrně typický a obsahuje většinu pojmů týkajících se lineárního zobrazení. Použijeme ho proto jako ukázkový.

Máme lineární zobrazení, resp. operátor, A:R4R4A: \mathbb{R}^4 \to \mathbb{R}^4 zadané předpisem

A(α1,α2,α3,α4):=(α1,α1α2,α1+2α3,α4),A(\alpha_1, \alpha_2, \alpha_3, \alpha_4) := (\alpha_1, \alpha_1 - \alpha_2, \alpha_1 + 2\alpha_3, \alpha_4),

pro každý vektor (α1,α2,α3,α4)R4(\alpha_1,\alpha_2,\alpha_3,\alpha_4)\in\mathbb{R}^4. Linearitu tohoto zobrazení na tomto místě nebudeme ověřovat, plyne velmi jednoduše přímo z definice (ověřte, že A(x+βy)=Ax+βAyA(x + \beta y) = Ax + \beta Ay pro každé βR,x,yR4\beta\in\mathbb{R}, x,y\in\mathbb{R}^4).

Pro naše účely v SageMath stačí pracovat v Q4\mathbb{Q}^4. Následuje definice našeho vektorového prostoru a samotného zobrazení AA.

V = QQ^4
def A(v):
    # pozor na indexování vektorů od 0
    return V([v[0], v[0] - v[1], v[0] + 2*v[2], v[3]])

Tato definice přesně odpovídá té v zadání Příkladu 6.8 o pár řádků výše. AA tedy na vektorech působí dle definice například takto

A(V([1,2,3,4]))
(1, -1, 7, 4)
A(V([1,0,0,0]))
(1, 1, 1, 0)

AA bere na vstupu čtveřici čísel, vektor z R4\mathbb{R}^4, a vyplivne výsledek, opět vektor z R4\mathbb{R}^4.

Dvě báze a připomenutí souřadnic vektoru

V prostoru VV máme v Příkladu 6.8 zadány dvě báze:

X = [
    V((1, 0, -1, 1)),
    V((2, 1, 0, -1)),
    V((0, 2, -1, 1)),
    V((2, -1, 1, 0))
]
Y = [
    V((0, 0, 0, 1)),
    V((0, 0, -1, 1)),
    V((0, 1, -1, 1)),
    V((1, 1, 1, 1))
]

# Abychom snadno mohli pracovat se souřadnicemi ve zvolených bázích,
# změníme si ve V bázi (v definici V výše se implicitně bere standardní).
VX = V.span_of_basis(X)
VY = V.span_of_basis(Y)

Máme-li například vektor w=(1,2,3,4)Vw = (1,2,3,4) \in V, pak jeho souřadnice vzhledem k bázi X\mathcal{X} jsou wX=(3,5/2,9/2,9/2)w_\mathcal{X} = (-3, -5/2, 9/2, 9/2). Tj. platí w=3x152x2+92x3+92x4w = -3x_1 - \frac{5}{2}x_2 + \frac{9}{2}x_3 + \frac{9}{2}x_4.

Skutečně, nejprve zadefinujme ww:

w = V((1, 2, 3, 4))
show(w)
(1,2,3,4)\newcommand{\Bold}[1]{\mathbf{#1}}\left(1,\,2,\,3,\,4\right)

Nyní spočtěme souřadnice ww v bázi X\mathcal{X}:

cxW = VX.coordinates(w)
show(cxW)
[3,52,92,92]\newcommand{\Bold}[1]{\mathbf{#1}}\left[-3, -\frac{5}{2}, \frac{9}{2}, \frac{9}{2}\right]

A otestujme požadovanou rovnost:

# pozor na indexování listů od 0, range(4) = {0,1,2,3}.
sum([ cxW[j] * X[j] for j in range(4) ])
(1, 2, 3, 4)

To je (nepřekvapivě!) skutečně vektor ww. Podívejme se na jeho souřadnice v bázi Y\mathcal{Y}:

cyW = VY.coordinates(w)
show(cyW)
[5,3,1,1]\newcommand{\Bold}[1]{\mathbf{#1}}\left[5, -3, 1, 1\right]

To je sice jiná čtveřice, ale stále platí následující vztah:

sum([ cyW[j] * Y[j] for j in range(4) ])
(1, 2, 3, 4)

"Přímý" výpočet matice lineárního zobrazení

Máme vypočítat matici XAY{}^{\mathcal{X}} A^\mathcal{Y}. O té z přednášky víme, že má ve sloupcích postupně souřadnice AA-obrazů bazických vektorů báze X\mathcal{X} v bázi Y\mathcal{Y}. Tedy

(XAY):j=(Axj)Y,j=1,2,,#X.\big({}^{\mathcal{X}} A^\mathcal{Y}\big)_{: j} = (Ax_j)_\mathcal{Y}, \quad j=1,2,\ldots,\#\mathcal{X}.

Klíčová vlasnost (z které vlastně lze i definici výše odvodit) této matice je následující:

XAYxX=(Ax)Y.{}^{\mathcal{X}} A^\mathcal{Y} \cdot x_\mathcal{X} = (Ax)_\mathcal{Y}.

O co zde je? Původní zobrazení pracuje s vektory, matice lineárního zobrazení reprezentuje působení tohoto zobrazení pomocí souřadnic vektorů.

Sestavme matici našeho zobrazení AA vzhledem k bázím X\mathcal{X} a Y\mathcal{Y}, přímo z definice:

XAY = matrix(QQ, 4) # alokace prázdné matice

for j in range(4):
    XAY[:, j] = V(VY.coordinates(A(X[j])))

show(XAY)
(2310214301211202)\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} -2 & -3 & -1 & 0 \\ 2 & 1 & 4 & -3 \\ 0 & -1 & -2 & 1 \\ 1 & 2 & 0 & 2 \end{array}\right)

(Ručně bychom napočítali obrazy bazických vektorů báze XX a poté jejich souřadnice v bázi YY; provedli bychom tedy několik aplikací zobrazení AA a poté bychom vyřešili jeden GEM s více pravými stranami).

Jak tato matice souvisí se zobrazením AA (viz definice pomocí funkce výše)?

Stručně řečeno, souvislost mezi lineárním zobrazením a jeho maticí vzhledem k jistým bázím je následující:

Ukažme si to opět na našem vektoru ww. Z pohledu AA je to jednoduché.

w = V([1, 2, 3, 4])
print("vzor:")
show(w)
print("obraz:")
show(A(w))
vzor:
(1,2,3,4)\newcommand{\Bold}[1]{\mathbf{#1}}\left(1,\,2,\,3,\,4\right)
obraz:
(1,1,7,4)\newcommand{\Bold}[1]{\mathbf{#1}}\left(1,\,-1,\,7,\,4\right)

Aplikujme matici (zleva) zobrazení XAY{}^\mathcal{X} A^\mathcal{Y} na souřadnice vektoru ww v bázi X\mathcal{X}. Dostaneme souřadnice výstupního vektoru AwAw v bázi Y\mathcal{Y}:

cyAw = XAY * V(VX.coordinates(w))
show(cyAw)
(9,4,2,1)\newcommand{\Bold}[1]{\mathbf{#1}}\left(9,\,-4,\,-2,\,1\right)

Pokud pomocí těchto souřadnic napočteme zpětně AwAw, měli bychom dostat stejný výsledek jako výše.

# Aw = 
sum([ cyAw[j] * Y[j] for j in range(4) ])
(1, -1, 7, 4)

Opravdu!

Co je dobré si uvědomit:

XAX = matrix(QQ, 4) # alokace prázdné matice

for j in range(4):
    XAX[:, j] = V(VX.coordinates(A(X[j])))

show(XAX)
(358512541102511012121327211075111072)\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} \frac{3}{5} & -\frac{8}{5} & \frac{12}{5} & -4 \\ \frac{1}{10} & \frac{2}{5} & -\frac{1}{10} & -\frac{1}{2} \\ \frac{1}{2} & 1 & -\frac{3}{2} & \frac{7}{2} \\ \frac{1}{10} & \frac{7}{5} & -\frac{11}{10} & \frac{7}{2} \end{array}\right)

Nebo YAY{}^\mathcal{Y} A^\mathcal{Y}:

YAY = matrix(QQ, 4) # alokace prázdné matice

for j in range(4):
    YAY[:, j] = V(VY.coordinates(A(Y[j])))

show(YAY)
(1112023100110001)\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} 1 & -1 & -1 & 2 \\ 0 & 2 & 3 & -1 \\ 0 & 0 & -1 & -1 \\ 0 & 0 & 0 & 1 \end{array}\right)

Tyto různé matice reprezentují stále stejný operátor, jen počítají jeho působení z jiných bazí do jiných bazí, proto jsou to nutně jiné matice.

Výpočet pomocí matic přechodu

Vzhledem k tomu jak jsou matice lineárních zobrazení definované a jaký je jejich význam popsaný výše, tak by nemělo být překvapující jak souvisí se skládáním zobrazení. Pro přípustné báze a dvě lineární zobrazení zřejmě platí

X(AB)Y=ZAYXBZ.{}^\mathcal{X} (A \circ B)^\mathcal{Y} = {}^\mathcal{Z} A^\mathcal{Y} \cdot {}^\mathcal{X} B^\mathcal{Z}.

Jen si představte co tento vztah říká, jsou dva ekvivalentní způsoby jak z xXx_\mathcal{X} spočítat (ABx)Y(ABx)_\mathcal{Y}:

Druhou ingrediencí, kterou budeme potřebovat, je jednoduché pozorování týkající se převodu souřadnic jednoho vektoru z jedné báze do druhé. K tomu lze využít identické zobrazení (které je jistě lineární), Ex=xE x = x. Toto zobrazení tedy s vektorem xx nic neudělá. Z toho plyne, že příslušná matice zobrazení (tzv. matice přechodu) XEY{}^\mathcal{X} E^\mathcal{Y} při násobení převádí souřadnice z báze X\mathcal{X} do báze Y\mathcal{Y}, tedy

XEYxX=xY.{}^\mathcal{X} E^\mathcal{Y} \cdot x_\mathcal{X} = x_\mathcal{Y}.

Dáme-li si tyto dvě informace dohromady, tak

XAY=WEYVAWXEV.{}^\mathcal{X} A^\mathcal{Y} = {}^\mathcal{W} E^\mathcal{Y} \cdot {}^\mathcal{V} A^\mathcal{W} \cdot {}^\mathcal{X} E^\mathcal{V}.

Pomocí matic přechodu, které je snadné sestavit, tak můžeme převádět matice zobrazení mezi libovolnými bázemi.

Jak tuto mašinérii použít v našem případě? Je snadné sestavit EAE{}^\mathcal{E} A^\mathcal{E}. Skutečně, stačí aplikovat AA a souřadnice výsledků ve standardní bázi máme ihned:

# standardní báze:
V.basis()
[
(1, 0, 0, 0),
(0, 1, 0, 0),
(0, 0, 1, 0),
(0, 0, 0, 1)
]
EAE = matrix(QQ, 4)

for j in range(4):
    EAE[:, j] = A(V.basis()[j])

show(EAE)
(1000110010200001)\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 1 & -1 & 0 & 0 \\ 1 & 0 & 2 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right)

My však chceme

XAY=EEYEAEXEE.{}^\mathcal{X} A^\mathcal{Y} = {}^\mathcal{E} E^\mathcal{Y} \cdot {}^\mathcal{E} A^\mathcal{E} \cdot {}^\mathcal{X} E^\mathcal{E}.

Matici XEE{}^\mathcal{X} E^\mathcal{E} je snadné sestavit, je to prostě matice mající bazické vektory báze X\mathcal{X} ve sloupcích:

XtoE = matrix(QQ, X).transpose()
show(XtoE)
(1202012110111110)\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} 1 & 2 & 0 & 2 \\ 0 & 1 & 2 & -1 \\ -1 & 0 & -1 & 1 \\ 1 & -1 & 1 & 0 \end{array}\right)

Podobně je snadné sestavit YEE{}^\mathcal{Y} E^\mathcal{E}:

YtoE = matrix(QQ, Y).transpose()
show(YtoE)
(0001001101111111)\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & -1 & -1 & 1 \\ 1 & 1 & 1 & 1 \end{array}\right)

My ovšem chceme EEY=(YEE)1{}^\mathcal{E} E^\mathcal{Y} = \big({}^\mathcal{Y} E^\mathcal{E}\big)^{-1}:

EtoY = YtoE.inverse()
show(EtoY)
(2011211011001000)\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} -2 & 0 & 1 & 1 \\ 2 & -1 & -1 & 0 \\ -1 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{array}\right)

Konečně, pro naší matici XAY{}^\mathcal{X} A^\mathcal{Y} platí

show(EtoY * EAE * XtoE)
(2310214301211202)\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} -2 & -3 & -1 & 0 \\ 2 & 1 & 4 & -3 \\ 0 & -1 & -2 & 1 \\ 1 & 2 & 0 & 2 \end{array}\right)

Což je samozřejmě stejný výsledek.