Rの関数を使用してoptim
、行列の反転を含む関数の最小値を見つけています。私が遭遇している問題は、マトリックスが反転できない場合があり、そのマトリックスを反転しようとするとプログラムが終了することです。非可逆行列に到達する直前に関数のパラメーターを取得したいと思います。
以下のやや人工的な例を考えてみましょう。
MAT <- diag(3)
MAT[1,1] <- 5
example_function <- function(x){
MAT[1,1] <- abs(MAT[1,1] - x[1])
prob <- x[2] * solve(MAT) # invert to get error
out <- sum(MAT)
return(out)
}
res.optim <- optim(par=c(5,5), fn=example_function, control=list(trace=TRUE, maxit=1000))
(5,5)
ここでは、非可逆行列に到達する前にパラメーターが関数に渡されるため、パラメーターの出力を取得したいと思います。どうすればこれを達成できますか?