00001
00049 #ifndef _SignOfDerivative_h
00050 #define _SignOfDerivative_h
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 #include "../DoubleParameter.h"
00061 #include "../SinglePointLineSearch.h"
00062 #include "../ProblemBase.h"
00063 #include "../UnivariateFunction.h"
00064 #include "../ui/DerivativeLineSearchPanel.h"
00065
00066
00067
00068
00069
00070 class SignOfDerivative
00071 : public SinglePointLineSearch
00072 {
00073 public:
00074 friend class DerivativeLineSearchPanel<SignOfDerivative>;
00075
00076
00077
00078
00081 ~SignOfDerivative(void);
00082
00083
00084
00085
00086
00087
00088
00091 virtual std::auto_ptr<Method> Clone() const;
00092
00093
00096 virtual const wxString& Name() const;
00097
00100 virtual MethodIdType Id() const;
00101
00104 static MethodIdType ClassId();
00105
00106 virtual wxString ToString(bool standalone = true) const;
00107
00108
00109
00110 virtual bool CanHandle(const ProblemBase* pProblem) const;
00111
00112 protected:
00113
00116 SignOfDerivative(void);
00117
00122 SignOfDerivative(const SignOfDerivative& from);
00123
00126 DoubleParameter mAlpha;
00129 DoubleParameter mGamma;
00130
00131 virtual wxString& rName();
00132 private:
00133
00134 virtual std::auto_ptr<Result> Solve(
00135 const UnivariateFunction& function,
00136 const ColumnVector& startingPoint,
00137 bool generateResult)
00138 const throw(OptimizationError);
00139
00142 static wxString mName;
00145 static SignOfDerivative mSignOfDerivative;
00146 };
00147
00148
00149
00150
00151
00152
00153
00154 #endif // _SignOfDerivative_h_