Change the way period is computed

Currently, the period is computed as

period = 2 * pi / arg(lambda_2),

where lambda_2 is the second largest eigenvalue (in modulus) and arg is a determination of the argument in [0, 2 * pi]. When arg(lambda_2) = 0 the period is taken to be 0.

I have several minor problems with this:

  • first, note that if unless arg(lambda_2) = 0 mod pi, then the complex conjugate of lambda_2 is also an eigenvalue of the projection matrix -- which of these eigenvalues should we use to compute period?
  • second, note that the (very unlikely) case where there are more than two subdominant eigenvalues with same modulus is not covered. Again, which one should be used in this case?
  • as a more minor point, I do not really like the convention period = 0 when lambda_2 is real positive.

However, a more serious problem is that I think it would make more sense to use

period = | 2 * pi / Arg(lambda_2) |,

where Arg is the principal determination of the argument, which takes its values in [-pi, pi]. I think this is a better measure of the period of oscillations. Also, note that it solves the first of the problems I mentioned since lambda_2 and its complex conjugate would then yield the same period.

Finally, the period is said to be "in radians" in the GUI, but I think it is in "time-units"