Closed YouknowIdoknow closed 2 years ago
You clearly found something profoundly weird.
I can reproduce your results insofar as the maximum Lyapunov exponent is inexplicably small (i.e., practically 0) for certain values of τ, e.g., for τ=4.346249 but not for τ=4.34625. (I didn’t look much at the other Lyapunov exponents, but the phenomenon appears to trickle down to them.) This phenomenon persists no matter what I throw at it. My best guess so far would be a resonance phenomenon.
What I could not reproduce is the absence of this phenomenon when computing Lyapunov exponents separately. Instead I get exactly the same results as when computing them in a Python loop. Can you tell me how exactly you computed all Lyapunov exponents with Code 1? It might give me a hint at what is actually going on. Could it be that you used a different selection of τ values and thus somehow missed the resonance?
I calculate the corresponding Lyapunov exponents by adding up the time delays τ from 0.1 to 8 in intervals of 0.1, e.g. when τ = 0.1, the first set of Lyapunov exponents is obtained, when τ = 0.2, the second set of Lyapunov exponents is obtained, and so on, when τ = 8, the last set of Lyapunov exponents is obtained. Finally, all the Lyapunov indices are combined to obtain the spectrum of Lyapunov indices on the left, which varies from time to time.
I calculate the corresponding Lyapunov exponents by adding up the time delays τ from 0.1 to 8 in intervals of 0.1, e.g. when τ = 0.1, the first set of Lyapunov exponents is obtained, when τ = 0.2, the second set of Lyapunov exponents is obtained, and so on, when τ = 8, the last set of Lyapunov exponents is obtained. Finally, all the Lyapunov indices are combined to obtain the spectrum of Lyapunov indices on the left, which varies from time to time.
And how do you enter the τs and run the scripts? I presume that you did not manually alter the value and run the script 80 times?
No, I do manually alter the value without changing any other paprameters and run the script 80 times. After runing one time, I will copy the Lyapunov exponents into a txt file. Furthermore, I have plot the bifurcation diagram varying with τ. Comparing with the Lyapunov exponent spectrum, it can be consistent with each other.
For τ ∈ { 0.1, 0.2, …, 8.0}, I do indeed also obtain a smooth spectrum. So, the issue is not due to manually running the script, but due to using these particular values for τ (or rather not using them). However, I am still clueless why on earth this is so strongly connected to the values of τ. I can change the integration steps, integration parameters, control parameters; I can even change the dynamics, including simply speeding it up, and the issue remains.
While I dig deeper into this, does this model have a name or are there any known peculiar dynamical properties that may be of relevance to this?
Finally, instead of manually entering numbers, you can loop over something like:
taus = [ float(f"{a}.{b}") for a in range(8) for b in range(10) ]
I somewhat narrowed the problem down: If the delay only has 14 relevant digits, the problem appears not to occur. Consequentially, a makeshift fix for you is to do something like:
for tau in taus:
tau = round(tau,14)
…
Apart from that, consider my mind boggled and my curiosity piqued. I am investigating.
Thank you. Sir, This moldel is our team developed. I have copied the code into my sc
ript and run it. But it does not work.
You have to skip the 0.0
in the beginning. Anyway, the rounding solution I posted later should be more convenient in any respect.
Ok. Thank you, sir. Moreover, how can I speed up this script? Beacause I have many number which are needed to operate by this script.
Moreover, how can I speed up this script?
Here is how I would do it:
Mind that the number of Lyapunov exponents can be a major factor. So, ensure that you really need six of them.
Good job! Thank you so much
I found the culprit and it all boils down to this issue in SymEngine. Due to this, one of the Jacobians needed for computing the Lyapunov exponents gets miscomputed.
For now, rounding all your delays to 14 digits is the best makeshift solution I can offer.
Ok, I get it.
The underlying issue in Symengine has been fixed, so getting their latest version should solve this. (See this on how to do that.)
Hi, sir. when I use the JiTcdde to get the Lyapunov exponent spectrum varying with the delay, the Lyapaunov exponent spectrum is not smooth, as shown in the diagram on the right. But when I input the time delays one by one, run them individually to save the final result, and then repeat this operation, I get a smooth Lyapunov exponent spectrum with changing time delays, as shown in the diagram on the left. How can I solve this problem? The following is my code
Code 1:
Code 2: