Fork of NetworkDynamics.jl modified to deal with non-diagonal noise.
A new vertex struct NonDiagonalSDEVertex(f!, dim, noise_dim::Int, slide::Int, mass_matrix, sym)
is introduced.
noise_dim
is the number of components of noise in a vertex equation (vertex-wise Ito dimension). Only problems with homogeneous Ito dimesions are currently supported.slide
controls how the non-diagonal noise is injected. if it is set zero, the noise is vertex-independent (common noise), while if it is set equals tonoise_dim
, the noise can be vertex-dependent.
noise_rate_prototype
of aSDEProblem
should also be appropriately adjusted in accordance with whether the noise is shared or not. Consider a system of SDEs withN
vertices for an example. If the noise is shared among vertices,noise_rate_prototype
should be an array of size(N*dim, noise_dim)
, otherwise set it that of size(N*dim, N*noise_dim)
.
This is just a naive workaround, so its performance has not been examined and important features such as sparse arrays for are not supported. (Sparse arrays for noise_rate_prototype
noise_rate_prototype
is a bad idea, explained as Keep noise vectors dense #436.) The features which are not tested and hence might not be supported currently are as follows.
- Non-identity mass matrix
ODEEdge
- DDEs (promotions are not defined)
noise_rate_prototype
option defined as other than normalArray
- Networks with heterogeneous Ito dimensions