The Conley-Morse Graphs Software
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
MapOdeApprox Class Referenceabstract

This class defines a map for the nonlinear density dependent overcompensatory Leslie population model. More...

#include <odeapprox.h>

Inheritance diagram for MapOdeApprox:
MapOdeTimeT MapTight MapType MapDuffingApprox MapLorenzApprox MapRoesslerApprox MapVanderPolApprox

Public Member Functions

 MapOdeApprox (double step, int nSteps, int nSamples, double margin=0.01)
 The constructor in which one sets the step size and the number of steps for the non-rigorous integration, the number of sample points in each direction, and the margin to add around the box (as a fraction of its actual width). More...
 
 ~MapOdeApprox ()
 The destructor. More...
 
void setParam (const double *left, const double *right, int n)
 Sets the parameters to the given intervals defined by their left and right coordinates. More...
 
void compute (const double *xleft, const double *xright, double *yleft, double *yright, int dim, const spcCoord *coord, int subdiv) const
 Computes the image of a box whose left and right coordinates are given. More...
 
- Public Member Functions inherited from MapOdeTimeT
 MapOdeTimeT (const std::string &formula, int order, double step, int n)
 The constructor which takes the formula for the ODE in the format used in the CAPD library. More...
 
 ~MapOdeTimeT ()
 The destructor. More...
 
void setParam (const double *left, const double *right, int n)
 Sets the parameters to the given intervals defined by their left and right coordinates. More...
 
void compute (const IntervalVectorType &x, RectSetType &y, int dim, const spcCoord *coord, int subdiv) const
 Computes a rectangular set that is an outer enclosure of the image of the given box. More...
 
void setBoundingBox (const double *left, const double *right, int dim, int stepsBetweenChecks)
 Sets a bounding box for the area of interest. More...
 
void setDefaultBoundingBox ()
 Sets the bounding box to the default one, as defined when setting the phase space. More...
 
bool adjust (bool successful, int subdiv)
 Adjusts parameters if necessary after a successful computation or after an unsuccessful computation of the graph of the map at a specific subdivision depth. More...
 
std::string getOptInfo () const
 Gets a single line of information on optimization of the computation of the map, so that it can be used by maps created for the same and nearby parameter values. More...
 
void useOptInfo (const std::string &info)
 Uses a prevously saved line of information on optimization of the computation of the map for the same or nearby parameter values. More...
 
void saveInternals (chomp::multiwork::mwData &data) const
 Saves the internal parameters and other data of the map to the mwData structure. More...
 
void loadInternals (chomp::multiwork::mwData &data)
 Retrieves the internal paramters and other data of the map from the mwData structure. More...
 
double getTimeStep (int subdiv) const
 Returns an approximation of the currently recommended integration time t for the time-t map at the given subdivision depth. More...
 
- Public Member Functions inherited from MapTight
 MapTight ()
 The default constructor of an object which describes a map. More...
 
 ~MapTight ()
 The destructor of an object which describe a map. More...
 
void compute (const double *xleft, const double *xright, double *yleft, double *yright, int dim, const spcCoord *coord, int subdiv) const
 Computes an interval bounding box for the image of a given box. More...
 
virtual void compute (const IntervalVectorType &x, RectSetType &y, int dim, const spcCoord *coord, int subdiv) const =0
 Computes a rectangular set that is an outer enclosure of the image of the given box. More...
 
- Public Member Functions inherited from MapType
 MapType ()
 The default constructor of an object which describes a map. More...
 
virtual ~MapType ()
 The destructor of an object which describe a map. More...
 
virtual void setParam (const double *left, const double *right, int n)
 Sets the parameters to the given intervals defined by their left and right coordinates. More...
 
const double & getLeftParam (int n) const
 Returns the left value of the given parameter. More...
 
const double & getRightParam (int n) const
 Returns the right value of the given parameter. More...
 
virtual void compute (const double *xleft, const double *xright, double *yleft, double *yright, int dim, const spcCoord *coord, int subdiv) const =0
 Computes the image of a box whose left and right coordinates are given. More...
 
void operator() (const IntervalType *x, IntervalType *y, int dim, const spcCoord *coord, int subdiv) const
 An interface to the function 'compute' based on intervals. More...
 
bool adjust (bool successful, int subdiv)
 Adjusts parameters if necessary after a successful computation or after an unsuccessful computation of the graph of the map at a specific subdivision level. More...
 
std::string getOptInfo () const
 Gets a single line of information on optimization of the computation of the map, so that it can be used by maps created for the same and nearby parameter values. More...
 
void useOptInfo (const std::string &info)
 Uses a prevously saved line of information on optimization of the computation of the map for the same or nearby parameter values. More...
 
void saveInternals (chomp::multiwork::mwData &data) const
 Saves the internal parameters and other data of the map to the mwData structure. More...
 
void loadInternals (chomp::multiwork::mwData &data)
 Retrieves the internal paramters and other data of the map from the mwData structure. More...
 
virtual double getTimeStep (int subdiv) const
 Returns the time step, which is 1 for a map, or the time t of integration in case of a time-t map of a flow. More...
 
virtual std::string name () const
 Returns the name of the map. More...
 

Private Member Functions

virtual void vectorField (double t, const double *x, double *y, int dim) const =0
 The vector field. More...
 
 MapOdeApprox (const MapOdeApprox &)
 The copy constructor should not be used. More...
 
MapOdeApproxoperator= (const MapOdeApprox &)
 The assignment operator should not be used. More...
 
void RungeKutta (double t, double *x, double step, int dim, double *buffer) const
 The Runge-Kutta method for iterating a point, using the vector field defined in this class. More...
 
