• Main Page
  • Modules
  • Classes
  • Files
  • File List

D:/Projekt/ECF_trunk/examples/iprojekt/matrice.h

00001 
00002 // Deklaracija razreda Matrica, SLAJ, LUdek, Vektor3D
00004 
00005 #ifndef matrica_h
00006 #define matrica_h
00007 
00008 #include <stdlib.h>
00009 #include <stdio.h>
00010 #include <assert.h>
00011 #include <math.h>
00012 #include <memory.h>
00013 
00014 class Matrica
00015 {
00016     protected:
00017         int row,col;
00018         //double **data;
00019         void Take(void);
00020         void Free(void);
00021     public:
00022         double **data;  // zbog ocajnickog ubrzavanja
00023         Matrica Transpose(int);
00024         Matrica();
00025         Matrica(int,int);
00026         Matrica(Matrica&);
00027         ~Matrica();
00028         double Get(int,int) const;
00029         double Get(int) const;
00030         double Set(int,int,double);
00031         double Set(int,double);
00032         double Norm(void);
00033         int GetRow(void) const;
00034         int GetCol(void) const;
00035         int CopyColumn(int,Matrica&);
00036         int SetColumn(int,Matrica&);
00037         Matrica& operator= (Matrica&);
00038         Matrica operator+ (Matrica&);
00039         Matrica operator+ (double);
00040         void operator+= (Matrica&);
00041         Matrica operator- (const Matrica&);
00042         void operator-= (Matrica&);
00043         Matrica operator* (const Matrica&);
00044         Matrica operator* (const double&);
00045         Matrica operator/ (const double&);
00046         Matrica operator~ ();   // transponiranje
00047         double* operator[](const int redak);
00048         void Reset(int,int=1);
00049         void Init(int,int=1);
00050         int Load(const char*);
00051         void Save(const char*);
00052         void SaveLong(const char* fname);
00053         void Show(void);
00054 };
00055 
00056 inline int Matrica::GetRow(void) const
00057 {   return row; }
00058 
00059 inline int Matrica::GetCol(void) const
00060 {   return col; }
00061 
00062 inline double* Matrica::operator[](const int redak)
00063 {   assert(redak >= 0 && redak < row);
00064     return data[redak]; }
00065 
00066 class SLAJ      // sustav lin. alg. jednadzbi
00067 {
00068     protected:
00069         Matrica A;
00070         Matrica b;      
00071     public:
00072         void Load_A(char*);
00073         void Load_b(char*);
00074         void Save_A(char*);
00075         void Save_b(char*);
00076         void Set_A(Matrica&);
00077         void Set_b(Matrica&);
00078         void GetSolution(Matrica&);
00079 };
00080 
00081 // LU i LUP dekompozicija
00082 class LUdek : public SLAJ
00083 {
00084     protected:
00085         int *P;
00086         int n;
00087     public:
00088         LUdek(void);
00089         int Solve(Matrica&,Matrica&,Matrica&);
00090         int Decompose(void);
00091         int ForwardSubst(void);
00092         int BackwardSubst(void);
00093         Matrica Invert(Matrica&);
00094         int pivot;  // 0 - bez pivotiranja
00095                     // 1 - sa pivotiranjem
00096 };
00097 
00098 #endif  // matrica_h

Generated on Thu Jul 10 2014 14:13:41 for ECF by  doxygen 1.7.1