CAPD DynSys Library  5.2.0
capd::diffIncl::DiffInclusionCW< MapT, DynSysT > Class Template Reference

Class for rigorous integration of differential inclusions. More...

#include <capd/diffIncl/DiffInclusionCW.h>

Public Types

typedef DiffInclusion< MapT, DynSysT > BaseClass
 
typedef BaseClass::MultiMapType MultiMapType
 
typedef BaseClass::MapType MapType
 
typedef BaseClass::FunctionType FunctionType
 
typedef BaseClass::MatrixType MatrixType
 
typedef BaseClass::VectorType VectorType
 
typedef BaseClass::ScalarType ScalarType
 
typedef BaseClass::NormType NormType
 
typedef MatrixType::size_type size_type
 
typedef MapT::MapType VectorFieldType
 
typedef capd::dynsys::OdeSolver< typename MapT::MapType > DynSysType
 
typedef DynSysType::SolutionCurve SolutionCurve
 
typedef capd::dynsys::OdeSolver< typename MapT::MapType > ::StepControlType StepControlType
 

Public Member Functions

 DiffInclusionCW (MultiMapType &diffIncl, size_type order, NormType const &norm, ScalarType const &expErrorTolerance=capd::TypeTraits< ScalarType >::epsilon())
 
VectorType perturbations (const ScalarType &time, const VectorType &x)
 Bounds for perturbation of solution of selected ODE after one time step. More...
 
template<typename SetType >
void operator() (SetType &set)
 This operator computes image of the set (in given representation) using set.move function, see capd/dynsys/Move.h for details This template together with SetTraits prevent usage of various types of jets with incompatible solvers. The user will get an exception at runtime with clear message instead of unreadable compiler error. More...
 
