Consider the Rossler system
This example is a complete proof of
- the existence of an attractor A for the Rossler system with parameter values a=5.7, b=0.2.
- the existence of an uniformly hyperbolic invariant set H inside this attractor on which the dynamics is chaotic.
Let us fix Poincare section and let be the associated Poincare map - see picture below.
The first assertion is proved by showing the existence of a trapping region for . Namely, we show that the set
is mapped into itself by the Poincare map , i.e. .
The existence of chaotic dynamics has been proved for the first time by Piotr Zgliczyński
P. Zgliczyński,
Computer assisted proof of chaos in the Henon map and in the Rossler equations,
Nonlinearity, 1997, Vol. 10, No. 1, 243--252
He introduced a new topological tool for proving the existence of periodic orbits and symbolic dynamics, named covering relations. These geometric conditions simply mean that the edges of a rectangle must be mapped by the function in a proper side of the other rectangle as presented on the picture below.
Uniform hyperbolicity is verified by means of the cone conditions criterion introduced in
H. Kokubu, D. Wilczak, P. Zgliczyński,
Rigorous verification of cocoon bifurcations in the Michelson system,
Nonlinearity 20 (2007) 2147-2174.
The source of the program can be found in the capd/capdDynSys4/examples/RosslerChaoticDynamics
directory of the CAPD library. The program runs within less than five seconds on a laptop-type computer. Most of the time is taken by the verification of the cone conditions.
- Attention
- This program requires C++11 compiler support, for instance gcc-4.8 or newer with -std=c++11 flag.
#include <iostream>
template<class Condition>
bool result = true;
for (int i = 0; i < N; ++i) {
result = result and c(y);
}
return result;
}
bool result = true;
quadraticForm[1][1] = 1.;
quadraticForm[2][2] = -100.;
for (int i = 0; i < N; ++i) {
IVector y = pm(s, monodromyMatrix, returnTime, 2);
DP =
Transpose(DP)*quadraticForm*DP - quadraticForm;
result = result and DP[1][1]>0 and (DP[1][1]*DP[2][2]-
sqr(DP[1][2]))>0;
}
return result;
}
cout << boolalpha;
try {
IMap vf(
"par:a,b;var:x,y,z;fun:-(y+z),x+b*y,b+z*(x-a);");
vf.setParameter("a", a);
vf.setParameter("b", b);
} catch (exception& e) {
cout << "\n\nException caught: " << e.what() << endl;
}
return 0;
}
double g_left
Definition: RosslerChaoticDynamics.cpp:10
double g_rightN
Definition: RosslerChaoticDynamics.cpp:19
double g_rightM
Definition: RosslerChaoticDynamics.cpp:17
double g_bottom
Definition: RosslerChaoticDynamics.cpp:8
bool checkConeCondition(IPoincareMap &pm, double y1, double y2, int N)
Definition: RosslerChaoticDynamics.cpp:46
double g_right
Definition: RosslerChaoticDynamics.cpp:11
double g_top
Definition: RosslerChaoticDynamics.cpp:9
bool checkCondition(IPoincareMap &pm, double y1, double y2, int N, Condition c, int iteration=2)
Definition: RosslerChaoticDynamics.cpp:28
double g_leftN
Definition: RosslerChaoticDynamics.cpp:18
int main()
Definition: RosslerChaoticDynamics.cpp:66
double g_leftM
Definition: RosslerChaoticDynamics.cpp:16
This class uses representation of subset of R^n inherited from template parameter.
Definition: C0HOSet.h:39
The C1 set is represented as doubleton: x + C*r0 + B*r;.
Definition: C1DoubletonSet.h:43
Definition: OdeSolver.h:40
Definition of template class Interval.
Definition: Interval.h:83
This class is used to represent a map .
Definition: Map.h:125
TimeMap class provides class that serves as Poincare section of the form x_i = c.
Definition: CoordinateSection.h:33
PoicareMap class rigorously computes Poincare Map.
Definition: PoincareMap.h:60
double sqr(double x)
Definition: power.h:42
capd::dynset::C1DoubletonSet< capd::IMatrix, C1Rect2Policies > C1Rect2Set
Definition: typedefs.h:54
MatrixType computeDP(const VectorType &Px, const MatrixType &derivativeOfFlow, VectorType &dT, ScalarType returnTime=TypeTraits< ScalarType >::zero())
Simultaneous computation of gradient of return time and derivative of Poincare Map dP.
Definition: BasicPoincareMap_inline.h:137
@ MinusPlus
Definition: BasicPoincareMap.h:37
int order
Definition: tayltst.cpp:31
Matrix< Scalar, cols, rows > Transpose(const Matrix< Scalar, rows, cols > &)
Definition: Matrix.hpp:158
Definition: ApplicationDesc.h:23
intervals::DoubleInterval interval
Definition: DoubleInterval.h:36