00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined (octave_ODES_h)
00024 #define octave_ODES_h 1
00025
00026 #include "ODESFunc.h"
00027 #include "base-de.h"
00028
00029 class
00030 ODES : public base_diff_eqn, public ODESFunc
00031 {
00032 public:
00033
00034 ODES (void)
00035 : base_diff_eqn (), ODESFunc (), theta () { }
00036
00037 ODES (const ColumnVector& s, double tm, ODESFunc& f)
00038 : base_diff_eqn (s, tm), ODESFunc (f), xdot (s.length (), 0.0), theta () { }
00039
00040 ODES (const ColumnVector& s, const ColumnVector& xtheta, double tm,
00041 ODESFunc& f)
00042 : base_diff_eqn (s, tm), ODESFunc (f), xdot (s.length (), 0.0),
00043 theta (xtheta) { }
00044
00045 ODES (const ODES& a)
00046 : base_diff_eqn (a), ODESFunc (a), theta (a.theta) { }
00047
00048 ODES& operator = (const ODES& a)
00049 {
00050 if (this != &a)
00051 {
00052 base_diff_eqn::operator = (a);
00053 ODESFunc::operator = (a);
00054
00055 xdot = a.xdot;
00056 theta = a.theta;
00057 }
00058 return *this;
00059 }
00060
00061 ~ODES (void) { }
00062
00063 ColumnVector parameter_vector (void) { return theta; }
00064
00065 void initialize (const ColumnVector& x, double t);
00066
00067 void initialize (const ColumnVector& x, double t,
00068 const ColumnVector& theta);
00069
00070 protected:
00071
00072
00073 ColumnVector xdot;
00074
00075
00076 ColumnVector theta;
00077 };
00078
00079 #endif
00080
00081
00082
00083
00084
00085