LAPACK - 奇异矩阵 - 正整数信息是什么意思?

计算科学 拉帕克 矩阵
2021-11-30 09:38:11

请你帮我写代码 - 我使用 Lapack 来求解复杂矩阵(相当 biq)并分两步完成:我调用zgetrf(LU 分解),然后调用zgetrs(求解系统)。但是 的infozgetrf不为零 -zgetrf无法分解矩阵。info值为 2。在英特尔 MKL 的手册中(我使用这些中的 Lapack),他们写道:

info 整数。

如果info=0,则执行成功。

如果info = -i,则第 i 个参数具有非法值。

如果info = i为 0。分解已完成,但完全是奇异的。如果您使用因子来求解线性方程组,则会发生除以 0。uiiUU

所以我知道我的矩阵在某种程度上是奇异的。但是数字说明了什么 - 如果我的 info=2 那么矩阵中的第二行是线性相关的?或类似的东西?非常感谢

2个回答

简短的回答:仅此而已Uii=0,即您计算的 U因式分解完全是奇异的。

xGETRF作为揭示因式分解的等级是不安全的,所以我不会得出任何结论,除了以下事实A是病态的,没有解决办法Ax=b可以安全计算。秩和零空间的信息应该通过其他分解来导出(如果需要),例如。QR.

如果你计算一个 LU 分解n经过n矩阵A,那么你最终会得到

PA=LU

在哪里P是一个置换矩阵,L是下三角形且非奇异的,并且U是上三角形。如果A碰巧是单数,那么 LAPACK 例程将产生一个U是奇异的矩阵。上三角矩阵可以是奇异的唯一方法是使对角线条目为 0(的行列式U是其对角线项的乘积。)LAPACK 例程返回的信息值告诉您对角线上第一个 0 的行/列U.

您可以使用此信息(例如)找到一个非零向量x^这样Ux^=0. 假设信息是k. 然后让x^j=0为了j=n,n1,,k+1. x^k=1. 然后使用反向替换找到x^k1,x^k2,,x^1.

然后LUx^=0, 所以x^是在零空间PA.