template<typename SetType >
void operator() (SetType &set, SetType &result)
 Computes image of the set (in set's representation) and stores it in the result set. More...
 
virtual VectorType enclosure (const ScalarType &t, const VectorType &x)
 eclosure of solution of diff. inclusion during one time step starting at x More...
 
virtual VectorType diffInclusionEnclosure (const ScalarType &t, const VectorType &x)
 eclosure of solution of diff. inclusion during one time step starting at x More...
 
virtual VectorType dynamicalSystemEnclosure (const ScalarType &t, const VectorType &x)
 eclosure of solution of selected ODE during one time step starting at x More...
 
ScalarType getStep () const
 returns current time step More...
 
virtual VectorType diffInclusionEnclosure (const ScalarType &t, const VectorType &x)
 eclosure of solution of diff. inclusion during one time step starting at x More...
 
virtual VectorType dynamicalSystemEnclosure (const ScalarType &t, const VectorType &x)
 eclosure of solution of selected ODE during one time step starting at x More...
 
virtual VectorType enclosure (const ScalarType &t, const VectorType &x)
 eclosure of solution of diff. inclusion during one time step starting at x More...
 
const MapTypegetVectorField () const
 returns RHS of a diff. inclusion More...
 
MapTypegetVectorField ()
 returns RHS of a diff. inclusion More...
 
int getOrder () const
 returns order of numerical method More...
 
void setOrder (int newOrder)
 sets order of numerical method More...
 
void setStep (const ScalarType &newStep)
 sets currect time step More...
 
void adjustTimeStep (const ScalarType &newStep)
 
DynSysTypegetDynamicalSystem ()
 returns dynamical system (numerical ODE integrator) More...
 
const DynSysTypegetDynamicalSystem () const
 returns dynamical system (numerical ODE integrator) More...
 
int dimension () const
 
const SolutionCurvegetCurve ()
 
virtual ScalarType getCoeffNorm (unsigned i, int degree) const
 
void clearCoefficients ()
 
ScalarType computeNextTimeStep (const SetType &x, const ScalarType &maxStep)
 
ScalarType getFirstTimeStep (const SetType &x, const ScalarType &maxStep)
 
void turnOnStepControl ()
 
void turnOffStepControl ()
 
void onOffStepControl (bool _onOffStepControl)
 
const StepControlTypegetStepControl () const
 
void setStepControl (const StepControlType &stepControl)
 
bool isStepChangeAllowed () const
 
void setAbsoluteTolerance (double tol)
 
void setRelativeTolerance (double tol)
 
double getAbsoluteTolerance () const
 
double getRelativeTolerance () const
 
ScalarType getMaxStep () const
 
void setMaxStep (ScalarType maxStep)
 

Static Public Member Functions

static double getEffectiveTolerance (Solver &solver, const SetType &s)
 

Protected Attributes

ScalarType m_errorTolerance
 error tolerance in the exp(A) computations More...
 
NormTypem_norm
 norm used in perturbation estimations More...
 
MultiMapTypem_diffIncl
 RHS of differential inclusion. More...
 
DynSysType m_dynamicalSystem
 dynamical system of selected ODE (numerical integrator) More...
 

Detailed Description

template<typename MapT, typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
class capd::diffIncl::DiffInclusionCW< MapT, DynSysT >

Class for rigorous integration of differential inclusions.

It uses Component Wise method to bound perturbations.

For more details on algorithm see:
T. Kapela, P. ZgliczyƄski, A Lohner-type algorithm for control systems and ordinary differential inclusions, Discrete and Continuous Dynamical Systems B, 11 (2009), 365-385.

Template arguments:

  • MapT - MultiMap that stores RHS of the differential inclusion in the form : selection + 'error bounds' (we assume that it implements all methods that class capd::diffIncl::MultiMap has).
  • DynSysT - numerical method for ODE integration

Member Typedef Documentation

◆ BaseClass

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef DiffInclusion<MapT, DynSysT> capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::BaseClass

◆ DynSysType

typedef capd::dynsys::OdeSolver< typename MapT::MapType > capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::DynSysType
inherited

◆ FunctionType

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef BaseClass::FunctionType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::FunctionType

◆ MapType

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef BaseClass::MapType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::MapType

◆ MatrixType

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef BaseClass::MatrixType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::MatrixType

◆ MultiMapType

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef BaseClass::MultiMapType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::MultiMapType

◆ NormType

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef BaseClass::NormType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::NormType

◆ ScalarType

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef BaseClass::ScalarType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::ScalarType

◆ size_type

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef MatrixType::size_type capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::size_type

◆ SolutionCurve

◆ StepControlType

typedef capd::dynsys::OdeSolver< typename MapT::MapType > ::StepControlType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::StepControlType
inherited

◆ VectorFieldType

typedef MapT::MapType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::VectorFieldType
inherited

◆ VectorType

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
typedef BaseClass::VectorType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::VectorType

Constructor & Destructor Documentation

◆ DiffInclusionCW()

template<typename MapT , typename DynSysT >
capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::DiffInclusionCW ( MultiMapType diffIncl,
size_type  order,
NormType const &  norm,
ScalarType const &  expErrorTolerance = capd::TypeTraits<ScalarType>::epsilon() 
)

Member Function Documentation

◆ adjustTimeStep()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::adjustTimeStep ( const ScalarType newStep)
inlineinherited

< sets time step but does not change step control settings (compare setStep)

◆ clearCoefficients()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::clearCoefficients
inlineinherited

◆ computeNextTimeStep()

ScalarType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::computeNextTimeStep ( const SetType &  x,
const ScalarType maxStep 
)
inlineinherited

◆ diffInclusionEnclosure() [1/2]

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
DiffInclusion< MapT, DynSysT >::VectorType capd::diffIncl::DiffInclusion< MapT, DynSysT >::diffInclusionEnclosure
inline

eclosure of solution of diff. inclusion during one time step starting at x

Computes enclosure of image of given set for differential inclusion during whole time step.

◆ diffInclusionEnclosure() [2/2]

DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::VectorType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::diffInclusionEnclosure ( const ScalarType t,
const VectorType x 
)
inlinevirtualinherited

eclosure of solution of diff. inclusion during one time step starting at x

Computes enclosure of image of given set for differential inclusion during whole time step.

◆ dimension()

int capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::dimension
inlineinherited

◆ dynamicalSystemEnclosure() [1/2]

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
DiffInclusion< MapT, DynSysT >::VectorType capd::diffIncl::DiffInclusion< MapT, DynSysT >::dynamicalSystemEnclosure
inline

eclosure of solution of selected ODE during one time step starting at x

◆ dynamicalSystemEnclosure() [2/2]

DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::VectorType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::dynamicalSystemEnclosure ( const ScalarType t,
const VectorType x 
)
inlinevirtualinherited

eclosure of solution of selected ODE during one time step starting at x

◆ enclosure() [1/2]

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
DiffInclusion< MapT, DynSysT >::VectorType capd::diffIncl::DiffInclusion< MapT, DynSysT >::enclosure
inline

eclosure of solution of diff. inclusion during one time step starting at x

◆ enclosure() [2/2]

DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::VectorType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::enclosure ( const ScalarType t,
const VectorType x 
)
inlinevirtualinherited

eclosure of solution of diff. inclusion during one time step starting at x

◆ getAbsoluteTolerance()

double capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getAbsoluteTolerance
inlineinherited

◆ getCoeffNorm()

virtual ScalarType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getCoeffNorm ( unsigned  i,
int  degree 
) const
inlinevirtualinherited

◆ getCurve()

const SolutionCurve& capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getCurve
inlineinherited

◆ getDynamicalSystem() [1/2]

const DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::DynSysType & capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getDynamicalSystem
inlineinherited

returns dynamical system (numerical ODE integrator)

◆ getDynamicalSystem() [2/2]

const DynSysType& capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getDynamicalSystem
inherited

returns dynamical system (numerical ODE integrator)

◆ getEffectiveTolerance()

static double capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getEffectiveTolerance ( Solver solver,
const SetType &  s 
)
inlinestaticinherited

◆ getFirstTimeStep()

ScalarType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getFirstTimeStep ( const SetType &  x,
const ScalarType maxStep 
)
inlineinherited

◆ getMaxStep()

ScalarType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getMaxStep
inlineinherited

◆ getOrder()

int capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getOrder
inlineinherited

returns order of numerical method

◆ getRelativeTolerance()

double capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getRelativeTolerance
inlineinherited

◆ getStep()

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
DiffInclusion< MapT, DynSysT >::ScalarType capd::diffIncl::DiffInclusion< MapT, DynSysT >::getStep
inline

returns current time step

◆ getStepControl()

const StepControlType& capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getStepControl
inlineinherited

◆ getVectorField() [1/2]

MapType& capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getVectorField
inherited

returns RHS of a diff. inclusion

◆ getVectorField() [2/2]

MapT & capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::getVectorField
inlineinherited

returns RHS of a diff. inclusion

◆ isStepChangeAllowed()

bool capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::isStepChangeAllowed
inlineinherited

◆ onOffStepControl()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::onOffStepControl ( bool  _onOffStepControl)
inlineinherited

◆ operator()() [1/2]

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
template<typename SetType >
void capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::operator() ( SetType &  set)
inline

This operator computes image of the set (in given representation) using set.move function, see capd/dynsys/Move.h for details This template together with SetTraits prevent usage of various types of jets with incompatible solvers. The user will get an exception at runtime with clear message instead of unreadable compiler error.

◆ operator()() [2/2]

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
template<typename SetType >
void capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::operator() ( SetType &  set,
SetType &  result 
)
inline

Computes image of the set (in set's representation) and stores it in the result set.

Parameters
[in]setC^0 or C^1 set representing initial conditions
[out]resulton return contains image of the set

◆ perturbations()

template<typename MapT , typename DynSysT >
DiffInclusionCW< MapT, DynSysT >::VectorType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::perturbations ( const ScalarType time,
const VectorType x 
)

Bounds for perturbation of solution of selected ODE after one time step.

We use Component Wise algorithm

Parameters
xset before the the step
Returns
rigorous bounds for perturbations

◆ setAbsoluteTolerance()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::setAbsoluteTolerance ( double  tol)
inlineinherited

◆ setMaxStep()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::setMaxStep ( ScalarType  maxStep)
inlineinherited

◆ setOrder()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::setOrder ( int  newOrder)
inlineinherited

sets order of numerical method

◆ setRelativeTolerance()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::setRelativeTolerance ( double  tol)
inlineinherited

◆ setStep()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::setStep ( const ScalarType newStep)
inlineinherited

sets currect time step

sets time step but does not change step control settings (compare setStep)

◆ setStepControl()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::setStepControl ( const StepControlType stepControl)
inlineinherited

◆ turnOffStepControl()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::turnOffStepControl
inlineinherited

◆ turnOnStepControl()

void capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::turnOnStepControl
inlineinherited

Member Data Documentation

◆ m_diffIncl

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
MultiMapType& capd::diffIncl::DiffInclusion< MapT, DynSysT >::m_diffIncl
protected

RHS of differential inclusion.

◆ m_dynamicalSystem

DynSysType capd::diffIncl::DiffInclusion< MapT, capd::dynsys::OdeSolver< typename MapT::MapType > >::m_dynamicalSystem
protectedinherited

dynamical system of selected ODE (numerical integrator)

◆ m_errorTolerance

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
ScalarType capd::diffIncl::DiffInclusionCW< MapT, DynSysT >::m_errorTolerance
protected

error tolerance in the exp(A) computations

◆ m_norm

template<typename MapT , typename DynSysT = capd::dynsys::OdeSolver< typename MapT::MapType>>
NormType* capd::diffIncl::DiffInclusion< MapT, DynSysT >::m_norm
protected

norm used in perturbation estimations