Menu

#62 How to set perturbation in ode_PD2po

---
closed
nobody
None
2024-11-29
2024-05-17
Marc
No

Dear Coco support

I am analysing a 4-dimensional vector field with one parameter. On a periodic branch, I get two PD points. I now want to calculate the period-doubled branches connecting the PD points, using the ode_PD2po constructor.

Trying to start from both PD points, and both to the left and right directions, seems to yield only one of the two period-doubled branches. In the other cases, the previously obtained periodic branch is followed. Therefore, I try to specify the starting direction (perturbation), in order to find the missing second period-doubled branch. As indicated on p. 45 of PO-Tutorial.pdf, I use the -var option followed by a vector of perturbations.

  1. Using a horizontal perturbation vector,
    ode_PD2po(…,’-var',[0 1 0 -1]),
    yields the error
    Error using assert ode_isol2coll: incompatible specification of vectors of perturbations.

  2. Using a vertical perturbation vector,
    ode_PD2po(…,’-var’,[0; 1; 0; -1]),
    yields another error :
    `Error using assert
    coco_add_func: required function 'po.orb.coll.test' not found

Error in coco_add_func (line 364)
assert(all(idx), '%s: required function ''%s'' not found', ...

Error in po_construct_tst (line 17)
prob = coco_add_func(prob, fid, @test_SN_PD_TR, data, ...

Error in po_add (line 74)
[prob, data] = po_construct_tst(prob, data);

Error in ode_isol2po (line 114)
prob = po_add(prob, data);

Error in ode_PD2po (line 62)
prob = ode_isol2po(prob, oid, data.fhan, data.dfdxhan, data.dfdphan, ...`.

Am I doing something wrong? Where can I find more information (in the book Recipes for Continuation)?

Discussion

  • Harry Dankowicz

    Harry Dankowicz - 2024-05-17

    Hi Marc,

    I am not sure what you mean by "one of the period-doubled branches." If I understand the situation correctly, there is only one branch that connects the two bifurcation points. It may show up as having two parts because of sampling at the original period, but it's the same orbit sampled twice (as when we plot intersections with a Poincare section).

    If you would like to sample twice per period, you would need to create an appropriate monitor function. For example, such a function can use polynomial interpolation to locate an approximate point at a certain time (an example of this is shown in the GettingStartedWithCOCO tutorials).

    As for the use of -var, this should be understood as a flag used by the coll toolbox to perform continuation of solutions to the corresponding variational problem, not as a means of continuing along a particular direction. So, this should not be used here. As for the errors, 1) is due to the use of a row matrix. I am not sure about 2), but would be able to track it down with the help of your code.

    Best,

    Harry

     
  • Marc

    Marc - 2024-11-24

    Thank you for the information. I was confused.
    I finally understood how to use ode_PD2po with success in order to find the period-doubling branch between two PDs.
    This question can be closed.

     

    Last edit: Marc 2024-11-24
  • Harry Dankowicz

    Harry Dankowicz - 2024-11-29
    • status: open --> closed
     

Log in to post a comment.

MongoDB Logo MongoDB