Skip to main content

Computation of pseudospectra of matrices in parallel

Project description

Mpseudo performs multicore and precise computation of pseudospectra of (square or rectangular) matricies. It uses pseudospectra definition and find epsilon-values on a regular grid of a complex plane. It uses multiprocessing module to share computations between cpu-cores, and mpmath module to make calculations with high precision.

Dependencies

Mpmath module is needed to perform computations with high precision.

pip install mpmath

If you don’t need ability of high precision pseudospectra computation (more than 15 digits), the mpseudo can work without mpmath. The only requirement - NumPy. It should be installed on your system or in virtual environment.

Installation

git clone https://github.com/scidam/mpseudo.git

Example

The pseudospectrum of the gallery(5) MatLab matrix looks like this (up to 100-digits of accuracy used for a matrix resolvent computation):

Pseudospectrum of gallery(5) MatLab matrix

Pseudospectrum of gallery(5) MatLab matrix

The pseudospectra above is obtained via the following lines of code:

from matplotlib import pyplot
from mpseudo import pseudo

# Gallery(5) MatLab matrix (exact eigenvalue is 0 (the only!))
A = [[-9, 11, -21, 63, -252],
     [70, -69, 141, -421, 1684],
     [-575, 575, -1149, 3451, -13801],
     [3891, -3891, 7782, -23345, 93365],
     [1024, -1024, 2048, -6144, 24572]]

# compute pseudospectrum in the bounding box [-0.05,0.05,-0.05,0.05] with
# resolution 100x100 (ncpu = 2 processes) and 50-digits precision.
psa, X, Y = pseudo(A, ncpu=2, digits=50, ppd=100, bbox=[-0.05,0.05,-0.05,0.05])

# show results
pyplot.conourf(X, Y, psa)
pyplot.show()

Note, if mpmath module is not installed, pseudospectrum of the matrix will be computed with standard (double, 15-digits) precision, which is not sufficient for this case.

Interesting, but Eigtool or PseudoPy tools (along with scipy eigvals function) applied to the matrix A in the example above lead to inaccurate results (due to insufficient (double) precision):

Pseudospectrum of gallery(5) MatLab matrix plotted via PseudoPy

Pseudospectrum of gallery(5) MatLab matrix plotted via PseudoPy

Read about this script in Russian here.

License

Mpseudo is free software licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mpseudo-0.1.4.tar.gz (6.3 kB view details)

Uploaded Source

File details

Details for the file mpseudo-0.1.4.tar.gz.

File metadata

  • Download URL: mpseudo-0.1.4.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for mpseudo-0.1.4.tar.gz
Algorithm Hash digest
SHA256 7b182104e400b6b2acc4fbbdbeafd7e499b5c962ffb513f607e2587ea2d54567
MD5 d57d3e918969e3fb3b9b959aed89fc3c
BLAKE2b-256 9e9525ce4728dd6ddd1354fc200d998ef969c3d6013aaa1058541232a8e8cc1f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page