00001
00072 #ifndef _Newton_h
00073 #define _Newton_h
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083 #include "../DoubleParameter.h"
00084 #include "../Method.h"
00085 #include "../StandardStopCondition.h"
00086 #include "../ui/BasicMethodPanel.h"
00087
00088
00089
00090
00091
00092 class Newton
00093 : public Method
00094 {
00095 public:
00096
00097 friend class BasicMethodPanel<Newton>;
00098
00099
00100
00103 ~Newton(void);
00104
00105
00106
00107
00108
00111 virtual std::auto_ptr<Method> Clone() const;
00112
00113 virtual void UpdateStartingConditions
00114 (const Result* result) const;
00115
00116 virtual void ResetStartingConditions() const;
00117
00118
00119
00122 virtual const wxString& Name() const;
00123
00126 virtual MethodIdType Id() const;
00127
00130 static MethodIdType ClassId();
00131
00132 virtual wxString ToString(bool standalone = true) const;
00133
00134
00135
00138 virtual bool CanHandle(const ProblemBase* pProblem)
00139 const;
00140 virtual StopConditions AllowedStopConditions() const;
00141
00142 protected:
00143
00146 Newton(void);
00147
00152 Newton(const Newton& from);
00153
00156 mutable ColumnVector mStartingPoint;
00157 ColumnVector mInitialStartingPoint;
00158
00161 CountedPtr<const StandardStopCondition> mcpStopCondition;
00162
00163 virtual wxString& rName();
00164 private:
00165
00166 virtual std::auto_ptr<Result> Optimize(const ProblemBase& problem) const
00167 throw(OptimizationError);
00168
00171 static wxString mName;
00174 static Newton mNewton;
00175
00176 };
00177
00178
00179
00180
00181
00182
00183
00184 #endif // _Newton_h