00001
00052 #ifndef _Derivative_h
00053 #define _Derivative_h
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 #include "../DoubleParameter.h"
00064 #include "../SinglePointLineSearch.h"
00065 #include "../ProblemBase.h"
00066 #include "../UnivariateFunction.h"
00067 #include "../ui/DerivativeLineSearchPanel.h"
00068
00069
00070
00071
00072
00073 class Derivative
00074 : public SinglePointLineSearch
00075 {
00076 public:
00077 friend class DerivativeLineSearchPanel<Derivative>;
00078
00079
00080
00081
00084 ~Derivative(void);
00085
00086
00087
00088
00089
00090
00091
00094 virtual std::auto_ptr<Method> Clone() const;
00095
00096
00099 virtual const wxString& Name() const;
00100
00103 virtual MethodIdType Id() const;
00104
00107 static MethodIdType ClassId();
00108
00109 virtual wxString ToString(bool standalone = true) const;
00110
00111
00112
00113 virtual bool CanHandle(const ProblemBase* pProblem) const;
00114
00115 protected:
00116
00119 Derivative(void);
00120
00125 Derivative(const Derivative& from);
00126
00129 DoubleParameter mAlpha;
00132 DoubleParameter mGamma;
00133
00134 virtual wxString& rName();
00135 private:
00136
00137 virtual std::auto_ptr<Result> Solve(
00138 const UnivariateFunction& function,
00139 const ColumnVector& startingPoint,
00140 bool generateResult)
00141 const throw(OptimizationError);
00142
00145 static wxString mName;
00148 static Derivative mDerivative;
00149 };
00150
00151
00152
00153
00154
00155
00156
00157 #endif // _Derivative_h_