00001
00006 #ifndef _MarquardtIteration_h
00007 #define _MarquardtIteration_h
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "../IterationData.h"
00018
00019
00020
00021
00022
00023 class MarquardtIteration
00024 : public IterationData
00025 {
00026 public:
00027
00028
00029
00032 MarquardtIteration(const ColumnVector& startingPoint,
00033 const ColumnVector& gradient,
00034 const SymmetricMatrix& hessian,
00035 double firstLambda);
00036
00039 ~MarquardtIteration(void);
00040
00041
00042
00043
00044
00045 virtual ColumnVector EndValuePoint() const;
00046
00047 virtual vector<IterationDataIdType> ClassIds() const;
00048
00049 static IterationDataIdType ClassId();
00050
00051 const ColumnVector& StartingPoint() const;
00052
00053 const ColumnVector& Gradient() const;
00054
00055 const SymmetricMatrix& Hessian() const;
00056
00057 const std::vector<ColumnVector>& MarquardtSteps() const;
00058 std::vector<ColumnVector>& rMarquardtSteps();
00059
00060 const std::vector<ColumnVector>& TrialPoints() const;
00061 std::vector<ColumnVector>& rTrialPoints();
00062
00063 double FirstLambda() const;
00064
00065
00066
00067 protected:
00068 private:
00069
00070 ColumnVector mStartingPoint;
00071 ColumnVector mGradient;
00072 SymmetricMatrix mHessian;
00073
00078 std::vector<ColumnVector> mMarquardtSteps;
00081 std::vector<ColumnVector> mTrialPoints;
00082
00083 double mFirstLambda;
00084
00085 };
00086
00087
00088
00089
00090
00091
00092
00093 #endif // _MarquardtIteration_h