对称半正定矩阵可进行choleskey分解,使用chol()
函数结合tryCatch错误异常判断,即可判断矩阵是否对称半正定。
1. 仅输出是否半正定
Sigma为一个对称矩阵,但非半正定,进行choleskey分解后报error
> chol(Sigma)
Error in chol.default(Sigma) :
the leading minor of order 14 is not positive definite
结合tryCatch判断矩阵半正定
tryCatch(
{
chol(Sigma)
},
error = function(e){
print("Sigma非对称半正定")
})
输出结果
[1] "Sigma非对称半正定"
若Sigma为对称非半正定,则输出chol(Sigma)
2. 将判断结果保存在变量中用于后续处理
flag<-TRUE
tryCatch(
{
chol(Sigma)
},
error = function(e){
flag<<-FALSE
})
Sigma半正定,则flag为TRUE;Sigma非半正定,则flag为FALSE
注意:tryCatch中赋值需用<<-
,才能改变父级中的变量