00001 #ifndef QMATRIXALGEBRA_H 00002 #define QMATRIXALGEBRA_H 00003 00004 #include <qvector.h> 00005 #include <qvmath/qvmatrix.h> 00006 00016 void singularValueDecomposition(const QVMatrix &M, QVMatrix &U, QVMatrix &V, QVMatrix &S); 00017 00028 void LUDecomposition(const QVMatrix &M, QVMatrix &L, QVMatrix &U, QVMatrix &P); 00029 00037 void CholeskyDecomposition(const QVMatrix &M, QVMatrix &L); 00038 00047 void QRDecomposition(const QVMatrix &M, QVMatrix &Q, QVMatrix &R); 00048 00055 QVMatrix pseudoInverse(const QVMatrix &M); 00056 00065 void eigenDecomposition(const QVMatrix &M, QVVector &eigVals, QVMatrix &eigVecs); 00066 00074 double determinant(const QVMatrix &M); 00075 00087 double BhattacharyyaDistance(const QVVector &m1, const QVMatrix &S1, const QVVector &m2, const QVMatrix &S2); 00088 00097 void solveLinear(const QVMatrix &A, QVVector &x, const QVVector &b); 00098 00107 void solveLinear(const QVMatrix &A, QVMatrix &X, const QVMatrix &B); 00108 00118 void solveOverDetermined(const QVMatrix &A, QVMatrix &X, const QVMatrix &B); 00119 00127 void solveHomogeneousLinear(const QVMatrix &A, QVector<double> &x); 00128 00130 void solveHomogeneousLinear2(const QVMatrix &A, QVector<double> &x); 00131 00133 double homogLineFromMoments(double x,double y,double xx,double xy,double yy,double &a,double &b,double &c); 00134 00136 QVVector regressionLine(const QVMatrix &points); 00137 00138 #endif