00001
00002
00003
00004
00005
00006 #ifndef NEWMATAP_LIB
00007 #define NEWMATAP_LIB 0
00008
00009 #include "newmat.h"
00010
00011 #ifdef use_namespace
00012 namespace NEWMAT {
00013 #endif
00014
00015
00016
00017 void QRZT(Matrix&, LowerTriangularMatrix&);
00018
00019 void QRZT(const Matrix&, Matrix&, Matrix&);
00020
00021 void QRZ(Matrix&, UpperTriangularMatrix&);
00022
00023 void QRZ(const Matrix&, Matrix&, Matrix&);
00024
00025 inline void HHDecompose(Matrix& X, LowerTriangularMatrix& L)
00026 { QRZT(X,L); }
00027
00028 inline void HHDecompose(const Matrix& X, Matrix& Y, Matrix& M)
00029 { QRZT(X, Y, M); }
00030
00031 ReturnMatrix Cholesky(const SymmetricMatrix&);
00032
00033 ReturnMatrix Cholesky(const SymmetricBandMatrix&);
00034
00035 void SVD(const Matrix&, DiagonalMatrix&, Matrix&, Matrix&,
00036 bool=true, bool=true);
00037
00038 void SVD(const Matrix&, DiagonalMatrix&);
00039
00040 inline void SVD(const Matrix& A, DiagonalMatrix& D, Matrix& U,
00041 bool withU = true) { SVD(A, D, U, U, withU, false); }
00042
00043 void Jacobi(const SymmetricMatrix&, DiagonalMatrix&);
00044
00045 void Jacobi(const SymmetricMatrix&, DiagonalMatrix&, SymmetricMatrix&);
00046
00047 void Jacobi(const SymmetricMatrix&, DiagonalMatrix&, Matrix&);
00048
00049 void Jacobi(const SymmetricMatrix&, DiagonalMatrix&, SymmetricMatrix&,
00050 Matrix&, bool=true);
00051
00052 void EigenValues(const SymmetricMatrix&, DiagonalMatrix&);
00053
00054 void EigenValues(const SymmetricMatrix&, DiagonalMatrix&, SymmetricMatrix&);
00055
00056 void EigenValues(const SymmetricMatrix&, DiagonalMatrix&, Matrix&);
00057
00059 class SymmetricEigenAnalysis {
00060
00061 public:
00062 SymmetricEigenAnalysis(const SymmetricMatrix&);
00063 private:
00064 DiagonalMatrix diag;
00065 DiagonalMatrix offdiag;
00066 SymmetricMatrix backtransform;
00067 FREE_CHECK(SymmetricEigenAnalysis)
00068 };
00069
00070 void SortAscending(GeneralMatrix&);
00071
00072 void SortDescending(GeneralMatrix&);
00073
00074 void FFT(const ColumnVector&, const ColumnVector&,
00075 ColumnVector&, ColumnVector&);
00076
00077 void FFTI(const ColumnVector&, const ColumnVector&,
00078 ColumnVector&, ColumnVector&);
00079
00080 void RealFFT(const ColumnVector&, ColumnVector&, ColumnVector&);
00081
00082 void RealFFTI(const ColumnVector&, const ColumnVector&, ColumnVector&);
00083
00084 void DCT_II(const ColumnVector&, ColumnVector&);
00085
00086 void DCT_II_inverse(const ColumnVector&, ColumnVector&);
00087
00088 void DST_II(const ColumnVector&, ColumnVector&);
00089
00090 void DST_II_inverse(const ColumnVector&, ColumnVector&);
00091
00092 void DCT(const ColumnVector&, ColumnVector&);
00093
00094 void DCT_inverse(const ColumnVector&, ColumnVector&);
00095
00096 void DST(const ColumnVector&, ColumnVector&);
00097
00098 void DST_inverse(const ColumnVector&, ColumnVector&);
00099
00100
00101
00103 class LinearEquationSolver : public BaseMatrix {
00104 GeneralMatrix* gm;
00105 int search(const BaseMatrix*) const { return 0; }
00106 friend class BaseMatrix;
00107 public:
00108 LinearEquationSolver(const BaseMatrix& bm);
00109 ~LinearEquationSolver() { delete gm; }
00110 void CleanUp() { delete gm; }
00111 GeneralMatrix* Evaluate(MatrixType) { return gm; }
00112
00113 NEW_DELETE(LinearEquationSolver)
00114 };
00115
00116 #ifdef use_namespace
00117 }
00118 #endif
00119 #endif