00001 #ifndef MODEL_H
00002 #define MODEL_H
00003
00004 #include <stat/libFN.h>
00005
00006 using namespace bdm;
00007
00009 class IMk1 : public diffbifn {
00010 protected:
00011 double alp1, alp2;
00012
00013 public:
00015 IMk1() :diffbifn () {dimy=4; dimx=3; dimu=1;};
00017 void set_parameters ( double alp10, double alp20) {alp1=alp10; alp2=alp20;}
00018
00019 vec eval ( const vec &x0, const vec &u0 ) {
00020
00021 vec xk=zeros ( dimy );
00022
00023 xk ( 0 ) = 0.2* x0(1) - 0.1* x0(2)+ u0(0);
00024 xk ( 1 ) = x0(0);
00025 xk ( 2 ) = x0(1);
00026 xk ( 3 ) = x0(2);
00027
00028 return xk;
00029 }
00030
00031 void dfdx_cond ( const vec &x0, const vec &u0, mat &A, bool full=true ) {
00032
00033
00034 if (full) {
00035 A = eye(dimy);
00036 A(0,1) = 0.2;
00037 A(0,2) = -0.1;
00038 } else {
00039 };
00040 }
00041
00042 void dfdu_cond ( const vec &x0, const vec &u0, mat &A, bool full=true ) {it_error ( "not needed" );};
00043
00044 };
00045
00047 class OMk1 : public diffbifn {
00048 public:
00050 OMk1() :diffbifn ( ) {dimy=2;dimx=3;dimu=2;};
00051
00052 vec eval(const vec &x0, const vec &u0 ){
00053 vec dt(dimy);
00054
00055 dt(0) = x0(0);
00056 dt(1) = x0(1);
00057 return dt;
00058 }
00059
00060 void dfdx_cond ( const vec &x0, const vec &u0, mat &A, bool full=true ) {
00061
00062
00063 if (full) {
00064 A = zeros(dimy,dimx);
00065 A(0,0)=1.0;
00066 A(1,1)=1.0;
00067 } else {};
00068 }
00069 };
00070
00071 #endif //MODEL_H