Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 同一矩阵不同数据类型的零空间计算不一致_Matlab - Fatal编程技术网

Matlab 同一矩阵不同数据类型的零空间计算不一致

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

我正在运行下面的代码来找到对应于特征值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空双矩阵
,但为什么
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的值还是生成了它们?