Đại số tuyến tính cho Khoa học dữ liệu với R
Eric Eager
Data Scientist at Pro Football Focus
Nếu các trị riêng $\lambda_1, \lambda_2, ..., \lambda_n$ của $A$ là khác nhau và $\vec{v}_1, \vec{v}_2, ..., \vec{v}_n$ là tập vectơ riêng tương ứng, thì tập này tạo thành một cơ sở cho không gian vectơ $n$ chiều.
Nói cách khác, giả sử ma trận $A$ có một cơ sở vectơ riêng $\vec{v}_1, \vec{v}_2, ... \vec{v}_n$ với các trị riêng tương ứng, phân biệt $\lambda_1, \lambda_2, ... \lambda_n$, thì mọi vectơ $n$ chiều đều biểu diễn được dưới dạng tổ hợp tuyến tính của các vectơ này, tức là $$\vec{x} = c_1\vec{v}_1 + c_2\vec{v}_2 + ... + c_n\vec{v}_n.$$
Áp dụng ma trận $A$ lên $\vec{x}$ và dùng tính chất $A\vec{v}_j = \lambda_j \vec{v}_j$, ta có phép phân rã đơn giản:
$$A\vec{x} = c_1\lambda_1\vec{v}_1 + c_2\lambda_2\vec{v}_2 + ... + c_n\lambda_n\vec{v}_n.$$
Vì vậy, các cặp riêng biến phép nhân ma trận thành tổ hợp tuyến tính của các phép nhân vô hướng!
Nếu ta nhân lặp lại với ma trận $A$:
$$A A\vec{x} = $$ $$ = A(c_1\lambda_1\vec{v}_1 + c_2\lambda_2\vec{v}_2 + ... + c_n\lambda_n\vec{v}_n)$$ $$ = c_1\lambda_1^2\vec{v}_1 + c_2\lambda_2^2\vec{v}_2 + ... + c_n\lambda_n^2\vec{v}_n,$$
nói chung: $$A^t\vec{x} = c_1\lambda_1^t\vec{v}_1 + c_2\lambda_2^t\vec{v}_2 + ... + c_n\lambda_n^t\vec{v}_n.$$
Do đó, nhân ma trận liên tiếp không phải là nhân vô hướng liên tiếp (lũy thừa)!
Ngoài ra, nếu một trị riêng lớn hơn tất cả các trị riêng còn lại, chênh lệch sẽ tăng dần khi $t$ lớn lên.
print(M)eigen(M)
[,1] [,2] [,3] [,4]
[1,] 0.980 0.005 0.005 0.010
[2,] 0.005 0.980 0.010 0.005
[3,] 0.005 0.010 0.980 0.005
[4,] 0.010 0.005 0.005 0.980
eigen() decomposition
$`values`
[1] 1.00 0.98 0.97 0.97
$vectors
[,1] [,2] [,3] [,4]
[1,] -0.5 0.5 0.000000e+00 7.071068e-01
[2,] -0.5 -0.5 -7.071068e-01 1.132427e-14
[3,] -0.5 -0.5 7.071068e-01 -2.442491e-15
[4,] -0.5 0.5 -1.382228e-14 -7.071068e-01
print(M)
[,1] [,2] [,3] [,4]
[1,] 0.980 0.005 0.005 0.010
[2,] 0.005 0.980 0.010 0.005
[3,] 0.005 0.010 0.980 0.005
[4,] 0.010 0.005 0.005 0.980
Lambda <- eigen(M)
v1 <- Lambda$vectors[, 1]/sum(Lambda$vectors[, 1])
print(v1)
0.25 0.25 0.25 0.25
Đại số tuyến tính cho Khoa học dữ liệu với R