Home | Develop | Download | Contact
example_matrix_algebra_eig.cpp
1
74#include <Pds/Ra>
75
76void eigen_funcs(const Pds::Matrix &A,std::string str);
77
78int main(void)
79{
81
82 A="722.59415501536 14.961544421002 11.686206559208\n"
83 "14.961544421002 0.75443715373377 0.62073051164566\n"
84 "11.686206559208 0.62073051164566 0.58423274700635";
85 eigen_funcs(A,"Low convergence");
86
87
88 A="2 -2 0\n"
89 "0 3 -3\n"
90 "1 0 -1";
91 eigen_funcs(A,"One Lambda with value 0");
92
93 return 0;
94}
95
96void eigen_funcs(const Pds::Matrix &A,std::string str)
97{
100 Pds::Vector E;
101 double lambda;
102
103 pds_print_info_message("Analizing matrix A");
105 A.Print("A:\n");
106
107 std::cout<<std::endl;
108
109 D=A.EigenValues();
110 D.T().Print("D.T():\n");
111
112 std::cout<<std::endl;
113
114 V=A.EigenVectors(D);
115 V.Print("V:\n");
116
117 std::cout<<std::endl;
118
119 V=A.EigenVectors(D.GetRows(0,1));
120 V.Print("V(0:1):\n");
121
122 std::cout<<std::endl;
123
124 E=A.EigenDominant(lambda);
125 std::cout<<"DOMINANT::\n";
126 std::cout<<"lambda:"<<lambda<<"\n";
127 E.T().Print("E.T():\t");
128
129 std::cout<<std::endl<<std::endl;
130
131 Pds::Vector Ev=Pds::Matrix(1,1,1).EigenVector_RegInvIter(2, Pds::Vector(1,1));
132 Ev.Print("Ev:\n");
133
134};
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