CAPD::DynSys Library  6.0.0
GeomSet

Classes in capd/geomset directory represent geometry of the set.

They are basis for 'dynset' classes.

On the one hand a naive set representation (as a product of intervals) yields to big overestimations, on the other hand representations with polynomials of high degree are very accurate but when propagated they need a lot of computations.

Internal represenation

We use the following representations: AffineSet and CenteredAffineSet have the form

\[ x+B\cdot r \]

where x,r are interval vectors and B is a matrix. In general x is fought as set center, B is a coordinate system and r stores set size. CenteredAffineSet in addition in constructors checks if r contains 0 and corrects set representation if needed.

DoubletonSet and CenteredDoubletonSet have the form

\[ x+C\cdot r0+B \cdot r \]

where x, r, r0 are interval vectors, B, C are interval matrices. Again x is a set center, B and C are coordinate systems for r and r0 part correspondingly. Then r0 stores an initial set size and r is a container for all computational errors. CenteredDoubletonSet in addition in constructors checks if r and r0 contain 0 and corrects set representation if needed.

Constructors

You can fully specify set giving all details:

AffineSet(x, B , r);
DoubletonSet(x, C, r0, B, r);

If you do not provide some data than by default vectors will be set to 0 and matrices to identity. Possible combinations are:

  • AffineSet and CenteredAffineSet
    • dimension
    • v
    • x, r
    • x, B, r
  • DoubletonSet and CenteredDoubletonSet
    • dimension
    • v
    • x, r0
    • x, C, r0
    • x, C, r0, r
    • x, C,r0, B, r

Accessors

You can not access any field in a class directly, instead you can use get/set functions. For a member m (one of x, r, r0, B, C) there are functions

get_m();
set_m(newValue);

which return or change given field.

If m is a vector then we also define:

getElement_m(i); // returns i-th coordinate of the vector m
setElement_m(i, newValue); // sets i-th coordinate of the vector m to newValue

which get/sets i-th coordinate of a given vector m (i=0,1,...,dimension-1). Coordinates are numbered starting with 0!

If m is a matrix then we define:

getElement_m (int i, int j) // returns m[i][j]
getRow_m (int i) // returns i-th row of m
getColumn_m (int j) // returns j-th column of m
setElement_m (i, j, s) // sets m[i][j] = s
setRow_m (i, v) // sets i-th row of m to v
setColumn_m (j, v) // sets j-th column of f to v

where i=0,1,...,numberOfRows-1 and j=0,1,...,numberOfColumns-1.