00001
00002
00003
00004
00005 #ifndef INCLUDED_ITSQR_H
00006 #define INCLUDED_ITSQR_H
00007
00008
00009 #include "itsbase.h"
00010 #include "taylctrl.h"
00011 #include "messgs.h"
00012
00013
00016 typedef void (*QRFactor)( MATRIX & Q, const MATRIX & A );
00017
00018
00027 class ITS_QR : public ITS_BASE
00028 {
00029
00030 public:
00031
00039 ITS_QR( int order = TAYLOR_CTRL::GetMaxOrder() );
00040
00041
00044 void Init( const PtrODENumeric ODE );
00045
00046
00049 virtual void Compute( INTERVAL_VECTOR & Ytight,
00050 INTERVAL_VECTOR & LocErr,
00051 const INTERVAL & h, int order,
00052 PtrODENumeric ODE,
00053 PtrODESolver Solver );
00054
00055
00061 void SetQRFunction( QRFactor f );
00062
00063
00065 ~ITS_QR();
00066
00067
00068 private:
00069
00072 QRFactor QRFactorFunction;
00073
00075 INTERVAL_MATRIX AjInv;
00076
00078 MATRIX TmpMat1;
00079
00084 void ResizeSpace( int n );
00085
00086 };
00087
00088
00089
00090 inline ITS_QR:: ITS_QR( int order ) :
00091 ITS_BASE( order, MSG_ITS_QR_METHOD )
00092 {
00093 assert( order>0 && order<=TAYLOR_CTRL::GetMaxOrder() );
00094 }
00095
00096
00097 inline void ITS_QR :: SetQRFunction( QRFactor f )
00098 {
00099 assert( f!=NULL );
00100 QRFactorFunction = f;
00101 }
00102
00103
00104 inline ITS_QR :: ~ITS_QR()
00105 {
00106 ;
00107 }
00108
00109
00110 #endif