Sistemas de Controle  0.5
Biblioteca matematica de Controle
matrix.h
Vá para a documentação deste arquivo.
1 #ifndef __MATRIX_H_INCLUDED
2 #define __MATRIX_H_INCLUDED
3 #include <string>
4 #include <sstream>
5 #include <cmath>
6 #include <iostream>
7 #include <fstream>
8 #include <ctime>
9 #include <cstdlib>
10 
11 #define pi 3.14
12 
13 using namespace std;
14 
16 
22 template <class UsedType>
23 class Matrix
24 {
25 private:
26 
27  int rows;
28  int cols;
29  UsedType **Mat;
30 
32 
37  bool sqr(Matrix<UsedType> Mat1);
38 
40 
45  bool ind(Matrix<UsedType> Mat1);
46 
47 
48 public:
49 
51 
73  Matrix();
74 
76 
105  Matrix(string value);
106 
108 
132  Matrix(int row, int col);
133 
135 
142  Matrix(const Matrix & otherMatrix);
143 
145 
150  ~Matrix();//Destrutor
151 
153 
178  void init(int row, int col);
179 
181 
210  void init(string value);
211 
213 
248  void add(int rol, int col, UsedType number);
249 
251 
276  void eye(int num);
277 
279 
304  void ones(int row, int col);
305 
307 
332  void zeros(int row, int col);
333 
335 
362  void randU(int row, int col);
363 
365 
388  int length();
389 
391 
414  UsedType max();//Retorna o maior valor de uma matriz
415 
417 
440  UsedType min();//Retorna o menor valor de uma matriz
441 
442 
444 
448  Matrix Avarage();
449 
451 
452  /*
453  Calcula a média da matriz e retorna a variância dos elementos.
454  */
455  Matrix Variance();
456 
458 
462  Matrix Std();
463 
465 
490  void print();
491 
493 
530  Matrix operator+(Matrix Mat1);
531 
533 
563  Matrix operator+(UsedType a);
564 
566 
604  Matrix operator-(Matrix Mat1);
605 
607 
637  Matrix operator-(UsedType a);
638 
640 
672  void operator=(Matrix Mat1);
673 
675 
704  void operator=(string value);
705 
706 
707  /*void operator=(UsedType B(int row, int col));*/
708 
709 
711 
749  Matrix operator*(Matrix Mat1);
750 
752 
785  Matrix operator*(UsedType a);
786 
788 
822  Matrix operator/(Matrix Mat1);
823 
825 
859  Matrix operator/(UsedType a);
860 
862 
900  Matrix operator| (Matrix Mat1);
901 
903 
940  Matrix operator|| (Matrix Mat1);
941 
943 
973  Matrix operator~();
974 
976 
1009  Matrix operator^(UsedType exp);
1010 
1012 
1045  Matrix operator> (UsedType num);
1046 
1048 
1080  UsedType operator() (int row,int col);
1081 
1083 
1122  void operator() (int row, int col, UsedType value);
1123 
1125 
1152  void lineVector(int left, int rigth);
1153 
1155 
1184  UsedType trace();
1185 
1187 
1218  Matrix inv();
1219 
1221 
1250  Matrix pol();
1251 
1253 
1282  Matrix eigenvalues();
1283 
1285 
1314  UsedType det();
1315 
1317 
1346  int getRows();
1347 
1349 
1378  int getCols();
1379 
1381 
1416  void setLine(int num, Matrix<UsedType> Line);
1417 
1419 
1454  void setColumn(int num, Matrix<UsedType> Colummn);
1455 
1457 
1487  Matrix<UsedType> getLine(int num);
1488 
1490 
1522  Matrix<UsedType> getColumn(int num);
1523 
1524  UsedType getMat(int row, int col);//Retorna o elemento no índice ij da matriz.
1525 
1526  void setMat(int row, int col, UsedType num);
1527 
1528 
1529  //#######################################################//
1530 //Friend functions
1531  template<class FriendType> friend Matrix<FriendType> operator- (FriendType a, Matrix<FriendType> Mat1);//Soma Matriz Escalar
1532  template<class FriendType> friend Matrix<FriendType> operator- (FriendType a, Matrix<FriendType> Mat1);//Subtração Matriz Escalar
1533  template<class FriendType> friend Matrix<FriendType> operator* (FriendType a, Matrix<FriendType> Mat1);//Multiplicação Matriz Escalar
1534  template<class FriendType> friend Matrix<FriendType> operator/ (FriendType a, Matrix<FriendType> Mat1);//divisão Matriz Escalar
1535 
1536  template<class FriendType> friend Matrix<FriendType> diff(Matrix<FriendType> M, FriendType h);//Cálcula a derivada de uma matriz.
1537 
1538  template<class FriendType> friend FriendType max(Matrix<FriendType> M);//Retorna o maior valor de uma matriz
1539  template<class FriendType> friend FriendType min(Matrix<FriendType> M);//Retorna o menor valor de uma matriz
1540  template<class FriendType> friend FriendType norm(Matrix<FriendType> M);//Retorna o maior valor de uma matriz
1541  template<class FriendType> friend Matrix<FriendType> abs(Matrix<FriendType> M);//Retorna o modulo dos valores de uma matriz
1542  template<class FriendType> friend Matrix<FriendType> cos(Matrix<FriendType> M1);//Retorna o cosseno dos elementos de uma matriz
1543  template<class FriendType> friend Matrix<FriendType> sin(Matrix<FriendType> M1);//Retorna o seno dos elementos de uma matriz
1544  template<class FriendType> friend Matrix<FriendType> tan(Matrix<FriendType> M1);//Retorna a tangente dos elementos de uma matriz
1545  template<class FriendType> friend Matrix<FriendType> acos(Matrix<FriendType> M1);//Retorna o arco cosseno dos elementos de uma matriz
1546  template<class FriendType> friend Matrix<FriendType> asin(Matrix<FriendType> M1);//Retorna o arco seno dos elementos de uma matriz
1547  template<class FriendType> friend Matrix<FriendType> atan(Matrix<FriendType> M1);//Retorna o arco tangente dos elementos de uma matriz
1548  template<class FriendType> friend Matrix<FriendType> cosh(Matrix<FriendType> M1);//Retorna o cosseno hiperbólico dos elementos de uma matriz
1549  template<class FriendType> friend Matrix<FriendType> sinh(Matrix<FriendType> M1);//Retorna o seno hiperbólico dos elementos de uma matriz
1550  template<class FriendType> friend Matrix<FriendType> tanh(Matrix<FriendType> M1);//Retorna a tangente hiperbólica dos elementos de uma matriz
1551  template<class FriendType> friend Matrix<FriendType> acosh(Matrix<FriendType> M1);//Retorna o arco cosseno hiperbólico dos elementos de uma matriz
1552  template<class FriendType> friend Matrix<FriendType> asinh(Matrix<FriendType> M1);//Retorna o arco seno hiperbólico dos elementos de uma matriz
1553  template<class FriendType> friend Matrix<FriendType> atanh(Matrix<FriendType> M1);//Retorna o arco tangente hiperbólica dos elementos de uma matriz
1554  template<class FriendType> friend Matrix<FriendType> exp(Matrix<FriendType> M1);//Retorna a exponencial dos elementos de uma matriz
1555  template<class FriendType> friend Matrix<FriendType> log(Matrix<FriendType> M1);//Retorna o logaritmo neperiano dos elementos de uma matriz
1556  template<class FriendType> friend Matrix<FriendType> log10(Matrix<FriendType> M1);//Retorna o logaritmo na base 10 dos elementos de uma matriz
1557  template<class FriendType> friend Matrix<FriendType> ceil(Matrix<FriendType> M1);//arredonda para cima os elementos de uma matriz
1558  template<class FriendType> friend Matrix<FriendType> round(Matrix<FriendType> M1);//arredonda os elementos de uma matriz
1559  template<class FriendType> friend Matrix<FriendType> floor(Matrix<FriendType> M1);//arredonda para baixo os elementos de uma matriz
1560 };
1561 
1562 #endif // __MATRIX_H_INCLUDED
UsedType ** Mat
Membro que armazena o número de colunas da Matriz.
Definition: matrix.h:29
int cols
Membro que armazena o número de linhas da Matriz.
Definition: matrix.h:28
Classe Matriz, com o intuito de realizar operações entre matrizes entre outras funções.
Definition: matrix.h:23
int rows
Definition: matrix.h:27