[英]Complex eigenvectors for symmetric matrix in MATLAB
我有以下代碼片段,試圖計算真實對稱矩陣的本征分解
K = 3;
n = 10;
Z = rand(n,K);
B = rand(K,K);
B = 0.5*(B+B') + 3*eye(K);
W = Z*B*Z';
if issymmetric(W) && isreal(W)
[U,D] = eig(W)
end
不幸的是,這似乎在MATLAB R2013a上產生了真正復雜的特征向量。 我曾經認為eig
對於真正的對稱矩陣應該使一切保持真實。 有人知道為什么會這樣嗎?
PS。 例如,更改為n = 6,將輸出實數。
當矩陣是實且對稱的時,MATLAB eig
通常返回實特征向量。 舍入誤差會使Z*B*Z'
稍微不對稱。 我不知道issymmetric
是如何實現的(這是一個內置函數),但是也許eig
不會使用相同的標准來確定矩陣是否比issymmetric
實且對稱。
(W+W')./2
是實現矩陣數值對稱的一種簡單方法。 因此eig((W+W')./2)
應該返回實值和向量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.