The Rössler attractor

3-D attractor

Clear[x,y,z]
tmax=200;x0=0;y0=5;z0=5;
a=0.1;b=0.1;c=9;

diffx=-(y+z);
diffy=x+a y;
diffz=b+x z-c z;

soln=NDSolve[{
x'[t]==Evaluate[diffx/.{x->x[t],y->y[t],z->z[t]}],
y'[t]==Evaluate[diffy/.{x->x[t],y->y[t],z->z[t]}],
z'[t]==Evaluate[diffz/.{x->x[t],y->y[t],z->z[t]}],
x[0]==x0,y[0]==y0,z[0]==z0},
{x,y,z},{t,0,tmax},MaxSteps->Infinity];
fixedpoints=Quiet[Solve[{diffx==0,diffy==0,diffz==0},{x,y,z}]];
Print[Style["Coordinates of fixed points",18,Blue]]
coordinates={x,y,z}/.fixedpoints
Gfp=Graphics3D[{PointSize[0.013],Red,Point[coordinates]}];
pplot=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.soln],{t,0,tmax},PlotPoints->1000,AxesLabel->{x[t],y[t],z[t]},PlotStyle->Thin,BoxRatios->{1,1,1},PlotRange->All,LabelStyle->20,ImageSize->Large];
Show[pplot,Gfp]

Periodic orbits, xy-projection

Below a = b = 0.1 and for:
c = 4, period-1 orbit.
c = 6, period-2 orbit.
c = 8.5, period-4 orbit.
c = 8.7, period-8 orbit.
c = 9, sparse chaotic attractor.
c = 12, period-3 orbit.
c = 12.6, period-6 orbit.
c = 13, sparse chaotic attractor.
c = 18, filled-in chaotic attractor.

Manipulate[
ts=35;
tmax=150;
a=0.1;b=0.1;x0=6;y0=6;z0=0;
diffx=-(y+z);diffy=x+a y;diffz=b+x z-c z;
sol=NDSolve[{
x'[t]==Evaluate[diffx/.{x->x[t],y->y[t],z->z[t]}],
y'[t]==Evaluate[diffy/.{x->x[t],y->y[t],z->z[t]}],
z'[t]==Evaluate[diffz/.{x->x[t],y->y[t],z->z[t]}],
x[0]==x0,y[0]==y0,z[0]==z0},{x,y,z},{t,0,tmax},MaxSteps->Infinity];
Grid[{
{ParametricPlot[Evaluate[{x[t],y[t]}/.sol],{t,ts,tmax},Frame->True,FrameLabel-> {x[t],y[t]},PlotRange-> All,ImageSize->450,LabelStyle->20,PerformanceGoal->"Quality"],SpanFromLeft},
{Plot[Evaluate[x[t]/.sol],{t,ts,tmax},Frame->True,FrameLabel-> {t,x[t]},PlotRange-> All,ImageSize->270,LabelStyle->20,PerformanceGoal->"Quality"],
Plot[Evaluate[y[t]/.sol],{t,ts,tmax},Frame->True,FrameLabel-> {t,y[t]},PlotRange-> All,ImageSize->270,LabelStyle->20,PerformanceGoal->"Quality"]}} ],
{{c,4,"Parameter c "},4,16,Appearance->"Labeled"},
SaveDefinitions->True,TrackedSymbols:>{c}]

Periodic orbits xy-projection, animation

ListAnimate[
Table[
ts=35;tmax=150;a=0.1;b=0.1;x0=6;y0=6;z0=0;
diffx=-(y+z);diffy=x+a y;diffz=b+x z-c z;
sol=NDSolve[{
x'[t]==Evaluate[diffx/.{x->x[t],y->y[t],z->z[t]}],
y'[t]==Evaluate[diffy/.{x->x[t],y->y[t],z->z[t]}],
z'[t]==Evaluate[diffz/.{x->x[t],y->y[t],z->z[t]}],
x[0]==x0,y[0]==y0,z[0]==z0},{x,y,z},{t,0,tmax},MaxSteps->Infinity];
Grid[{
{ParametricPlot[Evaluate[{x[t],y[t]}/.sol],{t,ts,tmax},Frame->True,FrameLabel-> {x[t],y[t]},PlotRange-> All,ImageSize->500,LabelStyle->20,PerformanceGoal->"Quality"],SpanFromLeft},
{Plot[Evaluate[x[t]/.sol],{t,ts,tmax},Frame->True,FrameLabel-> {t,x[t]},PlotRange-> All,ImageSize->300,LabelStyle->20,PerformanceGoal->"Quality"],
Plot[Evaluate[y[t]/.sol],{t,ts,tmax},Frame->True,FrameLabel-> {t,y[t]},PlotRange-> All,ImageSize->300,LabelStyle->20,PerformanceGoal->"Quality"]}} ],
{c,4,17,0.05}],
4,AnimationRunning->False]

Creation of this notebook was supported by IT Academy program of Information Technology Foundation for Education (HITSA).