PRIMME wrapper for Python
Project description
Primme is a Python interface to PRIMME, a C library for computing a few eigenvalues and their corresponding eigenvectors of a real symmetric or complex Hermitian matrix. It can also compute singular values and vectors of a square or rectangular matrix. It can find largest, smallest, or interior singular/eigenvalues and can use preconditioning to accelerate convergence. It is especially optimized for large, difficult problems, and can be a useful tool for both non-experts and experts.
Install
You can install the latest version with pip:
pip install numpy # if numpy is not installed yet pip install primme
Optionally for building the development version do:
git clone https://github.com/primme/primme cd primme make python_install
Usage
In the following examples it is computed few eigenvalues and eigenvectors from a real symmetric matrix:
>>> import Primme, scipy.sparse >>> A = scipy.sparse.spdiags(range(100), [0], 100, 100) # sparse diag. matrix >>> evals, evecs = Primme.eigsh(A, 3, tol=1e-6, which='LA') >>> evals # the three largest eigenvalues of A array([ 99., 98., 97.]) >>> new_evals, new_evecs = Primme.eigsh(A, 3, tol=1e-6, which='LA', ortho=evecs) >>> new_evals # the next three largest eigenvalues array([ 96., 95., 94.])
In the following examples it is computed few singular values and vectors:
>>> import Primme, scipy.sparse >>> A = scipy.sparse.spdiags(range(1, 11), [0], 100, 10) # sparse diag. rect. matrix >>> svecs_left, svals, svecs_right = Primme.svds(A, 3, tol=1e-6, which='SM') >>> svals # the three smallest singular values of A array([ 1., 2., 3.]) >>> A = scipy.sparse.rand(10000, 100, random_state=10) >>> prec = scipy.sparse.spdiags(np.reciprocal(A.multiply(A).sum(axis=0)), ... [0], 100, 100) # square diag. preconditioner >>> svecs_left, svals, svecs_right = Primme.svds(A, 3, which=6.0, tol=1e-6, ... precAHA=prec) >>> ["%.5f" % x for x in svals.flat] # the three closest singular values of A to 0.5 ['5.99871', '5.99057', '6.01065']
Check further examples and the documentation of eigsh and svds.
Citing this code
Please cite (bibtex):
A. Stathopoulos and J. R. McCombs PRIMME: PReconditioned Iterative MultiMethod Eigensolver: Methods and software description, ACM Transaction on Mathematical Software Vol. 37, No. 2, (2010), 21:1-21:30.
L. Wu, E. Romero and A. Stathopoulos, PRIMME_SVDS: A High-Performance Preconditioned SVD Solver for Accurate Large-Scale Computations, arXiv:1607.01404
License Information
PRIMME and this interface is licensed under the 3-clause license BSD.
Contact Information
For reporting bugs or questions about functionality contact Andreas Stathopoulos by email, andreas at cs.wm.edu. See further information in the webpage http://www.cs.wm.edu/~andreas/software.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file primme-2.1.3.tar.gz.
File metadata
- Download URL: primme-2.1.3.tar.gz
- Upload date:
- Size: 245.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b09f085246b1e190e2a2c244578800ea2377c069ae194b2bb38546a90c17abcf
|
|
| MD5 |
243ac694b624a4034bd57fd19d55c2df
|
|
| BLAKE2b-256 |
a84ade99fe8aac33dd82227d9002ce5acae9c0054335f9aa4c28dd0fd1e2594f
|