00001
00002
00004
00005
00006
00007 #if !defined(AFX_IMPROVEDLEVENBERGMARQUARDTMINIMIZER_H__9039A15E_5863_4BEA_B916_644103251249__INCLUDED_)
00008 #define AFX_IMPROVEDLEVENBERGMARQUARDTMINIMIZER_H__9039A15E_5863_4BEA_B916_644103251249__INCLUDED_
00009
00010 #if _MSC_VER > 1000
00011 #pragma once
00012 #endif // _MSC_VER > 1000
00013
00014
00015
00016 #include "MatrixOperations.h"
00017 #include "LevenbergMarquardtMinimizer.h"
00018
00019 class CImprovedLevenbergMarquardtMinimizer : public CLevenbergMarquardtMinimizer
00020 {
00021 public:
00022 CImprovedLevenbergMarquardtMinimizer();
00023 CImprovedLevenbergMarquardtMinimizer(CParameterFilter *pFilter, bool psdFlag, double marquardt, bool checkChi, double chiTol, bool checkGrad, double gradTol, bool checkPar, double parTol, int nIterations, double funcAccuracy);
00024 virtual ~CImprovedLevenbergMarquardtMinimizer();
00025 double Minimize(double *parameters, Minimizable *minimizable);
00026
00027 void SVDSolveMarquardtSystem(double *deltaP);
00028 private:
00029 bool m_bChiSqFlag;
00030 bool m_bGradFlag;
00031 bool m_bParFlag;
00032 };
00033
00034 #endif // !defined(AFX_IMPROVEDLEVENBERGMARQUARDTMINIMIZER_H__9039A15E_5863_4BEA_B916_644103251249__INCLUDED_)