[SciPy-User] Generating Sparse Random Matrix with positive nullspaces

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

[SciPy-User] Generating Sparse Random Matrix with positive nullspaces

federico vaggi-2
Hi everyone,

I'm trying to generate a set of random coefficients for a system of linear, ordinary differential equations at steady state, such that:

AX = 0

Where A is the NxN matrix that contains the coefficients, and X is a Nx1 by vector of variables.

Since the equations represent a set of chemical reactions, all values of X at steady state have to be positive.  Furthermore, since the system is relatively large
in size, A has to be sparse.

I tried two different approaches, neither really bearing any fruits.

Generation Nx1 vector of positive, normally distributed random numbers (using scipy.truncnorm) and then finding the nullspace of the transpose of that vector using an SVD:

AX = 0
X.T A.T = 0

Then solving for A.T, and transposing for A.

This usually gives me a matrix for A, but the matrix is not sparse.

The other approach is creating a sparse matrix A, then solving for the nullvector X directly, but this usually gives me either negative values for X, or, for very sparse A, mostly zero coefficients.

I think the easiest way to solve this is to create a random, sparse, positive definite matrix A, then solving for X, but a cursory google search(on my phone, so I might have missed something) hasn't revealed anything.  Anyone have good suggestions?


SciPy-User mailing list
[hidden email]