SGETRF 的 Lapack 错误

Lapack error with SGETRF

我正在使用 LAPACK library 来解决优化问题。我收到不同的 Lapack 错误 (Lapack error(1,2,3,4) with SGETRF)。是否有任何文档来源,我可以阅读以了解这些错误的确切含义?

大多数 Lapack 例程 return 参数中的错误代码 INFO。此输出的含义在函数 sgetrf()

的文档中指定

如果 INFO 为空,则一切正常! 如果 INFO <0 ,则在输入参数中检测到错误。例如,对于 sgetrf():

  • INFO=-1 : 矩阵的行数为负数
  • INFO=-2 : 矩阵的列数为负数
  • INFO=-4 : LDA 低于 MAX( 1, M )

例程xerbla()可用于打印正确的错误信息:

XERBLA( 'SGETRF', -INFO )

如果 INFO>0,文档清楚地描述了正在发生的事情:

U(i,i) is exactly zero. The factorization has been completed, but the factor U is exactly singular, and division by zero will occur if it is used to solve a system of equations.

如果矩阵是奇异矩阵或病态矩阵,就会出现此问题。如果矩阵 A 是奇异矩阵,则问题 Ax=b 可能有不同的解,或者根本没有解。 如果INFO=1,很可能矩阵为空。

因此,测试 INFO 被认为是一种很好的做法,因为 sgetrf()sgesv() 等函数被调用...