00001
00089 #ifndef _FibonacciDivision_h
00090 #define _FibonacciDivision_h
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100 #include "../DoubleParameter.h"
00101 #include "../ProblemBase.h"
00102 #include "../SectionLineSearch.h"
00103 #include "../UnivariateFunction.h"
00104 #include "../ui/SectionLineSearchPanel.h"
00105
00106
00107
00108
00109
00110 class FibonacciDivision
00111 : public SectionLineSearch
00112 {
00113 public:
00114 friend class SectionLineSearchPanel<FibonacciDivision>;
00115
00116
00117
00118
00121 ~FibonacciDivision(void);
00122
00123
00124
00125
00126
00127
00128
00131 virtual std::auto_ptr<Method> Clone() const;
00132
00133
00136 virtual const wxString& Name() const;
00137
00140 virtual MethodIdType Id() const;
00141
00144 static MethodIdType ClassId();
00145
00146
00147
00148 virtual bool CanHandle(const ProblemBase* pProblem) const;
00149
00150 protected:
00151
00154 FibonacciDivision(void);
00155
00160 FibonacciDivision(const FibonacciDivision& from);
00161
00172 std::vector<unsigned int> GenerateFibonacciSequence(double a,
00173 double b,
00174 double epsilon) const;
00175 virtual wxString& rName();
00176 private:
00177
00178 virtual std::auto_ptr<Result> Solve(
00179 const UnivariateFunction& function,
00180 double a,
00181 double b,
00182 bool generateResult)
00183 const throw(OptimizationError);
00184
00185
00188 static wxString mName;
00191 static FibonacciDivision mFibonacciDivision;
00192
00193 };
00194
00195
00196
00197
00198
00199
00200
00201 #endif // _FibonacciDivision_h_