CAPD::DynSys Library  6.0.0
Covrel

Files

file  GridSet.h
 
file  GridSets.h
 
file  HSet3D.h
 
file  HSetMD.hpp
 
file  HSetND.h
 
file  HSetND.hpp
 
file  HSet2D.cpp
 
file  HSet3D.cpp
 
file  HSetMD.cpp
 
file  HSetND.cpp
 
file  TripleSet.cpp
 

Classes

class  capd::covrel::HSet< VectorT, IVectorT >
 this is an abstract class for h-sets - from paper by Gidea-Zgliczynski 'Covering relations ...' http://www.im.uj.edu.pl/~zgliczyn More...
 
class  capd::covrel::HSet2D< MatrixT, IMatrixT >
 This class provides a h-set in R^2 with one unstable and one stable direction. More...
 
struct  capd::covrel::CheckCoveringRelation2DParameters
 
class  capd::covrel::HSetMD< MatrixT, IMatrixT >
 This class provides a h-set in an arbitrary dimension. More...
 
class  capd::covrel::HSetWithCones< HSetT, QFormT >
 
class  capd::covrel::QuadraticForm< MatrixT >
 
class  capd::covrel::TripleSet
 TripleSet - a planar h-set with one unstable direction Authors: Implementation of derived classes and functions: Jaroslaw Dulak and Daniel Wilczak. More...
 

Enumerations

enum  capd::covrel::Side { capd::covrel::leftSide = -1 , capd::covrel::bothSides = 0 , capd::covrel::rightSide = 1 }
 

Functions

template<typename MatrixType >
bool capd::covrel::isPositiveDefined (const MatrixType &A)
 
template<typename Map , typename HSet2D , typename QuadraticForm >
bool capd::covrel::checkConesCondition (Map &f, const HSet2D &N1, const HSet2D &N2, const QuadraticForm &Q1, const QuadraticForm &Q2)
 Function checks cones condition. More...
 
template<typename Map , typename HSetWithCones >
bool capd::covrel::checkConesCondition (Map &f, const HSetWithCones &N1, const HSetWithCones &N2, const capd::covrel::CheckCoveringRelation2DParameters &param=capd::covrel::CheckCoveringRelation2DParameters(1, 1, 1, 1))
 Function checks cones condition. More...
 
template<typename C0SetType , typename Map , typename DynSys , typename HSetWithCones >
bool capd::covrel::checkCoveringRelationAndConesCondition (Map &f, DynSys &ds, const HSetWithCones &N1, const HSetWithCones &N2, const capd::covrel::CheckCoveringRelation2DParameters &param=capd::covrel::CheckCoveringRelation2DParameters(1, 1, 1, 1))
 Checks covering relation $ N_1 \Rightarrow N_2 $ and corresponding cones condition. More...
 
template<typename C0SetType , typename Map , typename DynSys , typename HSetWithCones >
bool capd::covrel::checkCoveringRelationAndConesCondition (Map &f, const HSetWithCones &N1, const HSetWithCones &N2, const capd::covrel::CheckCoveringRelation2DParameters &param=capd::covrel::CheckCoveringRelation2DParameters(1, 1, 1, 1))
 Checks covering relation $ N_1 \Rightarrow N_2 $ and corresponding cones condition. More...
 
template<typename HSetType , typename SetType >
bool capd::covrel::outside (const HSetType &hset, const SetType &set)
 verifies if set does not intersect the support of h-set More...
 
template<typename HSetType , typename SetType >
bool capd::covrel::inside (const HSetType &hset, const SetType &set)
 verifies if set is inside the support of h-set More...
 
template<typename HSetType , typename SetType >
bool capd::covrel::across (const HSetType &hset, const SetType &set)
 verifies if set does not intersect N^+ More...
 
template<typename HSetType , typename SetType >
bool capd::covrel::mapaway (const HSetType &hset, const SetType &set)
 
template<typename HSetType , typename SetType >
bool capd::covrel::onLeft (const HSetType &hset, const SetType &set)
 Checks if set in on the left side of the hset (works only in 2D) More...
 
template<typename HSetType , typename SetType >
bool capd::covrel::onRight (const HSetType &hset, const SetType &set)
 Checks if set in on the right side of the hset (works only in 2D) More...
 
template<typename MatrixType , typename VectorType >
MatrixType capd::covrel::convertColumnsTo (const VectorType &column1, const VectorType &column2)
 Converts two column vectors to given MatrixType. More...
 
