numpy矩陣的特徵值和特徵向量,奇異值分解

1. 特徵值和特徵向量

對於n階方陣A,如果存在數a和非零n維列向量x,使得Ax=ax,則稱a是矩陣A的一個特徵值,x是矩陣A屬於特徵值a的特徵向量
eg1:

import numpy as np
A = np.mat('1 6 3 7;3 8 4 6;1 4 9 5;6 8 3 5')
print('原矩陣:A=\n',A)

#提取特徵值,特徵向量
eigvals,eigvecs = np.linalg.eig(A)
print('特徵值數組:\n',eigvals)
print('特徵向量:\n',eigvecs)

#逆向推導原矩陣
A2 = eigvecs* np.diag(eigvals)*eigvecs.I
print('通過特徵值特徵向量反推原矩陣:A2=\n',A2)

2. 奇異值分解(svd)

有一個矩陣M,可以分解爲3個矩陣U、S、V,使得U x S x V等於M。U與V都是正交矩陣(乘以自身的轉置矩陣結果爲單位矩陣)。那麼S矩陣主對角線上的元素稱爲矩陣M的奇異值,其它元素均爲0。

import numpy as np
M = np.mat('4 11 14; 8 7 -2')
# 奇異值分解
U, sv, V = np.linalg.svd(M, full_matrices=False)
print(U * U.T)
print(V * V.T)
print(sv)

#利用奇異值,和正交矩陣重構原矩陣。
S = np.diag(sv)
print(S)
print(U * S * V)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章