Я хотел бы решить систему нелинейных уравнений, используя следующий код в R:
n <- 30
A <- B <- C <- list()
for (j in 1:10){
A[[j]] <- matrix(rexp(300, rate=n), nrow=n, ncol=n)
B[[j]] <- runif(n, min = 150, max = 30000)
C[[j]] <- runif(n, min = 400, max = 60000)
}
alpha <- rep(0.1,n)
obj_fct <- function(alpha, A, B, C){
Nt <- length(A)
I <- E <- list()
for (j in 1:Nt) {
I[[j]] <- diag(dim(A[[j]])[1])
E[[j]] <- solve(I[[j]]-alpha*A[[j]])
}
C_var <- B_var <- L_var <- E_var <- F_var <- list()
for (j in 2:Nt) {
C_var[[j]] <- C[[j]]-C[[j-1]]
B_var[[j]] <- B[[j]]-B[[j-1]]
E_var[[j]] <- E[[j]]-E[[j-1]]
F_var[[j]] <- (1/2)*((E[[j-1]]+E[[j]])%*%B_var[[j]]) + (1/2)*(E_var[[j]]%*%(B[[j-1]]+B[[j]]))
}
Obj <- (unlist(F_var)-unlist(C_var))^2
return(sum(Obj))
}
alpha_init <- rep(0.1,n)
res <- optim(par=alpha_init, fn=obj_fct, alpha=alpha, A=A, B=B, C= C, method="Nelder-Mead")
Но я получаю следующую ошибку:
Error in fn(par, ...) : unused argument (par)
Основная проблемачто мне нужно, это правильно определить параметры для оценки в коде, потому что у меня есть один вектор параметров, который я умножаю (произведение Адамара) на матрицу.