PowellIteration.h

00001 
00006 #ifndef _PowellIteration_h
00007 #define _PowellIteration_h
00008 
00009 // SYSTEM INCLUDES
00010 //
00011 
00012 // PROJECT INCLUDES
00013 //
00014 
00015 // LOCAL INCLUDES
00016 //
00017 #include "../IterationData.h"
00018 #include "../util.h"
00019 
00020 // FORWARD REFERENCES
00021 //
00022 
00023 
00024 class PowellIteration
00025     : public IterationData
00026 {
00027 public:
00028 
00029 // LIFECYCLE
00030 
00033     PowellIteration(void);
00034 
00041     PowellIteration(const ColumnVector& staringPoint,
00042                     const SquareMatrix& D);
00043 
00046     ~PowellIteration(void);
00047 
00048 struct TrialPoint
00049     {
00050         TrialPoint(void)
00051             : mPoint(NullPoint),
00052               mTau(0.0)
00053               { };
00054 
00055         TrialPoint(const ColumnVector&      point,
00056                    double                   tau)
00057             : mPoint(point),
00058               mTau(tau)
00059               { };
00060 
00061         ColumnVector    mPoint;
00062         double          mTau;
00063     };
00064 
00066     typedef vector<TrialPoint>  TrialPointContainer;
00067 
00068 // OPERATORS
00069 
00070 // OPERATIONS
00071     void                        AddTrialPoint(const ColumnVector&   point,
00072                                               double                tau);
00073 
00074 // ACCESS
00075 
00076     virtual ColumnVector                EndValuePoint() const;
00077 
00078     virtual vector<IterationDataIdType> ClassIds() const;
00079 
00080     static IterationDataIdType          ClassId();
00081 
00082     const ColumnVector&         StartingPoint() const;
00083     ColumnVector&               rStartingPoint();
00084 
00085     const SquareMatrix&         D() const;
00086     SquareMatrix&               rD();
00087 
00088     const TrialPointContainer&  TrialPoints() const;
00089 
00090     const ColumnVector&         EndPoint() const;
00091     ColumnVector&               rEndPoint();
00092 
00093     const ColumnVector&         TrialDistance() const;
00094     ColumnVector&               rTrialDistance();
00095 
00096     const ColumnVector&         NewDirection() const;
00097     ColumnVector&               rNewDirection();
00098 
00099     const TrialPoint&           NewPoint() const;
00100     TrialPoint&                 rNewPoint();
00101 
00102     const SquareMatrix&         NewD() const;
00103     SquareMatrix&               rNewD();
00104 
00105 // INQUIRY
00106     bool                        PreliminaryIteration() const;
00107 
00108     bool                        StepInNewDirection() const;
00109 
00110 protected:
00111     SquareMatrix    mNewD;          
00112 
00113 private:
00114     ColumnVector    mStartingPoint; 
00115     SquareMatrix    mD;             
00116 
00117     TrialPointContainer  mTrialPoints;   
00118 
00119     ColumnVector    mEndPoint;   
00120 
00121     ColumnVector    mTrialDistance; 
00122 
00123 
00124     ColumnVector    mNewDirection;  
00125     TrialPoint      mNewPoint;      
00126 
00127 };
00128 
00129 // INLINE METHODS
00130 //
00131 
00132 // EXTERNAL REFERENCES
00133 //
00134 
00135 #endif  // _RosenbrockIteration_h

Wygenerowano Fri Sep 29 21:04:47 2006 dla EduOptim2 programem  doxygen 1.4.6