我嘗試使用eig_pair來獲得相同大小的一對稠密方陣A和B的特徵分解,例如A * eigvec = B * eigvec * diagmat(eigval),但結果與Matlab不匹配功能eig。例如:C++線性代數庫armadillo:如何使用eig_pair獲得與Matlab中的eig函數相同的結果?
在MatlabA= [1,2;3,4] B=[2,4;5,8]
:
[u,v] = eig(A,B)
結果:
u =
-1.0000 -0.0000
0.5000 -1.0000
v =
1.0000 0
0 0.5000
在犰狳:
eig_pair(v,u,A,B)
結果: U:
9.9301e-016 -1.0000e+000
1.0000e+000 5.0000e-001
五:
0.5000
1.0000
我的問題是:如何獲得的u匹配在Matlab中的結果,確定價值和v? 期待您的回覆!
你的結果是相同的排列... – Shai
特徵向量並不是唯一的。如果_u_是一個特徵向量,所有_lambda!= 0_都是_lambda * u_。 (根據定義,Eigenvectors不能爲0) –
你是對的..但我不知道如何找到排列並將結果轉換爲匹配Matlab .. – user3459578