generate a set of lists of initial conditions satisfying a given Hamiltonian constraint
generate_ic(H, ic, N)
any algebraic expression representing the Hamiltonian
set of single initial conditions for the time t, p's, q's, and the energy
positive integer representing the number of desired lists of initial conditions
The numerical study of a given Hamiltonian system usually requires a lot of suitable lists of initial conditions (ICs) satisfying the Hamiltonian constraint. The generate_ic command is a tool for the fast generation of a set of such lists, with the appropriate syntax as required by the poincare command.
The first argument received by generate_ic is the Hamiltonian.
The second argument is a single specification of ICs in the form t=X1, p1=X2, .., qn=Xk, energy=X2n+2, where the Xi are numbers or ranges of numbers, representing initial values for the time, p's, q's, and the energy. The ICs must be given for all but one of the following: t,p's,q's,H_0. If ICs are specified for all these variables, the command checks the values against H for consistency. The IC for a given variable may be a fixed number or a numerical range.
The third argument is the number of requested lists of ICs. Faced with the request of, for example, N ICs giving ranges or fixed numbers for all variables but one, say x, the routine proceeds as follows. The received ICs are separated into numerical ranges and fixed numbers. Each range is then uniformly divided into N numbers, and the command builds N lists by taking one number from each divided range, together with the received fixed numbers for the other variables. These lists are sequentially introduced in H, resulting in N algebraic equations for x. Each equation is then numerically solved, and a set of N lists of complete ICs satisfying the Hamiltonian constraint, with values inside the given ranges, is returned. Remarkably, though generate_ic is a very simple command, it plays a fundamental role in speeding up the numerical studies.
This function is part of the DEtools package, and so it can be used in the form generate_ic(..) only after executing the command with(DEtools). However, it can always be accessed through the long form of the command by using DEtools[generate_ic](..).
The Henon-Heiles Hamiltonian
H ≔ 1⁢p12+p22+q12+q222+q12⁢q2−q233
The initial conditions for numerical experiments that display the progressive disintegration of KAM surfaces are generated by the following for loop. Here, we obtain six sets, related to each value of H_0 respectively, with three different initial conditions each.
forhin124,118,112,18,17,16doicsh ≔ generate_ic⁡H,t=0,p2=0.1,q2=−0.2..0.2,q1=−0.2..−0.1,energy=h,3end do
A Hamiltonian in the context of general relativity
H ≔ 1⁢−p12−q12+2⋅0.125⁢q14+p22+q22+0.652⁢q12⁢q222
Generate a set of one hundred lists of initial conditions, with t=0, q1=0, q2=0, p1 between -.2 and -.812, and p2 taking values to satisfy H=0.
ics ≔ generate_ic⁡H,t=0,p1=−0.2..−0.812,q1=0,q2=0,energy=0,100
Distribute the 100 lists of initial conditions in a nonhomogeneous manner.
ic1 ≔ generate_ic⁡H,t=0,p1=−0.2..−0.7,q1=0,q2=0,energy=0,15
ic2 ≔ generate_ic⁡H,t=0,p1=−0.7..−0.812,q1=0,q2=0,energy=0,85
Finally, create just one set with the desired ICs.
ics ≔ ic1∪ic2
Download Help Document
What kind of issue would you like to report? (Optional)