![]() | ![]() | ||||||||||||||
[bug-gsl] Same eigenvector but different eigenvalues - Why? (2008-11-13)
*Hi, I'm italian student. First of all sorry for my english. I have a problem when I use GSL to test an example on classical scaling: I have this matrix * A = 20.52000 1.64000 -18.08000 -4.09000 1.64000 -0.83000 2.05000 -2.87000 -18.08000 2.05000 11.39000 4.63000 -4.09000 -2.87000 4.63000 2.33000 *and I want the eigendecomposition. So I write this code:* int main(void) { int i=0, j=0; double nm; gsl_vector *eval; gsl_matrix *evec; gsl_matrix *matr=gsl_matrix_alloc(4,4); gsl_matrix_set(matr,0,0,20.52); gsl_matrix_set(matr,0,1,1.64); gsl_matrix_set(matr,0,2,-18.08); gsl_matrix_set(matr,0,3,-4.09); gsl_matrix_set(matr,1,0,1.64); gsl_matrix_set(matr,1,1,-0.83); gsl_matrix_set(matr,1,2,2.05); gsl_matrix_set(matr,1,3,-2.87); gsl_matrix_set(matr,2,0,-18.08); gsl_matrix_set(matr,2,1,2.05); gsl_matrix_set(matr,2,2,11.39); gsl_matrix_set(matr,2,3,4.63); gsl_matrix_set(matr,3,0,-4.09); gsl_matrix_set(matr,3,1,-2.87); gsl_matrix_set(matr,3,2,4.63); gsl_matrix_set(matr,3,3,2.33); eval = gsl_vector_alloc(4); evec = gsl_matrix_alloc(4,4); gsl_eigen_symmv_workspace *w = gsl_eigen_symmv_alloc(4); gsl_eigen_symmv(matr,eval,evec,w); gsl_eigen_symmv_free (w); gsl_eigen_symmv_sort(eval,evec,GSL_EIGEN_SORT_ABS_ASC); for (i = 0; i < 4; i++) { double eval_i = gsl_vector_get (eval, i); gsl_vector_view evec_i = gsl_matrix_column (evec, i); printf ("eigenvalue = %g\n", eval_i); printf ("eigenvector = \n"); gsl_vector_fprintf (stdout, &evec_i.vector, "%g"); } return 0; } The problem is that I have this result: eigenvalue = -3.28845e-15 eigenvector = -0.5 -0.5 -0.5 -0.5 eigenvalue = -6.53416 eigenvector = 0.0405866 -0.614856 -0.190051 0.76432 eigenvalue = 11.1461 eigenvector = 0.387874 -0.609699 0.586947 -0.365121 eigenvalue = -71.4219 eigenvector = 0.773244 0.0147966 -0.607761 -0.180279 * While my book and OCTAVE says:* octave-3.0.0:3> A=[20.52 1.64 -18.08 -4.09; 1.64 -0.83 2.05 -2.87; -18.08 2.05 11.39 4.63; -4.09 -2.87 4.63 2.33] A = 20.52000 1.64000 -18.08000 -4.09000 1.64000 -0.83000 2.05000 -2.87000 -18.08000 2.05000 11.39000 4.63000 -4.09000 -2.87000 4.63000 2.33000 octave-3.0.0:4> [EVECT,EVAL]=eig(A) EVECT = -0.388034 0.499844 -0.041102 -0.773237 0.609619 0.500918 0.614189 -0.014765 -0.587093 0.500013 0.189536 0.607770 0.364851 0.499223 -0.764957 0.180282 EVAL = -5.56580 0.00000 0.00000 0.00000 0.00000 -0.00750 0.00000 0.00000 0.00000 0.00000 3.26739 0.00000 0.00000 0.00000 0.00000 35.71592 *So I have the same eigenvector but different eigenvalues. Why? Can you help me?* Bye Antonio Divisato
| |||||||||||||||
![]() | ![]() |







