Home | Develop | Download | Contact
test_matrix_operators.cpp
1
8#include <iostream>
9#include <Pds/Ra>
10
11int main(void)
12{
13 Pds::Matrix A(2,2);
14 Pds::Matrix B(2,2);
16
17 A.Fill(1.0); std::cout<<"A:\n"<<A;
18 B.Fill(2.0); std::cout<<"B:\n"<<B;
19
20 // = operator
21 std::cout<<std::endl;
22
23 C= Pds::Matrix(2,2); // A Matrix object was created, the data were copied
24 // and later the Matrix object was destroyed.
25
26 if((C=A).IsNotEmpty()) C.Print("C=A\n");
27 if(C.Copy(B)) C.Print("C=B\n");
28
29 // += operator
30 std::cout<<std::endl;
31
32 if((C+=A).IsNotEmpty()) C.Print("C+=A\n");
33 if(C.AddAssig(B)) C.Print("C+=B\n");
34
35 if((C+=0.2).IsNotEmpty()) C.Print("C+=0.2\n");
36 if(C.AddAssig(0.8)) C.Print("C+=0.8\n");
37
38 // -= operator
39 std::cout<<std::endl;
40
41 if((C-=A).IsNotEmpty()) C.Print("C-=A\n");
42 if(C.SubAssig(B)) C.Print("C-=B\n");
43
44 if((C-=0.3).IsNotEmpty()) C.Print("C-=0.3\n");
45 if(C.SubAssig(0.7)) C.Print("C-=0.7\n");
46
47 // *= operator
48 std::cout<<std::endl;
49
50 if((C*=0.2).IsNotEmpty()) C.Print("C*=0.2\n");
51 if(C.MulAssig(5.0)) C.Print("C*=5.0\n");
52
53 if((C*=A).IsNotEmpty()) C.Print("C*=A\n");
54 if(C.MulAssig(A)) C.Print("C*=A\n");
55
56
57 if((C/=B).IsNotEmpty()) C.Print("C/=B\n");
58 if(C.DivAssig(B)) C.Print("C/=B\n");
59
60 // Inv operator
61 std::cout<<std::endl;
62
63 C=Pds::Matrix::FromString("117 822.2940998481383\n 822.2940998481383 5783.818979511911");
64 C.Print("C\n");
65 double rcond;
66 Pds::Matrix D=C.Inv(&rcond);
67 D.Print("D=C.Inv(&rcond)\n");
68 std::cout<<"rcond:"<<rcond<<"\n";
69
70 (C*D).Print("\nC*D=\n");
71
72 D.Fill(1.0);
73 D.Print("\nD.Fill(1.0)\n");
74
75 Pds::Matrix F=D.PInv(&rcond);
76 F.Print("\nF:\n");
77 std::cout<<"rcond: "<<rcond<<std::endl;
78
79 return 0;
80}
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:96
const std::string Matrix
Tag de un objeto de tipo Pds::Ra::Tag::Matrix.
Definition: RaDefines.hpp:402
bool Fill(Pds::AbstractRV &RV)
Inicializa la matriz con un valor aleatório.
bool SubAssig(double b)
Resta y acumula en si mismo (A), un valor b. Este es similar al operador -=.
bool AddAssig(double b)
Suma y acumula en si mismo (A), un valor b. Este es similar al perador +=.
bool DivAssig(const Pds::Matrix &B)
Divide y acumula en si mismo (A), una matriz B. Este es similar al operador /=.
Pds::Matrix PInv(double *rcond=NULL) const
Procesa esta matriz A y retorna B la matriz pseudo inversa de Moore Penrose.
static Pds::Matrix FromString(const std::string &str)
Convierte un sdt::string a una Matriz de Nlin lineas y Ncol columnas.
bool MulAssig(double b)
Multiplica y acumula en si mismo (A), un valor b. Este es similar al operador *=.
bool Copy(const Pds::Matrix &B)
Copia en si mismo (A), el contenido de una matriz B. Este método es similar a usar el operador = ....
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.
Pds::Matrix Inv(double *rcond=NULL) const
Retorna la matriz inversa.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed