00001
00016 #ifndef _DLR_LINEARALGEBRA_LINEARALGEBRA_H_
00017 #define _DLR_LINEARALGEBRA_LINEARALGEBRA_H_
00018
00019 #include <dlrCommon/types.h>
00020 #include <dlrNumeric/array1D.h>
00021 #include <dlrNumeric/array2D.h>
00022
00023 namespace dlr {
00024
00025 namespace linearAlgebra {
00026
00036 Float64
00037 determinant(const Array2D<Float64>& A);
00038
00039
00052 Array1D<Float64>
00053 eigenvaluesSymmetric(const Array2D<Float64>& inputArray);
00054
00055
00076 void
00077 eigenvectorsSymmetric(const Array2D<Float64>& inputArray,
00078 Array1D<Float64>& eigenvalues,
00079 Array2D<Float64>& eigenvectors);
00080
00081
00091 Array2D<Float64>
00092 inverse(const Array2D<Float64>& A);
00093
00094
00114 std::pair<Float64, Float64>
00115 linearFit(const Array1D<Float64>& array0,
00116 const Array1D<Float64>& array1);
00117
00118
00136 Array1D<Float64>
00137 linearLeastSquares(const Array2D<Float64>& A, const Array1D<Float64>& b);
00138
00139
00153 void
00154 linearSolveInPlace(Array2D<Float64>& A, Array1D<Float64>& b);
00155
00156
00171 void
00172 linearSolveInPlace(Array2D<Float64>& A, Array2D<Float64>& b);
00173
00174
00199 Array1D<Float64>
00200 linearSolveTridiagonal(const Array1D<Float64>& subDiagonal,
00201 const Array1D<Float64>& centerDiagonal,
00202 const Array1D<Float64>& superDiagonal,
00203 const Array1D<Float64>& bVector);
00204
00205
00217 Array2D<Float64>
00218 pseudoinverse(const Array2D<Float64>& A);
00219
00220
00238 void
00239 singularValueDecomposition(const Array2D<Float64>& inputArray,
00240 Array2D<Float64>& uArray,
00241 Array1D<Float64>& sigmaArray,
00242 Array2D<Float64>& vTransposeArray);
00243
00244
00255 Array1D<Float64>
00256 singularValues(const Array2D<Float64>& inputArray);
00257
00258 }
00259
00260 }
00261
00262
00263
00264
00265 namespace dlr {
00266
00267 using linearAlgebra::determinant;
00268 using linearAlgebra::eigenvaluesSymmetric;
00269 using linearAlgebra::eigenvectorsSymmetric;
00270 using linearAlgebra::inverse;
00271 using linearAlgebra::linearFit;
00272 using linearAlgebra::linearLeastSquares;
00273 using linearAlgebra::linearSolveInPlace;
00274 using linearAlgebra::linearSolveTridiagonal;
00275 using linearAlgebra::pseudoinverse;
00276 using linearAlgebra::singularValueDecomposition;
00277 using linearAlgebra::singularValues;
00278
00279 }
00280
00281 #endif // #ifndef _DLR_LINEARALGEBRA_LINEARALGEBRA_H_