ios - 为什么从加速框架计算出的特征向量符号不同?

标签 ios eigenvector accelerate-framework

Hi 对于下面的 9x9 输入矩阵

6.522752 0.985874 0.000000 0.000000 0.000000 0.000000 -1.239167 1.833633 1.542076 
0.985874 5.591528 0.000000 0.000000 0.000000 0.000000 1.833633 6.220998 -3.414516 
0.000000 0.000000 4.000000 0.000000 0.000000 0.000000 1.542076 -3.414516 0.000000 
0.000000 0.000000 0.000000 6.522752 0.985874 0.000000 -3.478164 -2.197849 -2.923418 
0.000000 0.000000 0.000000 0.985874 5.591528 0.000000 -2.197849 5.979956 -5.347403 
0.000000 0.000000 0.000000 0.000000 0.000000 4.000000 -2.923418 -5.347403 0.000000 
-1.239167 1.833633 1.542076 -3.478164 -2.197849 -2.923418 7.943390 4.655086 2.544306 
1.833633 6.220998 -3.414516 -2.197849 5.979956 -5.347403 4.655086 26.187047 -8.514617 
1.542076 -3.414516 0.000000 -2.923418 -5.347403 0.000000 2.544306 -8.514617 10.540343

dsyevd_ (lapack) 的特征向量是

-0.240839 -0.138424 0.519974 0.115826 -0.370674 0.288584 -0.393926 0.431228 0.277905 
0.244180 -0.537519 -0.093966 0.107875 -0.362227 0.419277 0.386924 0.074391 -0.410777 
-0.085046 0.080591 -0.087321 0.405798 0.480233 0.520947 0.351553 0.085795 0.425460 
0.326714 -0.343211 0.687494 -0.137128 0.486896 -0.164580 0.125151 -0.051854 -0.038804 
-0.025542 0.219686 0.021264 -0.732741 0.149150 0.596999 -0.112391 -0.057387 -0.138370 
0.347073 0.682316 0.396621 0.256967 -0.282724 0.116437 0.200305 -0.155640 -0.181131 
0.802559 -0.030022 -0.272760 -0.009368 -0.014541 0.068134 -0.376412 0.154091 0.332006 
0.041949 0.027988 0.028721 -0.432580 -0.332588 -0.207674 0.588240 0.161115 0.532709 
-0.037747 -0.228302 0.086833 0.036285 -0.225159 0.157222 -0.124072 -0.849258 0.354327

来自 opencv 的特征向量

0.037747 0.228302 -0.086833 -0.036285 0.225159 -0.157222 0.124072 0.849258 -0.354327 
0.041949 0.027988 0.028721 -0.432580 -0.332588 -0.207674 0.588240 0.161115 0.532709 
0.802559 -0.030022 -0.272760 -0.009368 -0.014541 0.068134 -0.376412 0.154091 0.332006 
0.347073 0.682316 0.396621 0.256967 -0.282724 0.116437 0.200305 -0.155640 -0.181131 
0.025542 -0.219686 -0.021264 0.732741 -0.149150 -0.596999 0.112391 0.057387 0.138370 
0.326714 -0.343211 0.687494 -0.137128 0.486896 -0.164580 0.125151 -0.051854 -0.038804 
-0.085046 0.080591 -0.087321 0.405798 0.480233 0.520947 0.351553 0.085795 0.425460 
-0.244180 0.537519 0.093966 -0.107875 0.362227 -0.419277 -0.386924 -0.074391 0.410777 
-0.240839 -0.138424 0.519974 0.115826 -0.370674 0.288584 -0.393926 0.431228 0.277905

值在位置和符号上都不同。我怎样才能在 lapack 中解决这个问题。

最佳答案

特征向量在实数比例因子内是唯一的。这意味着如果 x 是一个特征向量,那么 l.x(其中 l 是一个标量)也是一个。特别是,如果 x 是一个特征向量或 M 那么 -x 也是一个。请注意,特征向量通常是单位归一化的,因此 ||x|| = 1,但当然这仍然会给您留下两个可能的向量(x-x)。您可以通过采用特征向量 j.x 来解决这种歧义,其中 jx 的第一个非负坐标的符号。

编辑特征向量也可以以不同的顺序返回。通常,它们以相应特征值的降序返回。

在你的例子中,特征向量似乎与不同的特征值有关,你能证实吗?

关于ios - 为什么从加速框架计算出的特征向量符号不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11717017/

相关文章:

ios - 通过打破 iPad 上的约束将 View 添加到 UIAlertController 结果

python - 如何找到具有不同特征值的两个矩阵的公共(public)特征向量

swift - Swift 中的 DFT 结果与 MATLAB 中的不同

ios - 是否有快速绘制二维数组的推荐方法?

ios - 查询晚于 24 小时的对象

ios - 要将此应用配置为 iOS 路由应用,应用的 Info.plist 必须包含 MKDirectionsApplicationSupportedModes 键

ios - swift 恢复购买

java - EJML获取矩阵特征向量的实值

python - 具有适当符号的 Numpy 八函数

ios - 如何使用 vImageMatrixMultiply 将 YUV 平面数据转换为 32 bpp、8bpc RGBX?