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

时间:2014-05-25 17:45:29

标签: matlab matrix floating-point numerical-methods

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

>> norm(inv(L))

ans =

    2.0788

>> min(eig(L))

ans =

    0.5000 

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

  

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

仅当矩阵是具有正特征值的埃尔米特(即正定)时才是这样。来自维基百科:矩阵A的谱范数是A的最大奇异值,即正半定矩阵A * A的最大特征值的平方根

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

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

正如我们所料。