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