R语言 判断矩阵是否对称半正定

对称半正定矩阵可进行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中赋值需用<<-,才能改变父级中的变量

参考

R语言 错误异常处理tryCatch(变量作用域)

上一篇:locate命令详解


下一篇:django里static配置静态文件的引入