This example is a complete proof of the existence of 3 different periodic solution for the Rossler system
with chaotic parameter values a=5.7, b=0.2.
Let us fix Poincare section and let be the associated Poincare map - see picture below.
Using the Interval Newton Operator
applied to the map we validate that has zero for n=1,2,3. Although we do not check this in the program, these orbits are significantly different and of principal period n=1,2,3, respectively.
The source of this example can be found in the examples/RosslerPeriodicOrbit
directory of the CAPD package.
- Attention
- This program requires C++11 compiler support, for instance gcc-4.8 or newer with -std=c++11 flag.
#include <iostream>
#include "capd/capdlib.h"
using namespace std;
{
IVector y = pm(s1,returnTime,period);
y = pm(s2,monodromyMatrix,returnTime,period);
DP_Minus_Id[0][0] = DP[1][1] - 1.;
DP_Minus_Id[0][1] = DP[1][2];
DP_Minus_Id[1][0] = DP[2][1];
DP_Minus_Id[1][1] = DP[2][2] - 1.;
interval d = DP[1][1]*DP[2][2]-DP[1][2]*DP[2][1];
cout << "\n---------------------------------------------------\n\nN = " << N << endl;
cout << "X = " << X << endl;
cout << "Return time: " << returnTime << endl;
cout << "ev1=" << (tr-s)/2 << ", ev2=" << (tr+s)/2 << endl;
cout << "the existence of period " << period << " orbit verified\n";
else
{
cout << "N is not a subset of X\n\n";
cout <<
"diam(N)=" <<
diam(N) << endl;
cout <<
"diam(X)=" <<
diam(X) << endl;
cout << "N-X" << N-X << endl;
}
}
{
cout.precision(17);
try{
IMap vf(
"par:a,b;var:x,y,z;fun:-(y+z),x+b*y,b+z*(x-a);");
double s = 4e-13;
cout << "Define a box X of diameter " << 2.*s << " around each candidate for p.o. and compute Interval Newton Operator N" << endl;
center[0] = -8.3809417428298;
center[1] = 0.029590060630665;
verifyExistenceOfPeriodicOrbit(pm,center+
box,1);
center[0] = -5.4240738226652;
center[1] = 0.031081210807875;
verifyExistenceOfPeriodicOrbit(pm,center+
box,2);
center[0] = -6.233158628537965;
center[1] = 0.03064011165815;
verifyExistenceOfPeriodicOrbit(pm,center+
box,3);
}catch(exception& e)
{
cout << "\n\nException caught: "<< e.what() << endl;
}
return 0;
}