00001 #ifndef __FRosenbrockFn_H__ 00002 #define __FRosenbrockFn_H__ 00003 00004 00031 #include "AbsFObjectiveFn.hpp" 00032 00033 class FRosenbrockFn : public AbsFObjectiveFn 00034 { 00035 public: 00036 virtual ~FRosenbrockFn(){} 00037 00038 virtual double f(FloatVector* x)=0; // function 00039 virtual FloatVector* firstDeriv(FloatVector* x, FloatVector* dest=0)=0; // first derivation 00040 00041 virtual AFSymMatrix* hessianDiag(FloatVector* x, AFSymMatrix* dest=0)=0; // approximated Hessian 00042 00043 virtual AFSymMatrix* hessian(FloatVector* x, AFSymMatrix* dest=0)=0; // Hessian 00044 00045 // used for testing 00046 virtual FloatVector* startPoint(); 00047 virtual FloatVector* solutionPoint(); 00048 }; 00049 00050 #endif 00051