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"