并行矩阵伪谱的计算
mpseudo的Python项目详细描述
mpseudo进行多核和精确计算 (正方形或长方形)婚姻。它使用伪谱定义和 在复杂平面的规则网格上查找epsilon值。它使用 multiprocessing用于在CPU核心之间共享计算的模块,以及 mpmath模块,以高精度进行计算。
依赖关系
Mpmath模块用于执行高精度计算。
pip install mpmath
如果不需要高精度伪谱计算能力 (超过15位数字,mpseudo可以在没有mpmath的情况下工作。这个 仅要求-NumPy。应该安装它 在您的系统或虚拟环境中。
安装
git clone https://github.com/scidam/mpseudo.git
示例
Gallery(5)Matlab矩阵的伪谱如下所示 用于矩阵预解计算的100位精度:
图库伪谱(5)Matlab矩阵
上面的伪谱是通过以下几行代码获得的:
frommatplotlibimportpyplotfrommpseudoimportpseudo# 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 resultspyplot.conourf(X,Y,psa)pyplot.show()
注意,如果未安装mpmath模块,则 矩阵将以标准(两位数,15位数)精度计算, 这对本案来说是不够的。
很有趣,但是 Eigtool或 PseudoPy工具(连同 scipy eigvals函数)应用于上例中的矩阵a 导致结果不准确(由于精度不够(双精度):
用伪py绘制gallery(5)matlab矩阵的伪谱
阅读俄文剧本 here。
许可证
mpseudo是根据MIT License授权的免费软件。