Ovde rešavamo zadatke iz MML Book
Koristićemo R i matlib biblioteku.
library(matlib)
Tekst je u formatu Rmd (R markdown) i može se knit aplikacijom pretvoriti u html (ili pdf) dokument.
Na osnovu Teoreme 3.5, \[[ x_1, x_2 ] \begin{bmatrix} 1 & -1 \\ -1 & 2 \end{bmatrix} \begin{bmatrix} y_1\\ y_2\\ \end{bmatrix} = x_1 y_1 - ( x_1 y_2 + x_2 y_1 ) + 2 x_2 y_2 = \langle {\boldsymbol x}, {\boldsymbol y} \rangle\] imamo unutrašnji proizvod, jer je matrica \(A = \begin{bmatrix} 1 & -1 \\ -1 & 2 \end{bmatrix}\) simetrična i pozitivno definitna: \[[ x_1, x_2 ] \begin{bmatrix} 1 & -1 \\ -1 & 2 \end{bmatrix} \begin{bmatrix} x_1\\ x_2\\ \end{bmatrix} = x_1^2 - 2 x_1 x_2 + x_2^2 + x_2^2 = ( x_1 - x_2 )^2 + x_2 ^2\] Naime, poslednji izraz je nenegativan, a jednak je \(0\) samo za \(x_1 = x_2 = 0\).
Matrica \(A\) nije simetrična, nije unutrašnji proizvod:
x = matrix(c(1,0),ncol = 1); y = matrix(c(0,1),ncol = 1); A = matrix(c(2,1,0,2),ncol = 2); A
## [,1] [,2]
## [1,] 2 0
## [2,] 1 2
t(x) %*% A %*% y
## [,1]
## [1,] 0
t(y) %*% A %*% x
## [,1]
## [1,] 1
Udaljenost između vektora \(x\) i \(y\) je \(d ( x, y ) = || x - y ||\). Koristimo normu \(|| z || = \sqrt{ \langle z, z \rangle}\), \(z = x - y\).
x = matrix(c(1,2,3),ncol = 1); y = matrix(c(-1,-1,0),ncol = 1); A = matrix(c(2,1,0,1,3,-1,0,-1,2),ncol = 3); A
## [,1] [,2] [,3]
## [1,] 2 1 0
## [2,] 1 3 -1
## [3,] 0 -1 2
z = x - y; z
## [,1]
## [1,] 2
## [2,] 3
## [3,] 3
sqrt(t(z) %*% z)
## [,1]
## [1,] 4.690416
norm(z, type = "2")
## [1] 4.690416
sqrt(t(z) %*% A %*% z)
## [,1]
## [1,] 6.855655
Kosinus ugla \(\theta\) između vektora \(x\) i \(y\) je \(\cos \theta = \langle x, y \rangle / \sqrt{\langle x, x \rangle \langle y, y \rangle}\).
x=matrix(c(1,2),ncol = 1); y=matrix(c(-1,-1),ncol = 1);
B=matrix(c(2,1,1,3),ncol=2); B
## [,1] [,2]
## [1,] 2 1
## [2,] 1 3
acos((t(x) %*% y)/sqrt((t(x) %*% x))/sqrt((t(y) %*% y)))
## [,1]
## [1,] 2.819842
acos((t(x) %*% B %*% y)/sqrt(t(x) %*% B %*% x)/sqrt(t(y) %*% B %*% y))
## [,1]
## [1,] 2.941046
#########
# 3.5 #
#########
A = matrix(c(0,-1,2,0,2,1,-3,1,-1,2,-3,4,1,2,1,-1,-3,5,0,7),ncol=4); A
## [,1] [,2] [,3] [,4]
## [1,] 0 1 -3 -1
## [2,] -1 -3 4 -3
## [3,] 2 1 1 5
## [4,] 0 -1 2 0
## [5,] 2 2 1 7
x=matrix(c(-1,-9,-1,4,1),ncol=1); x
## [,1]
## [1,] -1
## [2,] -9
## [3,] -1
## [4,] 4
## [5,] 1
gaussianElimination(A,x)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 0 0 1 -1
## [2,] 0 1 0 2 2
## [3,] 0 0 1 1 -1
## [4,] 0 0 0 0 8
## [5,] 0 0 0 0 -6
B=A[,1:3]; B
## [,1] [,2] [,3]
## [1,] 0 1 -3
## [2,] -1 -3 4
## [3,] 2 1 1
## [4,] 0 -1 2
## [5,] 2 2 1
Sastavili smo matricu \(A\) od generatora prostora \(U\) i primenili Gausove eliminacije. Sistem \(A l = x\) nema rešenja, \(x \notin U\). Vidimo i da generatori nisu linearno nezavisni, stoga ćemo zadržati u matrici \(B\) samo one kojima odgovaraju bazične kolone. To su prve tri, gde su pivoti u RREF dobijenom Gausovim eliminacijama.
# a
inv(t(B)%*%B)%*%t(B)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.5238095 0.17460317 1.0317460 0.14285714 -0.4444445
## [2,] -0.5238095 -0.28571428 -0.8095238 -0.14285714 0.6666667
## [3,] -0.3333333 -0.00000002 -0.3333333 -0.00000001 0.3333333
l=inv(t(B)%*%B)%*%t(B)%*%x; l
## [,1]
## [1,] -3
## [2,] 4
## [3,] 1
B1=MoorePenrose(B); B1
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.5238095 1.746032e-01 1.0317460 1.428571e-01 -0.4444444
## [2,] -0.5238095 -2.857143e-01 -0.8095238 -1.428571e-01 0.6666667
## [3,] -0.3333333 5.689893e-15 -0.3333333 -3.559653e-15 0.3333333
round(B1,digits=8)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.5238095 0.1746032 1.0317460 0.1428571 -0.4444444
## [2,] -0.5238095 -0.2857143 -0.8095238 -0.1428571 0.6666667
## [3,] -0.3333333 0.0000000 -0.3333333 0.0000000 0.3333333
printMatEqn(B1, fractions = TRUE)
## B1
## 11/21 11/63 65/63 1/7 -4/9
## -11/21 -2/7 -17/21 -1/7 2/3
## -1/3 0 -1/3 0 1/3
l=B1%*%x; l
## [,1]
## [1,] -3
## [2,] 4
## [3,] 1
p=B%*%l; p
## [,1]
## [1,] 1
## [2,] -5
## [3,] -1
## [4,] -2
## [5,] 3
matrix(Proj(x,B))
## [,1]
## [1,] 1
## [2,] -5
## [3,] -1
## [4,] -2
## [5,] 3
Pošto je matrica \(B\) punog ranga, Moore-Penrose pseudo inverse možemo dobiti formulom \(( B^T B ) ^{-1} B^T\). Koordinate projekcije u bazi prostra kolona matrice \(B\) su \(l = [ -3, 4, 1 ]^T\). U standardnoj bazi to je \(p = B \ l = [ 1, -5, -1, -2, 3 ]^T\)
# b
px=p-x; px
## [,1]
## [1,] 2.000000e+00
## [2,] 4.000000e+00
## [3,] -3.574918e-14
## [4,] -6.000000e+00
## [5,] 2.000000e+00
round(px,digits=8)
## [,1]
## [1,] 2
## [2,] 4
## [3,] 0
## [4,] -6
## [5,] 2
t(px)%*%px
## [,1]
## [1,] 60
sqrt(t(px)%*%px)
## [,1]
## [1,] 7.745967
#########
# 3.6 #
#########
A = matrix(c(2,1,0,1,2,-1,0,-1,2),ncol=3); A
## [,1] [,2] [,3]
## [1,] 2 1 0
## [2,] 1 2 -1
## [3,] 0 -1 2
Unutrašnji proizvod računamo preko matrica \(\langle x, y \rangle = x^T A \ y\). Napravimo matricu \(B= [ {\boldsymbol e}_1, {\boldsymbol e}_3 ]\) baze prostora \(U\). Nađimo matricu projektovanja \(P\) vektora u standardnoj bazi na prostor \(U\). Pošto je baza \(B\) ortonormirana, formula za matricu projekcije je \(P = B \ ( B^T \ A \ B )^{-1} \ B^T \ A\).
# a
B = matrix(c(1,0,0,0,0,1),ncol=2); B
## [,1] [,2]
## [1,] 1 0
## [2,] 0 0
## [3,] 0 1
P = B %*% inv(t(B) %*% A %*% B) %*% t(B) %*% A; P
## [,1] [,2] [,3]
## [1,] 1 0.5 0
## [2,] 0 0.0 0
## [3,] 0 -0.5 1
x = matrix(c(0,1,0),ncol=1); x
## [,1]
## [1,] 0
## [2,] 1
## [3,] 0
y = P %*% x; y
## [,1]
## [1,] 0.5
## [2,] 0.0
## [3,] -0.5
Dobili smo koordinate projekcije \(y = [\frac12, 0, -\frac12 ]^T\) u standardnoj bazi.
# b
z = x - y; z
## [,1]
## [1,] -0.5
## [2,] 1.0
## [3,] 0.5
t(z) %*% A %*% z
## [,1]
## [1,] 1
sqrt(t(z) %*% A %*% z)
## [,1]
## [1,] 1
#########
# 3.8 #
#########
A = matrix(c(1,1,1,-1,2,0),ncol=2); A
## [,1] [,2]
## [1,] 1 -1
## [2,] 1 2
## [3,] 1 0
z = GramSchmidt(A, normalize=FALSE); z
## [,1] [,2]
## [1,] 1 -1.3333333
## [2,] 1 1.6666667
## [3,] 1 -0.3333333
z %*% diag(c(1,-3))
## [,1] [,2]
## [1,] 1 4
## [2,] 1 -5
## [3,] 1 1
Vektori koji čine ortogonalnu bazu su \([ 1, 1, 1 ]^T\) i \([ 4, -5, 1 ]^T\). Kad ih normiramo, dobijamo \([ 1, 1, 1 ]^T/ \sqrt{3}\) i \([ 4, -5, 1 ]^T/ \sqrt{42}\).
#########
# 3.10 #
#########
theta = pi/6
A = matrix(c(cos(theta),sin(theta),-sin(theta),cos(theta)),ncol=2); A
## [,1] [,2]
## [1,] 0.8660254 -0.5000000
## [2,] 0.5000000 0.8660254
x1 = matrix(c(2,3),ncol=1); x1
## [,1]
## [1,] 2
## [2,] 3
x2 = matrix(c(0,-1),ncol=1); x2
## [,1]
## [1,] 0
## [2,] -1
A %*% x1
## [,1]
## [1,] 0.2320508
## [2,] 3.5980762
A %*% x2
## [,1]
## [1,] 0.5000000
## [2,] -0.8660254