template<typename C0SetType , typename DynSysT , typename MatrixT , typename IMatrixT >
bool capd::covrel::checkCoveringRelation2D (DynSysT &dynsys, const capd::covrel::HSet2D< MatrixT, IMatrixT > &N1, const capd::covrel::HSet2D< MatrixT, IMatrixT > &N2, const CheckCoveringRelation2DParameters &param=CheckCoveringRelation2DParameters(1, 1, 1, 1))
 
template<typename Vector1 , typename Vector2 >
void capd::covrel::embedVector (const Vector1 &v1, Vector2 &v2, const std::vector< typename Vector1::size_type > &d)
 
template<typename Vector1 , typename Vector2 >
void capd::covrel::embedVector (const Vector1 &vector, Vector2 &result, size_t fullDimension, const std::vector< typename Vector1::size_type > &d)
 it embeds vector into a space of fullDimension in d[i] we pass coordiante where to put i-th coordinate of given vector other coordinates are set to 0. More...
 
template<typename Matrix1 , typename Matrix2 >
void capd::covrel::embedMatrix (const Matrix1 &m1, Matrix2 &m2, const std::vector< typename Matrix1::size_type > &d)
 
template<typename IVector >
bool capd::covrel::InSide (const TripleSet &S, const IVector &IV, typename IVector::size_type d1, typename IVector::size_type d2)
 
bool capd::covrel::InSide (const TripleSet &S, const TripleSet::IntervalVector &v)
 
template<typename IVector >
bool capd::covrel::OutSide (const TripleSet &S, const IVector &IV, typename IVector::size_type d1, typename IVector::size_type d2)
 
bool capd::covrel::OutSide (const TripleSet &S, const TripleSet::IntervalVector &v)
 
template<typename IVector >
bool capd::covrel::Across (const TripleSet &S, const IVector &IV, typename IVector::size_type d1, typename IVector::size_type d2)
 
bool capd::covrel::Across (const TripleSet &S, const TripleSet::IntervalVector &v)
 
template<typename IVector >
bool capd::covrel::MapAway (const TripleSet &S, const IVector &IV, typename IVector::size_type d1, typename IVector::size_type d2)
 
bool capd::covrel::MapAway (const TripleSet &S, const TripleSet::IntervalVector &v)
 
template<typename IVector >
bool capd::covrel::LeftSide (const TripleSet &S, const IVector &IV, typename IVector::size_type d1, typename IVector::size_type d2)
 
bool capd::covrel::LeftSide (const TripleSet &S, const TripleSet::IntervalVector &v)
 
template<typename IVector >
bool capd::covrel::RightSide (const TripleSet &S, const IVector &IV, typename IVector::size_type d1, typename IVector::size_type d2)
 
bool capd::covrel::RightSide (const TripleSet &S, const TripleSet::IntervalVector &v)
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSetMD< MatrixT, IMatrixT >::gridSet (GridSet< IMatrix > &G, const std::vector< size_type > &grid, const std::vector< size_type > &d, size_type totalDimension) const
 this procedure creates a grid of the whole h-set in the following form: G.center[i] + G.C * G.r d is a vector of indices of coordinates if the set is embeded in higher dimension More...
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSetMD< MatrixT, IMatrixT >::gridFace (GridSet< IMatrix > &grid, const std::vector< size_type > &gridSizes, const std::vector< size_type > &dimensions, size_type totalDimension, size_type coordinateToFix, Side side=bothSides) const
 in the grid it returns uniform grid of the given face More...
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridLeftEdge (GridSet< IMatrix > &G, size_type grid, size_type d1=0, size_type d2=1) const
 in the G it returns uniform grid of the left edge More...
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridRightEdge (GridSet< IMatrix > &G, size_type grid, size_type d1=0, size_type d2=1) const
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridBottomEdge (GridSet< IMatrix > &G, size_type grid, size_type d1=0, size_type d2=1) const
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridTopEdge (GridSet< IMatrix > &G, size_type grid, size_type d1=0, size_type d2=1) const
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridSet (GridSet< IMatrix > &G, size_type grid1, size_type grid2, size_type d1=0, size_type d2=1) const
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridLeftEdge (GridSet< IMatrix > &G, size_type gridSize, size_type totalDimension=2, size_type d1=0, size_type d2=1) const
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridRightEdge (GridSet< IMatrix > &G, size_type gridSize, size_type totalDimension=2, size_type d1=0, size_type d2=1) const
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridBottomEdge (GridSet< IMatrix > &G, size_type gridSize, size_type totalDimension=2, size_type d1=0, size_type d2=1) const
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridTopEdge (GridSet< IMatrix > &G, size_type gridSize, size_type totalDimension=2, size_type d1=0, size_type d2=1) const
 
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridSet (GridSet< IMatrix > &G, size_type grid1, size_type grid2, size_type totalDimension=2, size_type d1=0, size_type d2=1) const
 

