Matlab 同一矩阵不同数据类型的零空间计算不一致
我正在运行下面的代码来找到对应于特征值1的特征向量(找到任意3x3旋转矩阵的旋转轴) 我在调试身份轮换,但我得到了两个不同的答案Matlab 同一矩阵不同数据类型的零空间计算不一致,matlab,Matlab,我正在运行下面的代码来找到对应于特征值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(R
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空双矩阵
,但为什么R2
在R1==R2
时生成3x3单位矩阵?零矩阵(秩0)的零空间是单位矩阵是有意义的,因为R^3
中的任何向量x
都会生成a*x=0
>> null(zeros(3, 3))
ans =
1 0 0
0 1 0
0 0 1
如果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
零矩阵(秩0)的零空间是单位矩阵是有意义的,因为
R^3
中的任何向量x
都将产生a*x=0
>> null(zeros(3, 3))
ans =
1 0 0
0 1 0
0 0 1
如果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
你能定义你的R1和R2吗?您是手动输入R1和R2的值还是生成的?您能定义R1和R2吗?您是手动输入R1和R2的值还是生成了它们?