maintained by Leslie Foster |
San Jose State University
email: foster "at" math.sjsu.edu
This database (click here to browse) is a collection of numerically singular matrices that arise in real applications or that have characteristic features of problems from practice. For matrices in this collection:
Goals of the database are to make available a set of matrices for testing algorithms designed for singular matrices and to collect software links, references and other information related to numerically singular matrices. The database and web pages may also facilitate understanding of how theoretical concepts such as rank, nullity and singularity should be interpreted for matrices that arise in applications.
When matrices are downloaded in MATLAB format (three formats are available: MATLAB mat-file, Rutherford-Boeing, or Matrix Market) all or, for large matrices, some of the singular values have been precomputed and are available. These singular values permit picturing the full or partial singular value spectrum, which can help to understand the numerical rank of a matrix (see the sample gallery and discussion below) and can facilitate computations that require matrix singular values. For larger matrices -- up to 682,712 by 682,712 -- a routine spnrank (see spnrank.pdf) was created to calculate the numerical rank and a partial singular value spectrum.
These web pages and the SJsingular package are derivative work. They are based on the University of Florida Sparse Matrix Collection and the UFcollection toolbox from the SuiteSparse package by Timothy Davis. The University of Florida database and this database target different types of matrices. However the format, organization and presentation of our web pages are close to the format, organization and presentation of the web pages at University of Florida Sparse Matrix Collection. We greatly appreciate Tim Davis's permission to adapt his work. Key initial modifications to UFcollection were done by Nikolay Botev at San Jose State University.
This collection is managed by Leslie Foster, but "editors" of other collections are attributed, via the Problem.ed field in each problem set. Problem.author is the matrix creator.
For matrices in the above lists the numerical rank and a full or, for larger matrices, partial singular value spectrum has been calculated. The list indicated by "additional singular matrices", below, provides links to the University of Florida Sparse Matrix web site for matrices that are numerical singular, in our sense, but for which the numerical rank has not yet been calculated.
Prob = SJget(10); % Prob is a struct (matrix, name, meta-data, ...) A = Prob.A ; % A is a numerically singular matrix svals = Prob.svals; % the singular values of A SJplot(Prob),shg % plot the singular value spectrum of A disp( SJrank(Prob) ) % display the numerical rank of the matrixYou can also search for matrices that fit your criteria and reorder the matrices -- from inside MATLAB. For example, to download all symmetric matrices into MATLAB, and order them in increasing numerical rank:
index = SJget ; % get index of the SJSU Singular Matrix Collection ids = find (index.numerical_symmetry == 1) ; [ignore, i] = sort (index.numrank (ids)) ; ids = ids (i) ; for id = ids Prob = SJget (id); % Prob is a struct (matrix, name, meta-data, ...) A = Prob.A ; % A is a symmetric matrix disp([SJrank(Prob),size(A)]) % list the numerical rank and size of A endFor an alternate method of downloading matrices try webget.
The SJsingular package includes all the software used to generate these web pages, and to manage the matrices themselves. Most users will not need the SJsingular package. The SJget interface is available independently from the SJsingular package.
Use any reasonable format; just tell me what you use. I prefer either a MATLAB *.mat file or the Matrix Market format. Also if you have a Matlab or other program that generates ill-conditioned matrices you could send me the program and I can use it to generate sample matrices for this collection.