00001
00059 #ifndef _BolzanoDivision_h
00060 #define _BolzanoDivision_h
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 #include "../DoubleParameter.h"
00071 #include "../ProblemBase.h"
00072 #include "../SectionLineSearch.h"
00073 #include "../UnivariateFunction.h"
00074 #include "../ui/SectionLineSearchPanel.h"
00075
00076
00077
00078
00079
00080 class BolzanoDivision
00081 : public SectionLineSearch
00082 {
00083 public:
00084 friend class SectionLineSearchPanel<BolzanoDivision>;
00085
00086
00087
00088
00091 ~BolzanoDivision(void);
00092
00093
00094
00095
00096
00097
00098
00101 virtual std::auto_ptr<Method> Clone() const;
00102
00103
00106 virtual const wxString& Name() const;
00107
00110 virtual MethodIdType Id() const;
00111
00114 static MethodIdType ClassId();
00115
00116
00117
00118 virtual bool CanHandle(const ProblemBase* pProblem) const;
00119
00120 virtual bool CanAssist(const ProblemBase* pProblem) const;
00121
00122 protected:
00123
00126 BolzanoDivision(void);
00127
00132 BolzanoDivision(const BolzanoDivision& from);
00133
00134 virtual wxString& rName();
00135 private:
00136
00137 virtual std::auto_ptr<Result> Solve(
00138 const UnivariateFunction& function,
00139 double a,
00140 double b,
00141 bool generateResult)
00142 const throw(OptimizationError);
00143
00144
00145 static wxString mName;
00146 static BolzanoDivision mBolzanoDivision;
00147 };
00148
00149
00150
00151
00152
00153
00154
00155 #endif // _BolzanoDivision_h_