Eigenvalue problem i GSL?

Øystein O Johansen OJOHANS@statoil.com
Wed Mar 29 05:08:00 GMT 2000


--------->--------->--------->--------->--------->--------->--------->
Hi,
I'm trying to calculate the eigenvalues from this matrix:

   | -3.34   1.596 |
a =|               |
   | -1.596  3.512 |

and if I haven't done anything wrong, gsl_eigen_jacobi returns:

-3.69351 and 3.86551

The prblem is that this is the wrong answer, according to Matlab, and
 my hp-48 calculator, which both gets:    -0.2946 and 0.3118

Here is my testing code:

#include <stdio.h>
#include <gsl_matrix.h>
#include "gsl_eigen.h"

int main ()
{
  int i,j, nrot;

  gsl_matrix * a = gsl_matrix_alloc(2, 2);
  gsl_vector * eigval = gsl_vector_alloc (2);
  gsl_matrix * eigvt  = gsl_matrix_alloc (2, 2);

  gsl_matrix_set(a, 0, 0, -3.34);
  gsl_matrix_set(a, 0, 1, 1.596);
  gsl_matrix_set(a, 1, 0, -1.596);
  gsl_matrix_set(a, 1, 1, 3.512);

  /* Testing, testing */
  for (i = 0 ; i < 2 ; i++)
    for (j = 0 ; j < 2 ; j++)
      printf("a(%d,%d) = %g\n",i,j, gsl_matrix_get (a, i, j));

  gsl_eigen_jacobi_impl( a, eigval, eigvt, 1000, &nrot);

  printf("Eigenvalues: %g and %g\n", gsl_vector_get( eigval, 0),
                                     gsl_vector_get( eigval, 1));

  return 0;
}

Is this a bug in GSL, or have I done something wrong?

regs,
Øystein




More information about the Gsl-discuss mailing list