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(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 matrix
是R2
R1 == R2
解决方案
零矩阵(秩 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
推荐阅读
- c# - 带有批量电子邮件的 SmtpClient SendMailAsync 成功发送了大约 1200 封,其余的都失败了。任何指针?
- php - 使用ajax和php按价格排序
- c - 设置同步文件写入超时而不用 time() 浪费微秒
- node.js - reactjs构建系统中发生了什么?
- scylla - change TokenRange on Scylla
- c++ - 要在 C/C++ 中使用共享库,.h 和 .so 文件都需要吗?
- mongodb - MongoDB 聚合 - 通过包含文本对结果进行分组
- android - 将光标移动到 TextField 的末尾 - Nativescript
- jquery - 仅在数据表中导出列标题
- firebase - 为什么 iOS 平台可以在没有 google 服务的情况下使用 Firebase/Firestore?