我有一个广义矩阵问题:来自线性稳定性分析问题的谱方法。我的矩阵 B 是对角线和半正定矩阵。A 是非厄米特复杂的。
我的问题本质上是当使用 SLEPc 广义特征值求解器时,我得到错误“LU 分解中的零枢轴”。下面的其余部分是有关问题的详细信息以及我迄今为止尝试过的事情。谢谢您的帮助!
问题详情
矩阵的最大值约为 48000 x 48000,我想找到特征值。我感兴趣的特征值是最大实部接近 0+0i 的特征值。理想情况下,即使它们是内部的,我也希望能够找到它们(即,当频谱中存在具有较大正实部的其他特征值时)。但是,如果我能让它解决除感兴趣的特征值之外所有特征值的实部 < 0 的问题,我会很高兴。
目前我已经使用了 scipy linalg.eig 和 sparse.eigs 函数。据我所知,它们分别使用 LAPACK 和 ARPACK 来完成繁重的工作。我决定看看是否可以通过使用 SLEPc 库来获得更好的性能。如果这是一个错误的决定,请告诉我!
我想继续使用 PETSc 和 SLEPc 特征值求解器。我一直在使用教程中提供的示例来尝试 SLEPc。练习 7 ( http://www.grycap.upv.es/slepc/handson/handson3.html ) 从文件中读取矩阵 A 和 B 并输出解。我使用提供的矩阵让这个工作正常。但是,如果我替换我的问题的较小尺寸的测试版本 (6000x6000),我会收到各种错误,具体取决于我提供的命令行参数。
我遇到的主要问题是错误:“LU 分解中的零枢轴!” 当我使用默认设置时。
我认为这可能与 B 包含零行的事实有关,尽管我对线性代数的理解有些基本。这是真的?
我已尝试设置 petsc 网站上建议的选项,-pc_factor_shift_type NONZERO 等,但我得到的只是未使用这些选项的额外警告
我认为这是预处理器的问题,所以我尝试将 -eps_target 设置为 0.1,无论是否指定 -st_type sinvert 和 shift。我仍然得到同样的错误。
然后我尝试了 -st_pc_type jacobi 和 st_pc_type bjacobi。jacobi 运行,但不产生任何特征值。Block jacobi 进行 LU 因式分解并再次给我同样的错误。
默认方法是 krylov-schur,所以我尝试了 -eps_type gd 和 -eps_type jd 选项。不幸的是,这些似乎会产生无意义的特征值,当我在 scipy 中使用 LAPACK 求解时,这些特征值根本不会出现在频谱上。
我知道我的矩阵问题不是奇异的,因为我可以使用 scipy 解决它。
除了 PETSC 和 SLEPC 手册之外,您是否知道我可能需要阅读的任何书籍/指南以了解所有这些不同求解器的行为?
下面给出了没有命令行选项的情况的输出。
非常感谢您花时间阅读我的第一篇文章!
亲切的问候,托比
来自 SLEPc 的终端输出
tobymac:SLEPC toby$ mpiexec ./ex7 -f1 LHS-N7-M40-Re0.0-b0.1-Wi5.0-amp0.02.petsc -f2 RHS-N7-M40-Re0.0-b0.1- Wi5.0-amp0.02.petsc -eps_view
存储在文件中的广义特征问题。
[0]PETSC 错误: --------- 错误信息 --------- --------------- [0]PETSC 错误:在 LU 分解中检测到零枢轴:请参阅http://www.mcs.anl.gov/petsc/documentation/faq.html#ZeroPivot![0]PETSC 错误:矩阵中的空行:原始排序 2395 中的行在置换排序 3600 中![0]PETSC 错误:-------------------------------------------- ---------------------------- [0]PETSC 错误:Petsc 发布版本 3.3.0,补丁 5,12 月 1 日星期六 15:10 :41 CST 2012 [0]PETSC 错误:有关最新更新,请参阅 docs/changes/index.html。[0]PETSC 错误:有关故障排除的提示,请参阅 docs/faq.html。[0]PETSC 错误:有关手册页,请参阅 docs/index.html。[0]PETSC 错误:-------------------------------------------- ---------------------------------------- [0]PETSC 错误:./ex7 在名为 tobymac 的拱门上由 toby 2010 年 7 月 25 日星期四:20:40 2013 [0]PETSC 错误:从 /opt/local/lib [0]PETSC 错误链接的库:配置运行于 2013 年 7 月 23 日星期二 15:11:27 [0]PETSC 错误:
[0]PETSC 错误:/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/interface/precon.c [0]PETSC 中的 PCSetUp() 行 832错误:/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/ksp/interface/itfunc.c [0]PETSC 错误:PCSetUp_Redundant( ) /opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/impls/redundant/redundant.c [0]PETSC ERROR: PCSetUp() 行中的第 176 行/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/interface/precon.c [0]PETSC 错误:KSPSetUp() 第 278 行中的 832 /local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/ksp/interface/itfunc。c [0]PETSC 错误:src/st/impls/shift/shift.c 中的 STSetUp_Shift() 第 94 行 [0]PETSC 错误:src/st/interface/stsolve.c 中的 STSetUp() 第 280 行 [0]PETSC 错误: EPSSetUp() line 204 in src/eps/interface/setup.c [0]PETSC ERROR: EPSSolve() line 109 in src/eps/interface/solve.c tobymac:SLEPC toby$