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.
multiprocessing module to share computations between cpu-cores, and
mpmath module to make calculations with high precision.
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
The only requirement - NumPy. It should be installed on your system or in virtual environment.
git clone https://github.com/scidam/mpseudo.git
The pseudospectrum of the gallery(5) MatLab matrix looks like this (up to 100-digits of accuracy used for a matrix resolvent computation):
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()
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.
Read about this script in Russian here.
Mpseudo is free software licensed under the MIT License.