// File matrix.hpp // Date 1.1.1993 // Author pf #ifndef MATRIX_H #define MATRIX_H #include class matrix{ double *m; // jednorozmerne pole o dlzke r x c int r,c; // pocet riadkov & stlpcov // static matrix *tp; // smernik na matrix, pouziva sa pri static int tp_r,tp_c; // priradeniach typu // m.row(1)=n.col(6); // void error(char *msg1, char *msg2=""); // hlasenie o chybe public: matrix(int mrows = 1, int colums = 1, double initval = 0); matrix(int mrows, int colums, double *initvalues); matrix(char *flag, int dimension); // vyrobi jednotkovu maticu matrix(char * matfile); // cita subor obsahujuci maticu matrix(matrix& x); // copy-konstruktor ~matrix(); // destruktor int rows(){ return r; }; // pocet riadkov int cols(){ return c; }; // pocet stlpcov void write_standard(char *filename, char *msg=""); // zapise maticu do suboru matrix& operator=(matrix& rval); // priradenie matrix operator+(matrix& rval); // maticove scitanie matrix operator+(double rval); // skalarne scitanie matrix operator-(matrix& rval); // maticove odcitanie matrix operator-(double rval); // skalarne odcitanie matrix operator-(); // unarne minus matrix operator*(matrix& rval); // maticove nasobenie matrix operator*(double rval); // skalarne nasobeniie matrix row(int); // riadkovy vektor matice matrix col(int); // stlpcovy vektor matice double &val(int row,int col); // element matice, pouzitelny pre // citanie aj zapis matrix transpose(); // transponovana matica matrix inverse(); // inversna matica double determinant(); // determinant double mmin(); // najmensi element matice double mmax(); // navecsi element matice double mean(); // aritmeticky priemer mat. elemm double variance(); // statisticka odchylka mat. elem. void print(char *msg=""); // tlac matice s komentarom private: // pomocne funkcie pre inverse() // a determinant() void switch_columns(int col1, int col2); void copy_column (matrix& m, int from_col, int to_col); matrix scale(); // skaluje maticu matrix lu_decompose(matrix& indx, int& d); // vrati L-U dekompiziciu void lu_back_subst(matrix& indx, matrix& b); // pouzije L-U-dekompoziciu // aktualnu inverse() void deepcopy(matrix& from,matrix& to);// "prava" kopia double &mval(int row, int col){ // rychly pristup k mat. elem. bez return (m[row*c+col]); // kotroly indexov (pre interne } // pouzitie }; #endif MATRIX_H