Detailed Description

Enumeration Type Documentation

◆ Side

Enumerator
leftSide 
bothSides 
rightSide 

Function Documentation

◆ across()

template<typename HSetType , typename SetType >
bool capd::covrel::across ( const HSetType &  hset,
const SetType &  set 
)
inline

verifies if set does not intersect N^+

◆ Across() [1/2]

template<typename IVector >
bool capd::covrel::Across ( const TripleSet S,
const IVector IV,
typename IVector::size_type  d1,
typename IVector::size_type  d2 
)

◆ Across() [2/2]

bool capd::covrel::Across ( const TripleSet S,
const TripleSet::IntervalVector v 
)
inline

◆ checkConesCondition() [1/2]

template<typename Map , typename HSet2D , typename QuadraticForm >
bool capd::covrel::checkConesCondition ( Map &  f,
const HSet2D N1,
const HSet2D N2,
const QuadraticForm Q1,
const QuadraticForm Q2 
)

Function checks cones condition.

Definition of cones condition: $ \forall x,y\in |N1| Q2(f_c(x),f_c(y)) > Q1(x,y) $, where f_c is map f expressed in coordinates of N1 and N2 Cones condition is satisfied if matrix $ V = Df_c^T * Q2 * Df_c - Q1 $ is positive defined.

Parameters
fmap R^n -> R^n
N1first h-set
N2second h-set
Q1quadratic for associated with N1
Q2quadratic for associated with N2

◆ checkConesCondition() [2/2]

template<typename Map , typename HSetWithCones >
bool capd::covrel::checkConesCondition ( Map &  f,
const HSetWithCones N1,
const HSetWithCones N2,
const capd::covrel::CheckCoveringRelation2DParameters param = capd::covrel::CheckCoveringRelation2DParameters(1, 1, 1, 1) 
)

Function checks cones condition.

Definition of cones condition: $ \forall x,y\in |N1| Q2(f_c(x),f_c(y)) > Q1(x,y) $, where f_c is map f expressed in coordinates of N1 and N2 Cones condition is satisfied if matrix $ V = Df_c^T * Q2 * Df_c - Q1 $ is positive defined.

Parameters
fmap R^n -> R^n
N1first h-set with connes
N2second h-set with connes
paramparameters of the computation

◆ checkCoveringRelation2D()

template<typename C0SetType , typename DynSysT , typename MatrixT , typename IMatrixT >
bool capd::covrel::checkCoveringRelation2D ( DynSysT &  dynsys,
const capd::covrel::HSet2D< MatrixT, IMatrixT > &  N1,
const capd::covrel::HSet2D< MatrixT, IMatrixT > &  N2,
const CheckCoveringRelation2DParameters param = CheckCoveringRelation2DParameters(1, 1, 1, 1) 
)

◆ checkCoveringRelationAndConesCondition() [1/2]

template<typename C0SetType , typename Map , typename DynSys , typename HSetWithCones >
bool capd::covrel::checkCoveringRelationAndConesCondition ( Map &  f,
const HSetWithCones N1,
const HSetWithCones N2,
const capd::covrel::CheckCoveringRelation2DParameters param = capd::covrel::CheckCoveringRelation2DParameters(1, 1, 1, 1) 
)

Checks covering relation $ N_1 \Rightarrow N_2 $ and corresponding cones condition.

See also
checkConesCondition
Parameters
fmap R^n -> R^n used to check cones condition
N1first h-set with cones
N2second h-set with cones

◆ checkCoveringRelationAndConesCondition() [2/2]

template<typename C0SetType , typename Map , typename DynSys , typename HSetWithCones >
bool capd::covrel::checkCoveringRelationAndConesCondition ( Map &  f,
DynSys ds,
const HSetWithCones N1,
const HSetWithCones N2,
const capd::covrel::CheckCoveringRelation2DParameters param = capd::covrel::CheckCoveringRelation2DParameters(1, 1, 1, 1) 
)

Checks covering relation $ N_1 \Rightarrow N_2 $ and corresponding cones condition.

