Home | Develop | Download | Contact
example_matrix_algebra_eig.cpp

Programa para el testeo de las funciones.

Programa para el testeo de las funciones.Para compilar o código example_matrix_algebra_eig.cpp:

g++ -static -o example_matrix_algebra_eig example_matrix_algebra_eig.cpp -lpdsramm

Para executar o programa:

./example_matrix_algebra_eig

Retornando por consola:

-----INFO :: Analizing matrix A
-----INFO :: Low convergence
A:
722.59415501536  14.961544421002  11.686206559208  
14.961544421002  0.75443715373377 0.62073051164566 
11.686206559208  0.62073051164566 0.58423274700635 

D.T():
0.040376009288373 0.7989663809823   723.09348252583   

V:
0.0023544182408548 -0.026186986362172 0.99965428947634   
-0.68370404747296  0.72946524985679   0.020719383399117  
0.72975559756938   0.68351641604034   0.016186682276604  

V(0:1):
0.0023544157457308 -0.02618697915708  
-0.68370397796873  0.72946315758712   
0.72975566269556   0.68351864923033   

DOMINANT::
lambda:723.09348252583
E.T():  0.99965428945655  0.020719383950365 0.016186682793168 


Ev:
1 
-----INFO :: Analizing matrix A
-----INFO :: One Lambda with value 0
A:
2  -2 0  
0  3  -3 
1  0  -1 

D.T():
8.8817841970013e-16 0.26794919243112    3.7320508075689     

V:
0.57735026918996 0.64929473675055 0.74646444457865 
0.57735026918943 0.56230573656614 -0.6464571720232 
0.57735026918948 0.51208261389432 0.15774649828016 

V(0:1):
0.57735026919662 0.64929473674616 
0.57735026918681 0.56230573656822 
0.57735026918544 0.51208261389761 

DOMINANT::
lambda:3.7320507777926
E.T():  -0.74646446579688 0.64645714253479  -0.15774651872017 


Ev:
1 

Código example_matrix_algebra_eig.cpp:

#include <Pds/Ra>
void eigen_funcs(const Pds::Matrix &A,std::string str);
int main(void)
{
A="722.59415501536 14.961544421002 11.686206559208\n"
"14.961544421002 0.75443715373377 0.62073051164566\n"
"11.686206559208 0.62073051164566 0.58423274700635";
eigen_funcs(A,"Low convergence");
A="2 -2 0\n"
"0 3 -3\n"
"1 0 -1";
eigen_funcs(A,"One Lambda with value 0");
return 0;
}
void eigen_funcs(const Pds::Matrix &A,std::string str)
{
double lambda;
pds_print_info_message("Analizing matrix A");
A.Print("A:\n");
std::cout<<std::endl;
D=A.EigenValues();
D.T().Print("D.T():\n");
std::cout<<std::endl;
V=A.EigenVectors(D);
V.Print("V:\n");
std::cout<<std::endl;
V=A.EigenVectors(D.GetRows(0,1));
V.Print("V(0:1):\n");
std::cout<<std::endl;
E=A.EigenDominant(lambda);
std::cout<<"DOMINANT::\n";
std::cout<<"lambda:"<<lambda<<"\n";
E.T().Print("E.T():\t");
std::cout<<std::endl<<std::endl;
Pds::Vector Ev=Pds::Matrix(1,1,1).EigenVector_RegInvIter(2, Pds::Vector(1,1));
Ev.Print("Ev:\n");
};
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:96
La clase tipo Pds::Vector . Esta clase genera una matriz de Nlin lineas y 1 columna....
Definition: Vector.hpp:80
#define pds_print_info_message(msg)
Definition: RaDefines.hpp:157
const std::string Matrix
Tag de un objeto de tipo Pds::Ra::Tag::Matrix.
Definition: RaDefines.hpp:402
Pds::Vector EigenValues(unsigned int MaxIter=2048, double MinFactor=0.00001, bool SortAsc=true) const
Calcula los valores própios (Eigenvalues) de una matriz siguiendo el algoritmo shift QR,...
Pds::Vector EigenDominant(double &lambda, unsigned int MaxIter=20000) const
Calcula el autovector (Eigenvector) y el autovalor (Eigenvalue) dominante en una matriz ....
Pds::Matrix T(void) const
Transpuesta de si mismo (A), el resultado es cargado en B.
bool GetRows(unsigned int lin_init, unsigned int lin_end, Pds::Matrix &B) const
Retorna una sub matriz escojida desde la linea lin_init hasta lin_end, inclusive. Hace una verificaci...
Pds::Matrix EigenVectors(const Pds::Vector &Lambda, unsigned int MaxIter=20000, bool EmptyWhenError=true) const
Calcula los vectores própios (Eigenvectors) de una matriz , Los vectores propios están colocados en l...
void Print(const std::string &str, unsigned int precision) const
Imprime en pantalla el contenido de la matriz después del texto indicado en str.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed