Uge 3: Indre produkt-rum#
Nøglebegreber#
Vektorrum med indre produkt og norm
\(\mathbb{R}^n\) og \(\mathbb{C}^n\)
Projektioner på linjen
Ortonormal baser
Gram-Schmidt proceduren
Ortogonale og unitære matricer
Forberedelse og pensum#
Store Dag: Afsnit 2.3, 2.4, og Afsnit 2.5
Lille Dag: Afsnit 2.6
Python demo for Uge 3
Opgaver – Store Dag#
1: Ortonormal basis (koordinater). Håndregning.#
Spørgsmål a#
Udgør vektorerne
en ortonormal basis i \(\mathbb{R}^3\)?
Hint
Vektorerne skal være parvis ortogonale, dvs. de skal stå vinkelret på hinanden. Hvordan er det nu man tester det?
Hint
To vektorer er ortogonale, netop når deres skalarprodukt er 0, men der skal mere til for at de er ortonormale.
Hint
En basis er ortonormal, hvis vektorerne er indbyrdes ortogonale og hver især har længde (norm) 1.
Svar
\(\langle \pmb{u}_1, \pmb{u}_2 \rangle = \langle \pmb{u}_1, \pmb{u}_3 \rangle = \langle \pmb{u}_2, \pmb{u}_3 \rangle = 0\) og alle tre vektorer har norm 1, så de tre vektorer udgør en ortonormal basis for \(\mathbb{R}^3\).
Spørgsmål b#
Betragt vektoren \(\pmb{x} = [1,2,3]^T\). Udregn de indre produkter \(\langle \pmb{x}, \pmb{u}_k \rangle\) for \(k=1,2,3\).
Hint
Det er blot de sædvanlige prik-produkter \(\pmb{x} \cdot \pmb{u}_k\)
Spørgsmål c#
Lad os kalde basen \(\beta = \pmb{u}_1, \pmb{u}_2, \pmb{u}_3\). Angiv koordinatvektoren \({}_{\beta} \pmb{x}\) for \(\pmb{x}\) med hensyn til \(\beta\). Udregn normen af både \(\pmb{x}\) og koordinatvektoren \({}_{\beta} \pmb{x}\).
Spørgsmål d#
Dan \(3\times 3\)-matricen \(U = [\pmb{u}_1 \vert \pmb{u}_2 \vert \pmb{u}_3]\) med \(\pmb{u}_1, \pmb{u}_2, \pmb{u}_3\) som de tre søjler. Udregn \(U^T \pmb{x}\) og sammenlign resultatet med forrige opgave.
2: Ortonormal basis (konstruktion). Håndregning.#
Opstil en ortonormal basis i \(\mathbb{R}^3\), hvori
er den første basisvektor.
Hint
Du kan fx først gætte en enhedsvektor som der vinkelret på den angivne vektor.
Hint
Hvad med \(\left(0,0,1\right)\)?
Hint
Kan du gætte en til? Start blot med at finde en vektor der er vinkelret på både den angivne vektor og \(\left(0,0,1\right)\).
Hint
Hvad med \(\left(1,-1,0 \right)\)? Hvad mangler vi nu?
Hint
\(\left(1,-1,0 \right)\) skal normaliseres.
Svar
Et forslag på en ortonormal basis kan være
men der er flere mulige! Tænk over hvorfor det er tilfældet.
3: Ortonormalisering. Håndregning.#
Bestem løsningsmængden for den homogene ligning
og gør rede for at den er et underrum i \(\mathbb{R}^3\). Find en ortonormal basis for dette løsningsrum.
Hint
Hvis vi skal finde en ortonormal basis for løsningsrummet, skal vi først finde en basis for løsningsrummet, dvs. vi skal løse ligningen.
Hint
Lad \(x_2=t_1\) og \(x_3=t_2\).
Hint
Med \(x_2=t_1\) og \(x_3=t_2\) finder vi, at
men hvad er løsningsrummet så?
Hint
Løsningsrummet er \(\mathrm{span}\lbrace(-1,1,0),(-1,0,1)\rbrace\), så en basis kan udgøres af vektorerne
Så skal de bare ortonormaliseres.
Hint
Når to vektorer skal ortonormaliseres, skal vi dels dreje dem i forhold til hinanden inden for det rum, de udspænder, således at de bliver ortogonale (står vinkelret på hinanden) og fortsat udspænder det samme rum, og dels skal de normeres, dvs. forlænges eller forkortes, så de alle har længden 1.
Hint
Heldigvis kan vi blot gøre det ved at følge Gram-Schmidts metode.
Svar
En ortonormal basis for ligningens løsningsrum kan udgøres af vektorerne
4: Ortogonale projektioner#
Lad \(\boldsymbol{y}=(2,1,2) \in \mathbb{R}^3\) være givet. Da er projektionen af \(\boldsymbol{x} \in \mathbb{R}^3\) på linjen \(Y = \mathrm{span}\{\boldsymbol{y}\}\) givet ved:
hvor \(\boldsymbol{u} = \frac{\boldsymbol{y}}{||\boldsymbol{y}||}\).
Spørgsmål a#
Lad \(\boldsymbol{x} = (1,2,3) \in \mathbb{R}^3\). Udregn \(\operatorname{Proj}_Y(\boldsymbol{x})\), \(\operatorname{Proj}_Y(\boldsymbol{y})\) og \(\operatorname{Proj}_Y(\boldsymbol{u})\).
Spørgsmål b#
Vi opfatter som sædvanlig alle vektorer som søjlevektorer. Find nu \(3 \times 3\)-matricen \(P = \pmb{u} \pmb{u}^T\) og udregn både \(P\boldsymbol{x}\) og \(P\boldsymbol{y}\).
5: En ortonormal basis for et underrum af \(\mathbb{C}^4\)#
Spørgsmål a#
Find en orthonormal basis \(\pmb{u}_1, \pmb{u}_2\) for underrummet \(Y = \mathrm{span}\{\pmb{v}_1, \pmb{v}_2\}\) udspændt af vektorerne:
v1 = Matrix([I, 1, 1, 0])
v2 = Matrix([0, I, I, sqrt(2)])
Hint
Den kan findes ved hjælp af Gram-Schmidt proceduren. Tjek din udregning med SymPy-kommandoen GramSchmidt([v1,v2], orthonormal=True)
Spørgsmål b#
Lad
Udregn \(\langle \pmb{x}, \pmb{u}_1 \rangle\), \(\langle \pmb{x}, \pmb{u}_2 \rangle\) samt
Hvad giver denne linearkombination? Tilhører \(\pmb{x}\) underrummet \(Y\)?
6: En Python algoritme#
Spørgsmål a#
Betragt følgende kode og forklar hvad den gør. Inden du kører koden i en Jupyter notebook, skal du forklare hvad output bliver.
from sympy import *
from dtumathtools import *
init_printing()
x1, x2, x3 = symbols('x1:4', real=True)
eqns = [Eq(1*x1 + 2*x2 + 3*x3, 1), Eq(4*x1 + 5*x2 + 6*x3, 0), Eq(5*x1 + 7*x2 + 8*x3, -1)]
eqns
A, b = linear_eq_to_matrix(eqns,x1,x2,x3)
T = A.row_join(b) # augmented matrix
A, b, T
Spørgsmål b#
Vi fortsætter Jupyter notebook’en med følgende kode (lad være med at køre den endnu). Ved hjælp at håndregning skal du gennemgå koden (løb for-loops’ne igennem). Hvilken \(T\) matrix kommer der ud? Copy-paste koden til en chatbot fx https://copilot.microsoft.com/ (login med din dtu.dk-konto) og spørg chatbotten om den kan forklare koden linje for linje. Tjek resultatet ved at køre koden i en Python notebook. Husk at T.shape[0]
giver antallet af række i matricen \(T\).
for col in range(T.shape[0]):
for row in range(col + 1, T.shape[0]):
T[row, :] = T[row, :] - T[row, col] / T[col, col] * T[col, :]
T[col, :] = T[col, :] / T[col, col]
T
Spørgsmål c#
Skriv Python-kode der sørger for nuller over diagonalen i matricen \(T\) så \(T\) ender med at være på row reduced echelon form.
Note
Du skal ikke tage højde for eventuelle divisioner med nul (for generelle \(T\) matricer). Vi antager at udregningerne går godt.
Hint
Du skal bruge to for-loops, fx:
for col in range(T.shape[0] - 1, -1, -1):
for row in range(col - 1, -1, -1):
Husk at index \(-1\) i Python giver sidste element.
Hint
Spørg en chatbot fx https://copilot.microsoft.com/ (login med din dtu.dk-konto) om hjælp hvis du er gået i stå. Du bør dog først arbejde med opgaven på egen hånd.
Svar
# Backward Elimination: Create zeros above the diagonal
for col in range(T.shape[0] - 1, -1, -1):
for row in range(col - 1, -1, -1):
T[row, :] = T[row, :] - T[row, col] * T[col, :]
T
Spørgsmål d#
Hvad er det for en algoritme vi har implementeret? Test samme algoritme på:
x1, x2, x3, x4 = symbols('x1:5', real=True)
eqns = [Eq(1*x1 + 2*x2 + 3*x3, 1), Eq(4*x1 + 5*x2 + 6*x3, 0), Eq(4*x1 + 5*x2 + 6*x3, 0), Eq(5*x1 + 7*x2 + 8*x3, -1)]
A, b = linear_eq_to_matrix(eqns,x1,x2,x3,x4)
T = A.row_join(b) # augmented matrix
Svar
Det er Gaussian eliminationen til løsning af lineære ligningssystemer, se også Mat1a. Outputtet er row reduced echelon form af input matricen. Vi har ikke taget højde for søjle-ombytninger (og række-ombytninger) og derfor kan der blive divideret med nul hvis første \(n\) søjler af en \(n \times m\) matrix \(T\) ikke er lineært uafhængige.
7: Ortogonale polynomier#
Dette er en opgave fra lærebogen. Du kan finde hjælp der.
Betragt listen \(\alpha=1,x,x^{2},x^{3}\) af polynomier i \(P_{3}([-1,1])\) udstyret med \(L^{2}\)-indre produkt.
Spørgsmål a#
Argumenter for at \(\alpha\) er en liste af lineært uafhængige vektorer.
Hint
Antagelsen er at \(c_1 + c_2 x + c_3 x^2 + c_4 x^3 = 0\) for alle \(x \in [-1,1]\). Vi vil vise at \(c_1 = c_2 = c_3 = c_4 = 0\), da vi så har vist at polynomierne i \(\alpha\) er lineært uafhængige.
Hint
Vælg fire forskellige \(x\)-værdier og evaluer antagelsen der. Så får vi fire ligninger i de fire ubekendte \(c_1, c_2, c_3, c_4\). \(x\)-værdierne skal vælges så ligningsystemet kun har nulløsningen. (Hvorfor?)
Hint
Vi vælger fx \(x = 0, 1, -1, 1/2\). Dette giver følgende ligninger: \(c_{1} = 0, c_{1} + c_{2} + c_{3} + c_{4} = 0, c_{1} - c_{2} + c_{3} - c_{4} = 0, c_{1} + \frac{c_{2}}{2} + \frac{c_{3}}{4} + \frac{c_{4}}{8} = 0\)
Hint
Tjek at de fire ligninger kun har nulløsningen. Konkluder at de fire polynomier er lineært uafhængige.
Spørgsmål b#
Anvend Gram-Schmidt-proceduren på \(\alpha\) og vis at proceduren giver en normaliseret udgave af Legendre polynomierne.
Hint
For at udregne normerne og de indre produkter skal du bruge integrate
i SymPy (eller regne integralerne i hånden). Fx x = symbols('x', real=True)
og integrate(x**2, (x,-1,1))
.
Hint
Polynomiet \(u_1\) kan udregnes ved:
x = symbols('x', real=True)
v1 = 1
v2 = x
v3 = x**2
v4 = x**3
v1_norm = sqrt(integrate(v1**2, (x,-1,1)))
u1 = v1/v1_norm
u1
Hint
Polynomiet \(u_2\) kan udregnes ved:
w2 = v2 - integrate(v2*u1, (x,-1,1)) * u1
u2 = w2/sqrt(integrate(w2**2, (x,-1,1)))
u2
Hint
Polynomiet \(u_3\) kan udregnes ved:
w3 = v3 - integrate(v3*u1, (x,-1,1)) * u1 - integrate(v3*u2, (x,-1,1)) * u2
u3 = w3/sqrt(integrate(w3**2, (x,-1,1)))
Hint
Polynomiet \(u_4\) kan udregnes ved:
w4 = v4 - integrate(v4*u1, (x,-1,1)) * u1 - integrate(v4*u2, (x,-1,1)) * u2 - integrate(v4*u3, (x,-1,1)) * u3
u4 = w4/sqrt(integrate(w4**2, (x,-1,1)))
Svar
Svaret fås ved at køre koden angivet i ovenstående hints. Sammenlign svaret med legendre(0,x), legendre(1,x), legendre(2,x).factor(), legendre(3,x).factor()
. Der bør være en skaleringsfaktor til forskel.
Opgaver – Lille Dag#
1: Matrix-multiplikationer. Håndregning.#
Definer
Lad \(\pmb{a}_1, \pmb{a}_2,\pmb{a}_3,\pmb{a}_4\) angive søjlerne i \(A\). Lad \(\pmb{b}_1, \pmb{b}_2,\pmb{b}_3\) angive rækkerne i \(A\). Vi udregner nu \(A\pmb{x}\) på to forskellige måder
Spørgsmål a#
Metode 1: Som linearkombination af søjlerne. Udregn linearkombinationen
Spørgsmål b#
Metode 2: Som “prikprodukt” af rækkerne i \(A\) med \(x\). Udregn
Note
Da \(\pmb{b}_k\) er en rækkevektor, er \((\pmb{b}_k)^T\) en søjlevektor. Produktet \(\pmb{b}_k \pmb{x}\) svarer derfor til prikproduktet af \(\pmb{x}\) og \((\pmb{b}_k)^T\).
Spørgsmål c#
Udregn \(A\pmb{x}\) i SymPy og sammenlign med dine udregninger i de forrige opgaver.
2: Et underrum i \(\mathbb{C}^4\) og dets ortogonale komplement#
Lad i \(\mathbb{C}^4\) være givet vektorerne
Et underrum \(Y\) i \(\mathbb{C}^4\) er bestemt ved \(Y=\mathrm{span}\lbrace\pmb{v}_1,\pmb{v}_2,\pmb{v}_3,\pmb{v}_4\rbrace\).
Spørgsmål a#
v1 = Matrix([1,1,1,1])
v2 = Matrix([3*I,I,I,3*I])
v3 = Matrix([2,0,-2,4])
v4 = Matrix([4-3*I,2-I,-I,6-3*I])
Kør kommandoen GramSchmidt([v1,v2,v3,v4], orthonormal=True)
i Python. Hvad fortæller Python jer?
# GramSchmidt([v1, v2, v3, v4], orthonormal = True)
Spørgsmål b#
Vis nu at \((\pmb{v}_1,\pmb{v}_2,\pmb{v}_3)\,\) er en basis for \(Y\), og find koordinatvektoren for \(\pmb{v}_4\,\) med hensyn til denne basis.
Svar
Vektorerne \(\pmb{v}_1\), \(\pmb{v}_2\) og \(\pmb{v}_3\) er lineært uafhængige, mens \(\pmb{v}_4=2\pmb{v}_1-\pmb{v}_2+\pmb{v}_3\), så
udgør koordinatvektoren med hensyn til \(v\)-basis.
Spørgsmål c#
Angiv en ortonormal basis for \(Y\).
Hint
Vektorerne \(\pmb{v}_1\), \(\pmb{v}_2\) og \(\pmb{v}_3\) udgør en basis for \(Y\), så de skal blot ortonormaliseres med Gram-Schmidt.
Svar
udgør en ortonormal basis for \(Y\).
Spørgsmål d#
Find koordinatvektoren for \(\pmb{v}_4 \in Y\) med hensyn til ortonormal basen for \(Y\).
Hint
Det kan udregnes ved indre produkter (som vi plejer) eller ved et passende matrix-vektor produkt.
Spørgsmål e#
Bestem det ortogonale komplement \(Y^\perp\) i \(\mathbb{C}^4\) til \(Y\).
Hint
Gæt først på en vektor, og tjek om den ligger i \(Y\). Dvs. tjek at den er lineært uafhængig med basen for \(Y\).
Hint
Du kunne for eksempel gætte på (1,0,0,0).
Hint
For at være i det ortogonale komplement, skal vi finde en vektor der er ortogonal på basisvektorerne i \(Y\).
Hint
Anvend Gram-Schmidt fortsat fra spørgsmål b og tilføj blot den vektor du lige havde gættet på. Du behøver ikke normalisere vektoren i sidste skridt - det er nok at ortogonalisere. (Hvorfor?)
Svar
Det ortogonale komplement er et 1-dimensionelt underrum af \(\mathbb{C}^4\) sum udspændes af
Spørgsmål f#
Vælg en vektor \(\pmb{y}\) i \(Y^\perp\) og vælg en vektor \(\pmb{x}\) i \(Y\). Udregn \(\Vert \pmb{x} \Vert\), \(\Vert \pmb{y} \Vert\) og \(\Vert \pmb{x} + \pmb{y} \Vert\). Tjek at \(\Vert \pmb{x} \Vert^2 +\Vert \pmb{y} \Vert^2 = \Vert \pmb{x} + \pmb{y} \Vert^2\).
3: Ortogonal projektion på et plan#
Lad matricen \(U = [\pmb{u}_1, \pmb{u}_2]\) være givet ved:
Spørgsmål a#
Vis at \(\pmb{u}_1, \pmb{u}_2\) er en ortonormal basis for \(Y = \mathrm{span}\{\pmb{u}_1, \pmb{u}_2\}\).
Svar
Ved udregning vises at \(\langle \pmb{u}_1, \pmb{u}_2 \rangle = 0\) og \(\Vert \pmb{u}_1 \Vert = \Vert \pmb{u}_2 \Vert = 1\). Dette viser at \(\pmb{u}_1, \pmb{u}_2\) er en ortonormal liste af vektorer. Denne liste er derfor lineært uafhængig og altså en basis for \(Y\). Vi konkluderer at \(\pmb{u}_1, \pmb{u}_2\) en ortonormal basis for \(Y\).
Spørgsmål b#
Lad \(P = U U^* \in \mathbb{R}^{3 \times 3}\). Dette vil give os en projektionsmatrix som beskriver den ortogonale projektion \(\pmb{x} \mapsto P \pmb{x}\), \(\mathbb{R}^3 \to \mathbb{R}^3\) på planen \(Y = \mathrm{span}\{\pmb{u}_1, \pmb{u}_2\}\). Verificer at \(P^2 = P\), \(P \pmb{u}_1 = \pmb{u}_1\), og \(P \pmb{u}_2 = \pmb{u}_2\).
Svar
Ud fra dette vises let at \(P \pmb{u}_1 = \pmb{u}_1\), og \(P \pmb{u}_2 = \pmb{u}_2\). Faktisk gælder der at \(P (c_1 \pmb{u}_1 + c_2 \pmb{u}_2) = c_1 \pmb{u}_1 + c_2 \pmb{u}_2\) for alle valg af \(c_1, c_2 \in \mathbb{R}\).
Spørgsmål c#
Vælg en vektor \(\pmb{x} \in \mathbb{R}^3\), der ikke tilhører \(Y\) og find projektionen \(\mathrm{proj}_Y(\pmb{x})\) af \(\pmb{x}\) ned på planen \(Y\). Illustrer \(\pmb{x}\), \(Y\) og \(\mathrm{proj}_Y(\pmb{x})\) i et plot.
Svar
Man kan fx vælge \(\pmb{x} = [1,2,3]^T\). Man udregner så \(\mathrm{proj}_Y(\pmb{x}) = P \pmb{x} = [2,0,2]^T\). Bemærk at \([2,0,2]^T = 2\sqrt{2} \pmb{u}_2 \in Y\).
U = Matrix([[sqrt(3)/3, sqrt(2)/2], [sqrt(3)/3, 0], [-sqrt(3)/3, sqrt(2)/2]])
P = U * U.T
x = Matrix([1,2,3])
t1, t2 = symbols('t1 t2')
r = t1 * U[:,0] + t2 * U[:,1]
p = dtuplot.plot3d_parametric_surface(r[0], r[1], r[2], (t1, -5, 5), (t2, -5, 5), show = False, rendering_kw = {"alpha": 0.5})
p.extend(dtuplot.scatter((x, P*x), show = False))
p.xlim = [-5,5]
p.ylim = [-5,5]
p.zlim = [-5,5]
p.show()
Spørgsmål d#
Vis at \(\pmb{x} - \mathrm{proj}_Y(\pmb{x})\) tilhører \(Y^\perp\).
Hint
Med valget \(\pmb{x} = [1,2,3]^T\) fås \(\pmb{y} := \pmb{x} - \mathrm{proj}_Y(\pmb{x}) = [-1,2,1]^T\). Du skal vise at \(\pmb{y}\)-vektoren er ortogonal på alle vektorer i \(Y\).
Hint
En vilkårlig vektor i \(Y\) kan skrives som \(c_1 \pmb{u}_1 + c_2 \pmb{u}_2\), hvor \(c_1, c_2 \in \mathbb{R}\).
Hint
Vis at \(\langle \pmb{y}, \pmb{u}_1 \rangle = 0\) og \(\langle \pmb{y}, \pmb{u}_2 \rangle = 0\)
Svar
Da \(\langle c_1 \pmb{u}_1 + c_2 \pmb{u}_2, \pmb{y} \rangle = c_1 \langle \pmb{u}_1 , \pmb{y} \rangle + c_2 \langle \pmb{u}_2 , \pmb{y} \rangle = 0 + 0 = 0\) ses at \(\pmb{y} = [-1,2,1]^T \in Y^\perp\).
4: Unitære matricer#
Lad matricen \(F\) være givet ved:
n = 4
F = 1/sqrt(n) * Matrix(n, n, lambda k,j: exp(-2*pi*I*k*j/n))
F
Afgør om følgende udsagn er sande eller falske:
\(F\) er unitær
\(F\) er invertible
\(F\) er ortogonal
\(F\) er symmetrisk
\(F\) er hermitisk
\(F\)’s søjler er en orthonormal basis for \(\mathbb{C}^4\)
\(F\)’s søjler er en orthonormal basis for \(\mathbb{R}^4\)
\(-F = F^{-1}\)
Svar
Ja
Ja
Nej
Ja
Nej
Ja
Nej
Nej
Bemærk: Matricen hedder Fourier-matricen. Den opfylder for alle \(n\) at: \(\overline{F} = F^* = F^{-1}\) og \(F = F^T\). Afbildningen \(\pmb{x} \mapsto F^* \pmb{x}\) kaldes den diskrete Fourier transform og er vigtig i mange dele af ingeniørvidenskaben. Se fx https://bootcamp.uxdesign.cc/the-most-important-algorithm-of-all-time-9ff1659ff3ef - Fast Fourier transform er samme afbildning som \(\pmb{x} \mapsto F^* \pmb{x}\), blot implementeret på en smart måde.