Matlab通过等式
定义矩阵w
的左侧特征向量A
w*A=d w*
其中w*
是w
的共轭转置。当A
通过转换D=S^{-1}AS
对矩阵D
进行对角化时S
,其中A
是对角矩阵而S
的列是(右)特征向量w
行A=[1+i,2-i,3;1,i,0.5i;5i,7,-2]
是[S,D,W]=eig(A)
的共轭转置。但是,如果我在一个简单的矩阵上测试它,
W*
通过
获取左右特征向量S^{-1}
我没有看到W*
和S
之间的关系。这是一个精确的问题吗?将{{1}}与{{1}}相乘会得到一个带有复杂条目的对角矩阵。
答案 0 :(得分:2)
这不是精度问题,而是缩放问题和特征向量为not unique的事实。左特征向量矩阵(作为行)保证恰好是右特征向量矩阵的逆矩阵的唯一时间是Hermitian A
;虽然他们的产品是always diagonal。另外,右特征向量矩阵的逆的行总是保留A
的特征向量,但不是唯一的特征向量。不同之处在于缩放。
对于您的示例(我将使用R
和L = W'
,因为我发现它更自然):
>> A=[1+i,2-i,3;1,i,0.5i;5i,7,-2];
>> [R,D,W]=eig(A);
>> L = W';
>> Rinv = D/(A*R);
是左特征向量的L
和Rinv
矩阵吗?
>> [norm(L*A - D*L) , norm(Rinv*A - D*Rinv)]
ans =
1.0e-14 *
0.4254 0.9041
是的,相对机器精度。
L
和R
的产品是否对角线?
>> LR = L*R
LR =
0.8319 + 0.0826i 0.0000 + 0.0000i 0.0000 - 0.0000i
0.0000 - 0.0000i 0.3976 + 0.4274i -0.0000 - 0.0000i
-0.0000 - 0.0000i 0.0000 + 0.0000i -0.3079 - 0.4901i
是的。
如果我们缩放L
的每个左特征向量(行)以使上述产品成为身份,会发生什么?
>> Lp = bsxfun(@rdivide,L,diag(LR))
Lp =
-0.4061 - 0.5332i -0.3336 + 0.6109i 0.7017 - 0.0696i
0.7784 + 0.0140i 0.9824 - 1.0560i 0.4772 - 0.1422i
0.2099 - 0.0812i -0.9004 + 1.4331i -0.2219 - 0.1422i
>> Rinv
Rinv =
-0.4061 - 0.5332i -0.3336 + 0.6109i 0.7017 - 0.0696i
0.7784 + 0.0140i 0.9824 - 1.0560i 0.4772 - 0.1422i
0.2099 - 0.0812i -0.9004 + 1.4331i -0.2219 - 0.1422i
我们通过重新缩放恢复Rinv
。由于Rinv
是一组左特征向量,因此Lp
。>> [diag(L*L'),diag(Lp*Lp')]
ans =
1.0000 1.4310
1.0000 2.9343
1.0000 2.9846
。
重新缩放失去了什么?
{{1}}
特征向量不再是单位长度。