Random-Simplex
A simple tool to generate points on the (n−1)-dimensional simplex.
Cite this software
Description
Random Simplex Matrix
Overview
This repository contains a function that utilises the Dirichlet distribution method to generate points on the (n−1)-dimensional simplex. The randomSimplexMatrix.m generates m x n matrices where each row is a random sample from the (n−1)-dimensional simplex, i.e., it produces vectors where each element is a non-negative number and the sum of all elements in each vector is 1.
About
Methodology
-
Generation of K Unit-Exponential Distributed Random Draws:
- In each row (sample), the function generates K uniform random numbers
y_ifrom the open interval(0,1]. - These are transformed to unit-exponential distributed random numbers
x_i = -log(y_i).
- In each row (sample), the function generates K uniform random numbers
-
Normalization:
- Compute the sum
Sof allx_ivalues.
- Compute the sum
-
Calculation of Simplex Coordinates:
- The coordinates
t_1, ..., t_Kof the final point on the unit simplex are computed ast_i = x_i / S.
- The coordinates
-
Output:
- Returns a matrix, where each row is a vector on the
(n-1)-dimensional simplex.
- Returns a matrix, where each row is a vector on the
Some Applications
Stability Analysis
-
Polynomial Stability/Stability of discrete-time control systems:
Use simplex sampling to generate coefficients for polynomials and analyse their stability by checking if all roots lie within the unit circle.
-
Lyapunov Functions:
Construct Lyapunov functions with randomly sampled coefficients to study the stability of equilibrium points in dynamical systems.
Bifurcation Analysis
-
Parameter Space Exploration:
Investigate the behavior of dynamical systems under different parameter regimes by sampling parameters from a simplex. Identify bifurcation points where system behavior changes qualitatively.
-
Nonlinear Dynamics:
Model/simulate nonlinear systems to study chaos, where initial conditions or parameters are sampled from a simplex.
Additional Scripts
-
simplexSpace.mDemonstrates various plots and visualisations of simplex sampling.
-
MultivariateND.mShowcases an application of simplex sampling for sampling from a multivariate normal distribution.
-
VoronoiDiagram.mVisualise the Voronoi diagram of random points on a 2-dimensional simplex, divides regions based on proximity.
Example Usage
n = 100; % Number of columns (dimensionality of simplex)
m = 1500; % Number of rows (number of samples)
y = randomSimplexMatrix(n, m);
disp('Generated simplex matrix:');
disp(y);