See also
checkConesCondition
Parameters
fmap R^n -> R^n used to check cones condition
dsdynamical system used to move set in checking covering relation
N1first h-set with cones
N2second h-set with cones

◆ convertColumnsTo()

template<typename MatrixType , typename VectorType >
MatrixType capd::covrel::convertColumnsTo ( const VectorType &  column1,
const VectorType &  column2 
)

Converts two column vectors to given MatrixType.

Example: convertColumnsTo<DMatrix>( v1, v2);

◆ embedMatrix()

template<typename Matrix1 , typename Matrix2 >
void capd::covrel::embedMatrix ( const Matrix1 &  m1,
Matrix2 &  m2,
const std::vector< typename Matrix1::size_type > &  d 
)

◆ embedVector() [1/2]

template<typename Vector1 , typename Vector2 >
void capd::covrel::embedVector ( const Vector1 &  v1,
Vector2 &  v2,
const std::vector< typename Vector1::size_type > &  d 
)

◆ embedVector() [2/2]

template<typename Vector1 , typename Vector2 >
void capd::covrel::embedVector ( const Vector1 &  vector,
Vector2 &  result,
size_t  fullDimension,
const std::vector< typename Vector1::size_type > &  d 
)

it embeds vector into a space of fullDimension in d[i] we pass coordiante where to put i-th coordinate of given vector other coordinates are set to 0.

it resizes result vector (if needed).

◆ gridBottomEdge() [1/2]

template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridBottomEdge ( GridSet< IMatrix > &  G,
size_type  grid,
size_type  d1 = 0,
size_type  d2 = 1 
) const

◆ gridBottomEdge() [2/2]

template<typename MatrixT , typename IMatrixT >
template<typename IMatrix >
template capd::covrel::GridSet< capd::IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridBottomEdge< capd::IMatrix > ( GridSet< IMatrix > &  G,
size_type  gridSize,
size_type  totalDimension = 2,
size_type  d1 = 0,
size_type  d2 = 1 
) const
inline

◆ gridFace()

template<typename MatrixType , typename IMatrixType >
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSetMD< MatrixType, IMatrixType >::gridFace ( GridSet< IMatrix > &  grid,
const std::vector< size_type > &  gridSizes,
const std::vector< size_type > &  dimensions,
size_type  totalDimension,
size_type  coordinateToFix,
Side  side = bothSides 
) const

in the grid it returns uniform grid of the given face

Parameters
gridSizesnumber of pieces in the grid
coordinateToFixwhich wall should be grided
sidewhich side of given coordinate should be grided : both, left or right
totalDimensiondimension of the space (can be bigger than 2 if we embed the set)
dimensionsif hset is embedded in higher dimension then we put first coordinate in dimensions[0] coordinate, second in dimensions[1], ... and the rest set to 0.

◆ gridLeftEdge() [1/2]

template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridLeftEdge ( GridSet< IMatrix > &  G,
size_type  grid,
size_type  d1 = 0,
size_type  d2 = 1 
) const

in the G it returns uniform grid of the left edge

Parameters
gridnumber of pieces in the grid
d1,d2if hset is embeded in higher dimension than we put first coordinate in d1, second in d2 the rest sets to 0.

◆ gridLeftEdge() [2/2]

template<typename MatrixT , typename IMatrixT >
template<typename IMatrix >
template capd::covrel::GridSet< capd::IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridLeftEdge< capd::IMatrix > ( GridSet< IMatrix > &  G,
size_type  gridSize,
size_type  totalDimension = 2,
size_type  d1 = 0,
size_type  d2 = 1 
) const
inline

◆ gridRightEdge() [1/2]

template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridRightEdge ( GridSet< IMatrix > &  G,
size_type  grid,
size_type  d1 = 0,
size_type  d2 = 1 
) const

◆ gridRightEdge() [2/2]

template<typename MatrixT , typename IMatrixT >
template<typename IMatrix >
template capd::covrel::GridSet< capd::IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridRightEdge< capd::IMatrix > ( GridSet< IMatrix > &  G,
size_type  gridSize,
size_type  totalDimension = 2,
size_type  d1 = 0,
size_type  d2 = 1 
) const
inline

◆ gridSet() [1/3]

template<typename MatrixType , typename IMatrixType >
template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::HSetMD< MatrixType, IMatrixType >::gridSet ( GridSet< IMatrix > &  G,
const std::vector< size_type > &  grid,
const std::vector< size_type > &  d,
size_type  totalDimension 
) const

