提问人:Rodney Price 提问时间:10/5/2023 最后编辑:jaredRodney Price 更新时间:10/5/2023 访问量:61
Numpy 特征系统求解器返回不正确的矩阵
Numpy eigensystem solver returns improper matrix
问:
我一直在尝试将输出用作
旋转矩阵,但矩阵由特征向量形成
退货不当;也就是说,它不是纯粹的旋转,而是
旋转和反射的组合。你可以把它看作是
遵循。numpy.linalg.eigh
GG = np.array([[2.0, 0.146, 0.0064],
[0.146, -1.0, 0.0003],
[0.0064, 0.0003, -1.0]])
vals,vecs = np.linalg.eigh(GG)
np.linalg.det(vecs)
这将返回 -0.99999999999。纯旋转将返回 1.0。
我是否遗漏了有关此求解器工作方式的某些信息?我怎样才能
get 或其他一些函数来返回正确的旋转
矩阵?也许这个矩阵是无痕的原因
问题?eigh
答:
2赞
flawr
10/5/2023
#1
考虑一个方阵,让我们假设是一个具有相应特征值的特征向量,即A
v
e
A*v = e*v
现在考虑一下如果我们按某个标量缩放会发生什么,让我们设置:v
s
w = v*s
A*w = A*(v*s) = (A*v)*s = (e*v) = e*(v*s) = e*w
原来也是特征值的特征向量!实际上,特征向量只定义到标量倍数,因此约定是将它们归一化为长度。因此,如果你缩放一个特征向量,你仍然有一个有效的特征系统,这次是行列式。w
e
1
-1
+0.999...9
最后,为什么是 1 而不是 1?我们使用的是浮点运算,这并不精确。如果你正在尝试解决数值问题,我建议你熟悉浮点数、它们的问题和局限性以及最佳实践。0.999...9
分明
评论
0赞
Rodney Price
10/6/2023
有限的精度并不让我担心。行列式为 -1 这一事实是否意味着由特征向量形成的坐标轴形成左手坐标系?将一个特征向量乘以 -1 会得到一个右手坐标系?
0赞
flawr
10/6/2023
对于这个 3x3 系统,您可以说,通过正决定因素,惯用手性得以保留。基本上行列式告诉你体积 1 的形状在被矩阵变换后体积。
上一个:计算特征向量矩阵
评论
vects
np.linalg.det(vecs)