void fadeVectorField (const double *x, double *y, int dim) const
 Makes a correction to the vector field to make it fade gradually outside the bounding box if one is in defined and in use for the parent class MapOdeTimeT. More...
 

Static Private Member Functions

static void computeRanges (const double *samples, int nSamples, int dim, double *minimal, double *maximal)
 Computes the ranges of coordinates. More...
 

Private Attributes

double step_
 The size of the step for itegrating the flow. More...
 
int nSteps_
 The number of steps to use. More...
 
int nSamples_
 The number of samples in each direction. More...
 
double margin_
 The margin to add around the box (a fraction of its width). More...
 

Additional Inherited Members

- Static Public Member Functions inherited from MapOdeTimeT
template<class Array1 , class Array2 >
static void setPhaseSpace (const Array1 &offset, const Array2 &width, int dim, int subdivDepth, int stepsBetweenChecks=2)
 Sets the phase space for an automatic generation of bounding boxes. More...
 
- Protected Attributes inherited from MapOdeTimeT
double * boundingBox
 A bounding box for the area where the trajectories are computed. More...
 
int boundingBoxDim
 The dimension of the bounding box. More...
 

Detailed Description

This class defines a map for the nonlinear density dependent overcompensatory Leslie population model.

The interpretation of parameters depends on the dimension.

Definition at line 60 of file odeapprox.h.

Constructor & Destructor Documentation

◆ MapOdeApprox() [1/2]

MapOdeApprox::MapOdeApprox ( double  step,
int  nSteps,
int  nSamples,
double  margin = 0.01 
)
inline

The constructor in which one sets the step size and the number of steps for the non-rigorous integration, the number of sample points in each direction, and the margin to add around the box (as a fraction of its actual width).

Definition at line 131 of file odeapprox.h.

References nSamples_, nSteps_, and step_.

◆ ~MapOdeApprox()

MapOdeApprox::~MapOdeApprox ( )
inline

The destructor.

Definition at line 162 of file odeapprox.h.

◆ MapOdeApprox() [2/2]

MapOdeApprox::MapOdeApprox ( const MapOdeApprox )
private

The copy constructor should not be used.

Member Function Documentation

◆ compute()

void MapOdeApprox::compute ( const double *  xleft,
const double *  xright,
double *  yleft,
double *  yright,
int  dim,
const spcCoord coord,
int  subdiv 
) const
inlinevirtual

Computes the image of a box whose left and right coordinates are given.

Fills in the images with the left and right coordinates of the image box.

Reimplemented from MapTight.

Definition at line 279 of file odeapprox.h.

References computeRanges(), margin_, nSamples_, nSteps_, RungeKutta(), and step_.

◆ computeRanges()

void MapOdeApprox::computeRanges ( const double *  samples,
int  nSamples,
int  dim,
double *  minimal,
double *  maximal 
)
inlinestaticprivate

Computes the ranges of coordinates.

Definition at line 261 of file odeapprox.h.

Referenced by compute().

◆ fadeVectorField()

void MapOdeApprox::fadeVectorField ( const double *  x,
double *  y,
int  dim 
) const
inlineprivate

Makes a correction to the vector field to make it fade gradually outside the bounding box if one is in defined and in use for the parent class MapOdeTimeT.

Definition at line 177 of file odeapprox.h.

References MapOdeTimeT::boundingBox, and MapOdeTimeT::boundingBoxDim.

Referenced by RungeKutta().

◆ operator=()

MapOdeApprox & MapOdeApprox::operator= ( const MapOdeApprox )
private

The assignment operator should not be used.

◆ RungeKutta()

void MapOdeApprox::RungeKutta ( double  t,
double *  x,
double  step,
int  dim,
double *  buffer 
) const
inlineprivate

The Runge-Kutta method for iterating a point, using the vector field defined in this class.

The buffer should be preallocated for 5*dim entries.

Definition at line 225 of file odeapprox.h.

References fadeVectorField(), and vectorField().

Referenced by compute().

◆ setParam()

void MapOdeApprox::setParam ( const double *  left,
const double *  right,
int  n 
)
inlinevirtual

Sets the parameters to the given intervals defined by their left and right coordinates.

This function calls the original function from the class MapType, and skips the function from MapOdeTimeT.

Reimplemented from MapType.

Definition at line 168 of file odeapprox.h.

References MapType::setParam().

◆ vectorField()

virtual void MapOdeApprox::vectorField ( double  t,
const double *  x,
double *  y,
int  dim 
) const
privatepure virtual

The vector field.

Parameters (if any) should be determined using the methods of the class MapType: getLeftParam and getRightParam.

Implemented in MapDuffingApprox, MapLorenzApprox, MapRoesslerApprox, and MapVanderPolApprox.

Referenced by RungeKutta().

Member Data Documentation

◆ margin_

double MapOdeApprox::margin_
private

The margin to add around the box (a fraction of its width).

Definition at line 98 of file odeapprox.h.

Referenced by compute().

◆ nSamples_

int MapOdeApprox::nSamples_
private

The number of samples in each direction.

Definition at line 95 of file odeapprox.h.

Referenced by compute(), and MapOdeApprox().

◆ nSteps_

int MapOdeApprox::nSteps_
private

The number of steps to use.

Definition at line 92 of file odeapprox.h.

Referenced by compute(), and MapOdeApprox().

◆ step_

double MapOdeApprox::step_
private

The size of the step for itegrating the flow.

Definition at line 89 of file odeapprox.h.

Referenced by compute(), and MapOdeApprox().


The documentation for this class was generated from the following file: