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 GSLMinFMinimizer
00078 {
00080 GoldenSection = 0,
00082 BrentMinimization = 1
00083 };
00084
00092 enum GSLMultiminFDFMinimizerType
00093 {
00095 ConjugateFR = 0,
00097 ConjugatePR = 1,
00099 VectorBFGS = 2,
00101 SteepestDescent = 3
00102 };
00103
00168 const bool qvGSLMinimizeFDF ( QVFunction<QVVector, double> & function, QVVector &point,
00169 const GSLMultiminFDFMinimizerType gslMinimizerAlgorithm = ConjugateFR,
00170 const int maxIterations = 100, const double maxGradientNorm = 1e-3,
00171 const double step = 0.01, const double tol = 1e-4);
00172
00260 const bool qvGSLMinimizeFDF ( QVFunction<QVVector, double> & function,
00261 QVFunction<QVVector, QVVector> & gradientFunction,
00262 QVVector &point, const GSLMultiminFDFMinimizerType gslMinimizerAlgorithm = ConjugateFR,
00263 const int maxIterations = 100, const double maxGradientNorm = 1e-3,
00264 const double step = 0.01, const double tol = 1e-4);
00265
00316 const bool qvGSLMinimize(QVFunction<double, double> &function,
00317 double &x, double &lower, double &upper,
00318 const GSLMinFMinimizer gslMinimizerAlgorithm = BrentMinimization,
00319 const int maxIterations = 100,
00320 const double absoluteError = 1e-3,
00321 const double relativeError = 0.0);
00322 #endif