00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef NUMERICALANALYSIS_H
00022 #define NUMERICALANALYSIS_H
00023
00027
00028 #include <QVVector>
00029 #include <QVMatrix>
00030 #include <QVFunction>
00031
00045 const QVVector qvEstimateGradient( const QVFunction<QVVector, double> &function,
00046 const QVVector &point, const double h = 1e-6);
00047
00067 const QVMatrix qvEstimateHessian( const QVFunction<QVVector, double> &function,
00068 const QVVector &point, const double h = 1e-3);
00069
00077 enum GSLMultiminFDFMinimizerType
00078 {
00080 ConjugateFR = 0,
00082 ConjugatePR = 1,
00084 VectorBFGS = 2,
00086 SteepestDescent = 3
00087 };
00088
00153 const bool qvGSLMinimizeFDF ( QVFunction<QVVector, double> & function, QVVector &point,
00154 const GSLMultiminFDFMinimizerType gslMinimizerAlgorithm = ConjugateFR,
00155 const int maxIterations = 100, const double maxGradientNorm = 1e-3,
00156 const double step = 0.01, const double tol = 1e-4);
00157
00245 const bool qvGSLMinimizeFDF ( QVFunction<QVVector, double> & function,
00246 QVFunction<QVVector, QVVector> & gradientFunction,
00247 QVVector &point, const GSLMultiminFDFMinimizerType gslMinimizerAlgorithm = ConjugateFR,
00248 const int maxIterations = 100, const double maxGradientNorm = 1e-3,
00249 const double step = 0.01, const double tol = 1e-4);
00250 #endif