this procedure creates a grid of the whole h-set in the following form: G.center[i] + G.C * G.r d is a vector of indices of coordinates if the set is embeded in higher dimension

◆ gridSet() [2/3]

template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridSet ( GridSet< IMatrix > &  G,
size_type  grid1,
size_type  grid2,
size_type  d1 = 0,
size_type  d2 = 1 
) const

◆ gridSet() [3/3]

template<typename MatrixT , typename IMatrixT >
template<typename IMatrix >
template capd::covrel::GridSet< capd::IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridSet< capd::IMatrix > ( GridSet< IMatrix > &  G,
size_type  grid1,
size_type  grid2,
size_type  totalDimension = 2,
size_type  d1 = 0,
size_type  d2 = 1 
) const
inline

◆ gridTopEdge() [1/2]

template<typename IMatrix >
GridSet< IMatrix > & capd::covrel::TripleSet::gridTopEdge ( GridSet< IMatrix > &  G,
size_type  grid,
size_type  d1 = 0,
size_type  d2 = 1 
) const

◆ gridTopEdge() [2/2]

template<typename MatrixT , typename IMatrixT >
template<typename IMatrix >
template capd::covrel::GridSet< capd::IMatrix > & capd::covrel::HSet2D< MatrixT, IMatrixT >::gridTopEdge< capd::IMatrix > ( GridSet< IMatrix > &  G,
size_type  gridSize,
size_type  totalDimension = 2,
size_type  d1 = 0,
size_type  d2 = 1 
) const
inline

◆ inside()

template<typename HSetType , typename SetType >
bool capd::covrel::inside ( const HSetType &  hset,
const SetType &  set 
)
inline

verifies if set is inside the support of h-set

◆ InSide() [1/2]

template<typename IVector >
bool capd::covrel::InSide ( const TripleSet S,
const IVector IV,
typename IVector::size_type  d1,
typename IVector::size_type  d2 
)

◆ InSide() [2/2]

bool capd::covrel::InSide ( const TripleSet S,
const TripleSet::IntervalVector v 
)
inline

◆ isPositiveDefined()

template<typename MatrixType >
bool capd::covrel::isPositiveDefined ( const MatrixType &  A)

◆ LeftSide() [1/2]

template<typename IVector >
bool capd::covrel::LeftSide ( const TripleSet S,
const IVector IV,
typename IVector::size_type  d1,
typename IVector::size_type  d2 
)

◆ LeftSide() [2/2]

bool capd::covrel::LeftSide ( const TripleSet S,
const TripleSet::IntervalVector v 
)
inline

◆ mapaway()

template<typename HSetType , typename SetType >
bool capd::covrel::mapaway ( const HSetType &  hset,
const SetType &  set 
)
inline

◆ MapAway() [1/2]

template<typename IVector >
bool capd::covrel::MapAway ( const TripleSet S,
const IVector IV,
typename IVector::size_type  d1,
typename IVector::size_type  d2 
)

◆ MapAway() [2/2]

bool capd::covrel::MapAway ( const TripleSet S,
const TripleSet::IntervalVector v 
)
inline

◆ onLeft()

template<typename HSetType , typename SetType >
bool capd::covrel::onLeft ( const HSetType &  hset,
const SetType &  set 
)
inline

Checks if set in on the left side of the hset (works only in 2D)

◆ onRight()

template<typename HSetType , typename SetType >
bool capd::covrel::onRight ( const HSetType &  hset,
const SetType &  set 
)
inline

Checks if set in on the right side of the hset (works only in 2D)

◆ outside()

template<typename HSetType , typename SetType >
bool capd::covrel::outside ( const HSetType &  hset,
const SetType &  set 
)
inline

verifies if set does not intersect the support of h-set

◆ OutSide() [1/2]

template<typename IVector >
bool capd::covrel::OutSide ( const TripleSet S,
const IVector IV,
typename IVector::size_type  d1,
typename IVector::size_type  d2 
)

◆ OutSide() [2/2]

bool capd::covrel::OutSide ( const TripleSet S,
const TripleSet::IntervalVector v 
)
inline

◆ RightSide() [1/2]

template<typename IVector >
bool capd::covrel::RightSide ( const TripleSet S,
const IVector IV,
typename IVector::size_type  d1,
typename IVector::size_type  d2 
)

◆ RightSide() [2/2]

bool capd::covrel::RightSide ( const TripleSet S,
const TripleSet::IntervalVector v 
)
inline