To study the Henon-Heiles Hamiltonian
and also the use of the Poincare package within Maple
| > | T:=(p1^2+p2^2)/2; V:=(q1^2+q2^2)/2 + q1^2*q2-q2^3/3; |
| > | H:=T+V: |
| > | with(plots): with(DEtools): |
First we look at the structure of the potential a bit
| > | plot3d(V,q1=-1.5..1.5,q2=-1.5..1.5); |
| > | for n from 1 to 8 do plt||n:=implicitplot(V=n/48,q1=-1.5..1.5,q2=-1.5..1.5,numpoints=2000) end do: |
| > | display([seq(plt||m,m=1..8)]); |
| > | hamilton_eqs(H); |
The command below generates initial conditions for Hamilton's equations, given a specific value of the energy and enough other quantities.
We begin with E = 0.06.
We also recall that this potential has a separatrix dividing its bounded solutions from its unbounded ones at E = 1/6.
| > | ic:=generate_ic(H,{t=0,p2=-0.05,q2=-0.2,q1=-0.1,energy=0.06},1); |
The command below, setup for 3 variables by the "3" parameter at the end, tracks time trajectories as they move along the 3-dimensional, constant
energy surface in the 4-dimensional phasespace, made by two 2-tori.
| > | P:=poincare(H,t=0..500,ic,stepsize=0.05,iterations=3,scene=[q2=-0.5..0.5,p2=-0.5..0.5,q1=-0.5..0.5],3): |
| > | display(P,orientation=[-98,70],tickmarks=[3,3,3]); |
This command, below, however, just gives me a 2-dimensional Poincare section, with the gray plane shown above,
so that the graph is just points of intersection.
| > | poincare(H,t=0..500,ic,stepsize=0.05,iterations=3,scene=[q2,p2]); |
Looking at the graph above, we can indeed see that it looks like the graph of a "slice" of a torus by a flat plane, i.e., two circles.
However, at least one of the circles has been badly deformed because the torus is bent, twisted, and deformed.
NOW, let's try some other choices for the energy!
| > | ic:=generate_ic(H,{t=0,p2=-0.05,q2=-0.2,q1=-0.1,energy=0.09},1); |
| > | P:=poincare(H,t=0..500,ic,stepsize=0.05,iterations=3,scene=[q2=-0.5..0.5,p2=-0.5..0.5,q1=-0.5..0.5],3): |
| > | display(P,orientation=[-98,70],tickmarks=[3,3,3]); |
| > | poincare(H,t=0..500,ic,stepsize=0.05,iterations=3,scene=[q2,p2]); |
| > | ic3:=generate_ic(H,{t=0,p2=-0.05,q2=-0.2,q1=-0.1,energy=0.10},1); |
| > |
| > | P:=poincare(H,t=0..500,ic3,stepsize=0.05,iterations=3,scene=[q2=-0.5..0.5,p2=-0.5..0.5,q1=-0.5..0.5],3): |
| > | display(P,orientation=[-98,70],tickmarks=[3,3,3]); |
| > | poincare(H,t=0..600,ic3,stepsize=0.05,iterations=3,scene=[q2,p2]); |
| > | ic3:=generate_ic(H,{t=0,p2=-0.05,q2=-0.2,q1=-0.1,energy=0.11},1); |
| > | P:=poincare(H,t=0..500,ic3,stepsize=0.05,iterations=3,scene=[q2=-0.5..0.5,p2=-0.5..0.5,q1=-0.5..0.5],3): |
| > | display(P,orientation=[-98,70],tickmarks=[3,3,3]); |
| > | poincare(H,t=0..600,ic3,stepsize=0.05,iterations=3,scene=[q2,p2]); |
| > | poincare(H,t=0..1600,ic3,stepsize=0.05,iterations=3,scene=[q2,p2]); |
| > | ic3:=generate_ic(H,{t=0,p2=-0.05,q2=-0.2,q1=-0.1,energy=0.12},1); P:=poincare(H,t=0..500,ic3,stepsize=0.05,iterations=3,scene=[q2=-0.5..0.5,p2=-0.5..0.5,q1=-0.5..0.5],3): display(P,orientation=[-98,70],tickmarks=[3,3,3]); |
| > | poincare(H,t=0..600,ic3,stepsize=0.05,iterations=3,scene=[q2,p2]); |
| > | poincare(H,t=0..1600,ic3,stepsize=0.05,iterations=3,scene=[q2,p2]); |
| > | ic3:=generate_ic(H,{t=0,p2=-0.05,q2=-0.2,q1=-0.1,energy=0.14},1); P:=poincare(H,t=0..500,ic3,stepsize=0.05,iterations=3,scene=[q2=-0.5..0.5,p2=-0.5..0.5,q1=-0.5..0.5],3): display(P,orientation=[-98,70],tickmarks=[3,3,3]); |
| > | poincare(H,t=0..600,ic3,stepsize=0.05,iterations=3,scene=[q2,p2]); poincare(H,t=0..1600,ic3,stepsize=0.05,iterations=3,scene=[q2,p2]); |
| > |