Message Boards Message Boards


Plot the Poincare surface of section for the Henon-Heiles System?

Posted 1 year ago
5 Replies
0 Total Likes

Hi, first to mention I´m an absolute beginner with Mathematica...

My problem is now, that I have to plot the Poincare Surface of Section for the Henon-Heiles System as an exercise in Nonlinear Physics/Chaos. I´m absolutely new to numerics, so I started the Mathematica trial to get into it. Now I´m at this point

abc = {x''[t] + x[t] + 2*x[t]*y[t] == 0,  y''[t] + y[t] + y[t]^2 + x[t]^2 == 0}; 

to define my differential equations

psect[{x0_, y0_, a0_, b0_}] := 
 Reap[NDSolve[{abc, x[0] == x0, y[0] == y0, x '[0] == a0, y'[0] == b0,
      WhenEvent[x[t] == 0, Sow[y[t]]]}, {}, {t, 0, 1000}, 
    MaxSteps -> \[Infinity]]][[-1, 1]]    

here is the critical point ... because if i want to apply the following

abcdata = Map[psect, {
{0, 0.9952906114885919, 1, 1}, {0, 2.1257099470901704, 1, 1}, 
{0, 4.939152797323216, 1, 1}, {0, 4.926744120488727, 1, 1}, 
{0, 1.7074633238173198, 1, 1}, {0, 4.170087631574883, 1, 1}, 
{0, 2.3736566160602277, 1, 1}, {0, 1.4987884558838156, 1, 1}, 
{0, 1.3745418575363608, 1, 1}, {0, 1.3039536044289253, 1, 1}, 
{0, 2.289597511313432, 1, 1}, {0, 4.306922133429981, 1, 1},
 {0, 5.000045498132029, 1, 1}}];

ListPlot[abcdata, ImageSize -> Medium]

i alwas get the Problem that there are only 3 initial conditions, while 4 are needed... but this is something weird, since I can´t find what´s wrong in my system... maybe everything, maybe a small thing. Those are the problems that occur:

NDSolve::ndnco: The number of constraints (3) (initial conditions) is not equal to the total differential order of the system plus the number of discrete variables (4)., Part::partw: Part 1 of {} does not exist., General::stop: Further output of NDSolve::ndnco will be suppressed during this calculation., General::stop: Further output of Part::partw will be suppressed during this calculation.

I´ve almost lost hope... since I´m not able to learn all that general stuff in few days I used as reference and tried to put it into my system... so far it didn´t work. I would be really thankful if anyone has any kind of idea...

5 Replies

The NDSolve runs, although some of the initial conditions lead to solutions that seem to go off to infinity. Try quitting the kernel and re-executing your code. Possibly one of your variables has accidentally been defined (e.g., using = instead of == earlier in your session).

Posted 1 year ago

Thank you, the number of problems did significantly reduce ^^

Althought one is remaining... Part::partw: Part 1 of {} does not exist.

The problem with the Part error is because for those ICs, the orbit goes off to infinity and does not return. The {} is returned from Reap[...] because no points were Sow-ed (or sown in the English Language as opposed to the Wolfram Language :).

Posted 1 year ago

Thanks a lot. The system finally works now :)

It is a courtesy to post your working code, when someone has helped you, so other can make use of it in future.

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract