我使用LAPACK library
来解决一个优化问题。我得到不同的Lapack错误(Lapack error(1,2,3,4) with SGETRF)
。是否有任何文档来源,我可以阅读以了解这些错误的确切含义?
大多数Lapack例程在参数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)正好为零。因式分解已经完成,但是因子U是完全奇异的,如果使用它就会被零除解一个方程组
如果矩阵是奇异的或病态的,就会出现这个问题。如果矩阵A
是奇异的,那么问题Ax=b
可能有不同的解,或者根本没有解。如果INFO=1,则矩阵很可能为空。
因此,测试INFO
被认为是一个很好的实践,因为函数如sgetrf()
或sgesv()
被调用…