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;
}
{
double lambda;
std::cout<<std::endl;
std::cout<<std::endl;
std::cout<<std::endl;
std::cout<<std::endl;
std::cout<<"DOMINANT::\n";
std::cout<<"lambda:"<<lambda<<"\n";
std::cout<<std::endl<<std::endl;
};
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
La clase tipo Pds::Vector . Esta clase genera una matriz de Nlin lineas y 1 columna....
#define pds_print_info_message(msg)
const std::string Matrix
Tag de un objeto de tipo Pds::Ra::Tag::Matrix.
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.