如何从LAPACK ssyev获取正确的特征向量?

时间:2019-07-05 11:43:17

标签: c++ lapack intel-mkl

我正在尝试使用LAPACK的ssyev(http://www.netlib.org/lapack/explore-html/d3/d88/group__real_s_yeigen_ga63d8d12aef8f2711d711d9e6bd833e46.html)来计算特征值和特征向量。作为测试,我使用的是https://math.stackexchange.com/questions/1271788/finding-eigenvectors-of-symmetric-matrices-when-the-general-solutions-of-eigenva中的简单矩阵:

library(zoo)
z <- as.zoo(AirPassengers)
az <- aggregate(z, as.yearqtr, tail, 1)
diff(az, arith = FALSE) - 1

我得到与该问题相同的特征值(4,1,1),但是我的特征向量不同。期望值是

     1949 Q2      1949 Q3      1949 Q4      1950 Q1      1950 Q2      1950 Q3 
 0.022727273  0.007407407 -0.132352941  0.194915254  0.056737589  0.060402685 
     1950 Q4      1951 Q1      1951 Q2      1951 Q3      1951 Q4      1952 Q1 
-0.113924051  0.271428571  0.000000000  0.033707865 -0.097826087  0.162650602 
     1952 Q2      1952 Q3      1952 Q4      1953 Q1      1953 Q2      1953 Q3 
 0.129533679 -0.041284404 -0.071770335  0.216494845  0.029661017 -0.024691358 
     1953 Q4      1954 Q1      1954 Q2      1954 Q3      1954 Q4      1955 Q1 
-0.151898734  0.169154229  0.123404255 -0.018939394 -0.115830116  0.165938865 
     1955 Q2      1955 Q3      1955 Q4      1956 Q1      1956 Q2      1956 Q3 
 0.179775281 -0.009523810 -0.108974359  0.140287770  0.179810726 -0.050802139 
     1956 Q4      1957 Q1      1957 Q2      1957 Q3      1957 Q4      1958 Q1 
-0.138028169  0.163398693  0.185393258 -0.042654028 -0.168316832  0.077380952 
     1958 Q2      1958 Q3      1958 Q4      1959 Q1      1959 Q2      1959 Q3 
 0.201657459 -0.071264368 -0.165841584  0.204747774  0.162561576 -0.019067797 
     1959 Q4      1960 Q1      1960 Q2      1960 Q3      1960 Q4 
-0.125269978  0.034567901  0.276849642 -0.050467290 -0.149606299 

但我明白了

2 1 1
1 2 1
1 1 2

如何使用LAPACK ssyev获得正确的特征向量?

代码:

1  1  1
1  0 -2
1 -1  1

并用

进行编译
0.57735 1           1
0.57735 0.408248    1
0.57735 0.408248    0.707107

0 个答案:

没有答案