为什么我在matlab中得到错误的矩阵规范?

Moo*_*ker 1 floating-point matlab matrix numerical-methods

我有一个小的,条件良好的Hermitian矩阵L,其特征值为[0,2].在尝试计算L的倒数范数时,我得到了奇怪的结果:

>> norm(inv(L))

ans =

    2.0788

>> min(eig(L))

ans =

    0.5000 
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为逆的第二范数应该是矩阵的最小特征值的等倒数.

我知道机器算术引入的错误,但在这个小的,埃尔米特和良好条件的例子中,我预计它可以忽略不计.

这是矩阵https://www.dropbox.com/s/nh1wegrnn53wb6w/matrix.mat

我在Linux mint 16(Petra)上使用matlab 8.2.0.701(R2013b).

yhe*_*non 5

这不是一个数字问题,因为你已经指出矩阵是条件良好的.

逆的第二范数应该是矩阵最小特征值的等倒数

只有当矩阵是具有正特征值的埃尔米特(即正定)时才会出现这种情况.来自维基百科:矩阵A的谱范数是A的最大奇异值,即正半定矩阵A*A的最大特征值的平方根.

所以在这里你可以计算逆的范数:

[v,d] = eig(L'*L);
1.0/sqrt(min(diag(d))) = 2.0788539
norm(inv(L)) = 2.0788539
Run Code Online (Sandbox Code Playgroud)

正如我们所料.

  • 然后,这表明矩阵不能真正是hermitean,即如果它具有真实条目则是对称的.或者不是肯定的.因为对称正定(spd)矩阵原始推理是正确的,那么特征值也是奇异值. (3认同)