首页 > 解决方案 > 不同数据类型的相同矩阵的空空间计算不一致

问题描述

我正在运行以下代码来查找与特征值 1 对应的特征向量(以查找任意 3x3 旋转矩阵的旋转轴)。

我正在用身份轮换调试一些东西,但我得到了两个不同的答案。

R1 =

    1.0000   -0.0000    0.0000
    0.0000    1.0000    0.0000
   -0.0000         0    1.0000


R2 =

     1     0     0
     0     1     0
     0     0     1

在每个矩阵上运行零空间计算。

null(R1 - 1 * eye(3))

>>   3x0 empty double matrix

null(R2 - 1 * eye(3))

>>
 1     0     0
 0     1     0
 0     0     1

显然正确的答案3x0 empty double matrixR2R1 == R2

标签: matlab

解决方案


零矩阵(秩 0)的零空间是单位矩阵是有道理的,因为其中的任何向量x都会R^3产生A*x = 0

>> null(zeros(3, 3))
ans =

   1   0   0
   0   1   0
   0   0   1

R2 - eye(3)如果R2恰好这种情况 eye(3)

满秩矩阵的零空间是空矩阵也是有道理的,因为不会产生不同于 0 的向量A*x = 0

>> null(eye(3))
ans = [](3x0)

R1 - eye(3)如果R1完全是 这样,结果可能eye(3)是第 3 位。例如:

>> R1 = eye(3) + 1e-12*diag(ones(3,1))
R1 =

   1.0000        0        0
        0   1.0000        0
        0        0   1.0000

>> null(R1 - 1 * eye(3))
ans = [](3x0)
>> rank(R1 - 1 * eye(3))
ans = 3

推荐阅读