00001
00006 #ifndef _RosenbrockDiscreteIteration_h
00007 #define _RosenbrockDiscreteIteration_h
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "RosenbrockIteration.h"
00018
00019
00020
00021
00022
00023 class RosenbrockDiscreteIteration
00024 : public RosenbrockIteration
00025 {
00026 public:
00027 struct TrialPoint
00028 {
00029 TrialPoint(const ColumnVector& point,
00030 bool better,
00031 double tau,
00032 double newTau)
00033 : mPoint(point),
00034 mBetter(better),
00035 mTau(tau),
00036 mNewTau(newTau)
00037 { };
00038
00039 ColumnVector mPoint;
00040 bool mBetter;
00041 double mTau;
00042 double mNewTau;
00043 };
00044
00046 typedef vector<TrialPoint> TrialPointContainer;
00047
00048
00049
00052 RosenbrockDiscreteIteration(void);
00053
00060 RosenbrockDiscreteIteration(const ColumnVector& staringPoint,
00061 const SquareMatrix& D);
00062
00065 ~RosenbrockDiscreteIteration(void);
00066
00067
00068
00069
00070
00071 void AddTrialPoint(const ColumnVector& point,
00072 bool better,
00073 double tau,
00074 double newTau);
00075
00076
00077
00078 virtual vector<IterationDataIdType> ClassIds() const;
00079
00080 static IterationDataIdType ClassId();
00081
00082 const TrialPointContainer& TrialPoints() const;
00083
00084 double TauMin() const;
00085 double& rTauMin();
00086
00087
00088
00089 protected:
00090 private:
00091 TrialPointContainer mTrialPoints;
00092
00093 double mTauMin;
00094
00095 };
00096
00097
00098
00099
00100
00101
00102
00103 #endif // _RosenbrockDiscreteIteration_h