00001
00079 #ifndef _DichotomousDivision_h
00080 #define _DichotomousDivision_h
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 #include "../DoubleParameter.h"
00091 #include "../ProblemBase.h"
00092 #include "../SectionLineSearch.h"
00093 #include "../UnivariateFunction.h"
00094 #include "../ui/SectionLineSearchPanel.h"
00095
00096
00097
00098
00099
00100 class DichotomousDivision
00101 : public SectionLineSearch
00102 {
00103 public:
00104 friend class SectionLineSearchPanel<DichotomousDivision>;
00105
00106
00107
00108
00111 ~DichotomousDivision(void);
00112
00113
00114
00115
00116
00117
00118
00121 virtual std::auto_ptr<Method> Clone() const;
00122
00123
00126 virtual const wxString& Name() const;
00127
00130 virtual MethodIdType Id() const;
00131
00134 static MethodIdType ClassId();
00135
00136
00137
00138 virtual bool CanHandle(const ProblemBase* pProblem) const;
00139
00140 protected:
00141
00144 DichotomousDivision(void);
00145
00150 DichotomousDivision(const DichotomousDivision& from);
00151
00152 virtual wxString& rName();
00153 private:
00154
00155 virtual std::auto_ptr<Result> Solve(
00156 const UnivariateFunction& function,
00157 double a,
00158 double b,
00159 bool generateResult)
00160 const throw(OptimizationError);
00161
00162
00165 static wxString mName;
00168 static DichotomousDivision mDichotomousDivision;
00169 };
00170
00171
00172
00173
00174
00175
00176
00177 #endif // _DichotomousDivision_h_