testTRLAN.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. 2009.05.25.
  3. by M.Kemmler
  4. */
  5. #include "vislearning/math/algebra_trlan/Eigenproblem.h"
  6. #include <iostream>
  7. #include <fstream>
  8. using namespace OBJREC;
  9. int main (int argc, char **argv)
  10. {
  11. #ifdef NICE_USELIB_TRLAN
  12. int N=10;
  13. int problem_size=N*N;
  14. int eval_nr=N;
  15. element e;
  16. std::vector<element> sparse_mat;
  17. std::vector<double> evals;
  18. std::vector< std::vector<double> > evecs;
  19. //build sparse matrix
  20. for(int i=0;i<N;i++){
  21. for(int j=0;j<N;j++){
  22. for(int k=i-5;k<i+5;k++){
  23. for(int l=j-5;l<j+5;l++){
  24. if(k<0||l<0||k>=N||l>=N) continue;
  25. e.x=i*N+j;
  26. e.y=k*N+l;
  27. e.val=1.0/(1.0+i*j+k*l);
  28. sparse_mat.push_back(e);
  29. e.y=i*N+j;
  30. e.x=k*N+l;
  31. sparse_mat.push_back(e);
  32. }
  33. }
  34. }
  35. }
  36. Eigenproblem eig;
  37. eig.solve(sparse_mat,problem_size,evals,evecs,eval_nr,+1);
  38. for(int i=0;i<eval_nr;i++){
  39. std::cerr << "eigenvalue "<<i+1<<": \n\t"<<evals[i]<<std::endl;
  40. std::cerr << "corresponding eigenvector:"<<i+1<<": \n";
  41. for(int j=0;j<problem_size;j++) std::cerr << evecs[i][j] << std::endl;
  42. }
  43. #endif
  44. }