[SciPy-user] How to generate random positive definite matrix
Mon Jun 11 10:09:01 CDT 2007
David Cournapeau wrote:
> Hi there,
> I need to generate random positive definite matrix, mainly for
> testing purpose. Before, I was generating them using a random matrix A
> given by randn, and computing A'A. Unfortunately, if A is singular, so
> is A'A. Is there a better way to do than testing whether A is singular ?
> They do not need to follow a specific distribution (but I would like to
> avoid them to follow a really special "pattern").
Strictly diagonally dominant matrices are positive definite. So you could generate a random A,
compute AA= A'A and then increase the elements on the diagonal to make sure that
AA[i,i] > sum( abs(AA[i,j]), j != i ),
e.g., compute the sum on the right-hand side and then add 1 to it and assign the result to AA[i,i].
More simply, you could compute A'A + alpha*I for some alpha > 0 of your choice and where I is the
identity matrix. All eigenvalues of this matrix are >= alpha, which make it "safely" positive definite.
More information about the SciPy-user