我在 R 中执行以下操作:
> m = matrix(c(0.563291, -0.478813, 0.574175,
+ 0.160779, -0.03407, 0.381922,
+ 0.0677914, 0.870361, -0.88602), 3, 3)
> mt = t(m)
> mt
[1,] 0.5632910 -0.478813 0.574175
[2,] 0.1607790 -0.034070 0.381922
[3,] 0.0677914 0.870361 -0.886020
> e<-eigen(mt)
> e
$values
[1] -1.1583554 0.5215205 0.2800359
$vectors
[1,] -0.3684057 0.8245987 -0.1255897
[2,] -0.2513624 0.4625355 -0.7915182
[3,] 0.8950387 0.3257267 -0.5981021
在 eigen3 中使用以下 c++ 代码:
std::cout << "=========" << std::endl;
std::cout << A << std::endl;
EigenSolver<MatrixXd> es(A);
std::cout << "evals: " << std::endl;
std::cout << es.eigenvalues();
std::cout << std::endl << "evecs: " << std::endl;
std::cout << es.eigenvectors() << std::endl;
std::cout << "=========" << std::endl;
我得到以下值:
=========
0.563291 -0.478813 0.574175
0.160779 -0.03407 0.381922
0.0677914 0.870361 -0.88602
evals:
(0.521521,0)
(0.280036,0)
(-1.15836,0)
evecs:
(-0.824599,0) (0.125591,0) (-0.368406,0)
(-0.462535,0) (0.791518,0) (-0.251362,0)
(-0.325726,0) (0.598102,0) (0.895039,0)
=========
为什么 eigen3 中的顺序与 R 中的顺序不同?我正在寻找特征版本以“最高特征值和相应的特征向量”格式存储和打印信息,这似乎是这样做的,但是为什么特征向量中的 R 存在差异,因为它似乎将向量打印为列向量而不是行向量,通过乘以 -1 来关闭值?
如果我将 R 的 evs 输出和 Eigen 的 evs 输出相乘,如果它们相等,我应该得到单位矩阵 I,不是吗?
> v = matrix(c(-0.3684057, 0.8245987, -0.1255897,
+ -0.2513624, 0.4625355, -0.7915182,
+ 0.8950387, 0.3257267, -0.5981021), nrow = 3, ncol = 3)
> v
[,1] [,2] [,3]
[1,] -0.3684057 -0.2513624 0.8950387
[2,] 0.8245987 0.4625355 0.3257267
[3,] -0.1255897 -0.7915182 -0.5981021
> u = matrix(c(-0.824599, 0.125591, -0.368406,
+ -0.462535, 0.791518, -0.251362,
+ -0.325726, 0.598102, 0.895039), nrow = 3, ncol = 3)
> u
[,1] [,2] [,3]
[1,] -0.824599 -0.462535 -0.325726
[2,] 0.125591 0.791518 0.598102
[3,] -0.368406 -0.251362 0.895039
> c = u*v
> c
[,1] [,2] [,3]
[1,] 0.3037870 0.1162639 -0.2915374
[2,] 0.1035622 0.3661052 0.1948178
[3,] 0.0462680 0.1989576 -0.5353247
> u = t(u)
> u
[,1] [,2] [,3]
[1,] -0.824599 0.125591 -0.368406
[2,] -0.462535 0.791518 -0.251362
[3,] -0.325726 0.598102 0.895039
> c = u*v
> c
[,1] [,2] [,3]
[1,] 0.30378697 -0.03156886 -0.32973763
[2,] -0.38140576 0.36610517 -0.08187531
[3,] 0.04090783 -0.47340862 -0.53532471
>