123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /**
- 2009.05.25.
- by M.Kemmler
- */
- #include "vislearning/math/algebra_trlan/Eigenproblem.h"
- #include <iostream>
- #include <fstream>
- using namespace OBJREC;
- int main (int argc, char **argv)
- {
- #ifdef NICE_USELIB_TRLAN
- int N=10;
- int problem_size=N*N;
- int eval_nr=N;
- element e;
- std::vector<element> sparse_mat;
- std::vector<double> evals;
- std::vector< std::vector<double> > evecs;
- //build sparse matrix
- for(int i=0;i<N;i++){
- for(int j=0;j<N;j++){
- for(int k=i-5;k<i+5;k++){
- for(int l=j-5;l<j+5;l++){
- if(k<0||l<0||k>=N||l>=N) continue;
- e.x=i*N+j;
- e.y=k*N+l;
- e.val=1.0/(1.0+i*j+k*l);
- sparse_mat.push_back(e);
- e.y=i*N+j;
- e.x=k*N+l;
- sparse_mat.push_back(e);
- }
- }
- }
- }
- Eigenproblem eig;
- eig.solve(sparse_mat,problem_size,evals,evecs,eval_nr,+1);
- for(int i=0;i<eval_nr;i++){
- std::cerr << "eigenvalue "<<i+1<<": \n\t"<<evals[i]<<std::endl;
- std::cerr << "corresponding eigenvector:"<<i+1<<": \n";
- for(int j=0;j<problem_size;j++) std::cerr << evecs[i][j] << std::endl;
- }
- #endif
- }
|