Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StaticArrays not suitable for high dimensional systems #5

Closed
RainerEngelken opened this issue Jun 27, 2017 · 1 comment · Fixed by #51
Closed

StaticArrays not suitable for high dimensional systems #5

RainerEngelken opened this issue Jun 27, 2017 · 1 comment · Fixed by #51
Labels

Comments

@RainerEngelken
Copy link
Contributor

StaticArrays.jl is great, but not useful for large arrays that are associated with high-dimensional systems, Maybe one could use StaticArrays only for low dimensional systems (say up to 10 variables) and use usual Base.Arrays for high dimensional systems? Also, I guess it might be worth mentioning that the computational cost involved in direct estimating entropies grows exponential in the degrees of freedom, so this is also rather limited to low dimensional systems.

@Datseris
Copy link
Member

In general this package was intended to target only low-dimensional systems, since all the methods that at least I will write here will be really target towards there, and scale exponentially with the system dimension.

However, it could be a good thing to make different methods for higher dimensional systems that do use in-place operations and take advantage of mutable arrays. Fortunately this is not hard with the current set-up, because the system dimensionality is actually one of the parameters of the Parametric Types. For example, a discrete system is simply:

struct DiscreteDS{D, T<:Real, F, J} <: DiscreteDynamicalSystem
  state::SVector{D,T}
  eom::F
  jacob::J
end

which means that methods could be dispatched on D, or at least have a general method e.g. lyapunov which can dispatch do lyapunov_small when D<10 and to lyapunov_large otherwise.

I think this will not be hard to implement. I really hope some contributors will show up to do this, since it is easy and I would prefer to focus on writing new methods that require knowledge of dynamical systems besides coding.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants