00001 #ifndef _AbsFvFxn_H 00002 #define _AbsFvFxn_H 00003 00004 00005 00026 #include <math.h> 00027 00028 #include "FloatVector.hpp" 00029 #include "FloatSMatrix.hpp" 00030 00031 class AbsFvFxn 00032 { 00033 protected: 00034 00035 int nVar; 00036 int nOut; 00037 00038 float dx; 00039 00040 public: 00041 AbsFvFxn(int numVars=2, int nOutputs=2){ nVars= numberOfVars; nOut= nOutputs; dx=1.0e-3;} 00042 virtual ~AbsFvFxn(){} 00043 00044 virtual int numberOfVars(){return nVars;} 00045 virtual int numberOfOutputs(){return nOut;} 00046 00047 virtual FloatVector* eval(FloatVector* x, FloatVector* dest=0)=0; // dest avoids recons 00048 00049 // first derivative 00050 virtual FloatSMatrix* jacobian(FloatVector* x, FloatSMatrix* dest=0); 00051 00052 // second derivative 00053 virtual FloatSMatrix* hessian(FloatVector* x, FloatSMatrix* dest=0); 00054 }; 00055 00056 #endif