我试着从一个有很多零的矩阵中求出奇异值SLEPc:s兰佐斯在python/cython中键入svd solver。你知道吗
我使用的矩阵是PETc矩阵
[[ 0.00648130+0.32060635j 0 0 0 0 0 ]
[ 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 ]
[ 0 0 0 0 0 -0.00668978-0.31948359j ]]
当我用下面的代码调用svd解算器时
size = Matrix.getSize()
S = SLEPc.SVD()
S.create()
S.setOperator(Matrix)
S.setType(SLEPc.SVD.Type.LANCZOS)
S.setDimensions(min(size))
S.solve()
我得到了错误
/usr/local/lib/python2.7/dist-packages/slepc4py/lib/linux-gnu-cxx-complex/SLEPc.so in slepc4py.SLEPc.SVD.solve (src/slepc4py.SLEPc.c:35357)()
Error: error code 76
[0] SVDSolve() line 111 in /home/fremling/slepc-3.7.2/src/svd/interface/svdsolve.c
[0] SVDSolve_Lanczos() line 229 in /home/fremling/slepc-3.7.2/src/svd/impls/lanczos/gklanczos.c
[0] DSSolve() line 543 in /home/fremling/slepc-3.7.2/src/sys/classes/ds/interface/dsops.c
[0] DSSolve_SVD_DC() line 255 in /home/fremling/slepc-3.7.2/src/sys/classes/ds/impls/svd/dssvd.c
[0] Error in external library
[0] Error in Lapack xBDSDC 5
我知道有些奇异值是零,但这不应该是崩溃的原因,对吧?你知道吗
我应该提到的是,大多数时候代码运行没有问题,但是当有很多零时,这些崩溃就会发生。你知道吗
完整的代码示例适用于所有SLEPc SVD方法的给定矩阵,除了SLEPc.SVD.类型克罗斯先生。测试是使用slepc4py和petsc4py的3.7.0版本运行的。你知道吗
产生输出:
相关问题 更多 >
编程相关推荐