00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _LSQUARES_H_
00012 #define _LSQUARES_H_
00013
00014 #include "Vector.H"
00015 #include "REAL.H"
00016 #include "RealVect.H"
00017 #include "NamespaceHeader.H"
00018
00019
00020
00021
00022 class LSquares
00023 {
00024 public:
00025 void LeastSquares(Real** A,
00026 Vector<Real>&x,
00027 const Vector<Real>&rhs);
00028
00029
00030 int gaussElim(Real**A,
00031 Vector<Real>& rhs);
00032
00033 void swapRows(Real** A,
00034 const int& rowi,
00035 const int& rowj,
00036 const int&numberOfCols);
00037
00038 void swapRows(Vector<Real>& rhs,
00039 const int& currRow,
00040 const int& pivot);
00041
00042 int findPivot(Real** A,
00043 const int& currCol,
00044 const int& currRow,
00045 const int& numRows,
00046 int& pivot);
00047
00048 void addRows(Vector<Real>& rhs,
00049 const int& rowi,
00050 const Real& alpha,
00051 const int& rowj);
00052
00053 void addRows(Real** A,
00054 const int& rowi,
00055 const Real& alpha,
00056 const int& rowj,
00057 const int& numberOfCols);
00058
00059 void timesBeta(Vector<Real>&rhs,
00060 const int& currRow,
00061 const Real& Beta);
00062
00063 void timesBeta(Real** A,
00064 const int& rowi,
00065 const Real& Beta,
00066 const int& numberOfcols);
00067
00068 void transpose(Real** a_A,
00069 Real ** a_Atrans,
00070 const int& a_numRows,
00071 const int& a_numCols);
00072
00073 void matMul(Real** a_A,
00074 Real** a_B,
00075 Real** a_C,
00076 const int& a_numRowsA,
00077 const int& a_numColsA,
00078 const int& a_numColsB);
00079
00080 void backSolve(Real** a_A,
00081 const Vector<Real>& a_rhs,
00082 const int& a_numArows,
00083 Vector<Real>& a_x);
00084
00085 void AtimesX(Real** A,
00086 const Vector<Real>&x,
00087 const int& numRowsA,
00088 Vector<Real>& Ax);
00089
00090 void allocArray(const int& rows,
00091 const int& cols,
00092 Real**& A);
00093
00094 void freeArray(const int& rows,
00095 const int& cols,
00096 Real**& A);
00097
00098
00099 void output(const int& rows,
00100 const int& cols,
00101 Real**& A,
00102 char* name);
00103 };
00104
00105 #include "NamespaceFooter.H"
00106 #endif