Lyapunov Exponent Misclassifying Periodic Behavior as Chaotic

14 ビュー (過去 30 日間)
Ahmed Rehan
Ahmed Rehan 2023 年 10 月 8 日
回答済み: Paras Gupta 2023 年 12 月 15 日
I am encountering an issue with the Lyapunov exponent calculation in MATLAB when applied to a time series dataset. Despite the dataset exhibiting clear periodic behavior, the Lyapunov exponent calculation consistently returns a positive value, indicating chaotic behavior.
Each cycle within the time series contains multiple zero crossings and exhibits abrupt variations, but when viewed as a whole, it undeniably follows a periodic pattern.
Thank you for your assistance.
Best regards,

回答 (1 件)

Paras Gupta
Paras Gupta 2023 年 12 月 15 日
I understand that the attached code to calculate Lyapunov exponent returns a positive value for the given periodic data instead of the expected zero value. Upon reviewing the code, it seems that the value of the parameter 'ExpansionRange' does not completely capture the local dynamics of the complex signal.
The 'ExpansionRange' parameter in the context of calculating the Lyapunov exponent is used to define the scope of the data over which the algorithm estimates the divergence or convergence of nearby trajectories in the reconstructed phase space. It essentially sets a window or range within which the algorithm looks at the divergence of trajectories to estimate the Lyapunov exponent.
Here are some considerations for choosing the 'ExpansionRange' parameter:
  1. Identify the characteristic timescale of the abrupt variations within a cycle. 'ExpansionRange' should be long enough to cover the abrupt variations to capture the local dynamics accurately. However, it should not be so long that it spans multiple cycles and confuses the periodicity with divergence.
  2. Perform a sensitivity analysis by calculating the Lyapunov exponent for various 'ExpansionRange' and observe the stability and consistency of the results. The 'ExpansionRange' that provides a stable Lyapunov exponent estimate, which is close to zero for a periodic system, could be a good choice.
For example, setting the value of 'ExpansionRange' equal to 5000 (approximate number of data points in one timescale of the given data) and considering a shortened time vector with around 10000 points in the attached code gives a small negative value of the Lyapunov exponent. The small negative value can be attributed to the numerical precision errors associated with the algorithm in use.
For more information on 'ExpansionRange' and the algorithm to compute Lyapunov exponent, please refer to the following documentation.
Hope this helps.


Help Center および File ExchangeMatrix Computations についてさらに検索




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by