00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QMATRIXALGEBRA_H
00026 #define QMATRIXALGEBRA_H
00027
00028 #include <QVector>
00029 #include <QVMatrix>
00030
00042 void singularValueDecomposition(const QVMatrix &M, QVMatrix &U, QVMatrix &V, QVMatrix &S);
00043
00054 void LUDecomposition(const QVMatrix &M, QVMatrix &L, QVMatrix &U, QVMatrix &P);
00055
00063 void CholeskyDecomposition(const QVMatrix &M, QVMatrix &L);
00064
00073 void QRDecomposition(const QVMatrix &M, QVMatrix &Q, QVMatrix &R);
00074
00081 QVMatrix pseudoInverse(const QVMatrix &M);
00082
00091 void eigenDecomposition(const QVMatrix &M, QVVector &eigVals, QVMatrix &eigVecs);
00092
00100 double determinant(const QVMatrix &M);
00101
00110 void solveLinear(const QVMatrix &A, QVVector &x, const QVVector &b);
00111
00120 void solveLinear(const QVMatrix &A, QVMatrix &X, const QVMatrix &B);
00121
00131 void solveOverDetermined(const QVMatrix &A, QVMatrix &X, const QVMatrix &B);
00132
00140 void solveHomogeneousLinear(const QVMatrix &A, QVector<double> &x);
00141
00143 void solveHomogeneousLinear2(const QVMatrix &A, QVector<double> &x);
00144
00146 double homogLineFromMoments(double x,double y,double xx,double xy,double yy,double &a,double &b,double &c);
00147
00149 QVVector regressionLine(const QVMatrix &points);
00150
00151 #endif