Я пытаюсь решить обыкновенные дифференциальные уравнения в R. У меня есть матрицы в качестве начальных значений и параметров, которые я уже определил. Но когда я пытаюсь ее решить, я получаю следующую ошибку, которая не появляется, когда я ввожу отдельные значения вместо матриц.
Ошибка в (бета)% *% S: требуются числовые / комплексные матричные / векторные аргументы
Мои коды для решения оды ниже
S = matrix(c("S1","S2"), nrow = 2, ncol=1)
I = matrix(c("I1","I2"), nrow = 2, ncol=1)
R = matrix(c("R1","R2"), nrow = 2, ncol=1)
beta=matrix(c("beta1", "beta2"), nrow = 2, ncol=1)
MODEL <- function(time, state, parameters) {
with(as.list(c(state, parameters)), {
dS <- -1*(beta) %*% S %*% I
dI <- beta %*% S %*% I - gamma %*% I
dR <- gamma %*% I
return(list(c(dS, dI, dR)))
})
}
init <-c(S1=1-1e-6, S2=1-1e-6, I1=1e-6, I2=1e-6, R1=0.0, R2=0.0)
parameters <- c(beta1=1.4247, beta2=1.4247, gamma=0.14286)
times <- seq(0, 70, by = 1)
out <- ode(y=init, times=times, func=MODEL, parms=parameters)
Я не понимаю, почему появляется сообщение об ошибке и нужно ли мне что-то делать по-другому, когда я использую матрицы.
Любая помощь будет принята с благодарностью. Спасибо!!!
relist()
может оказаться полезной. - person Ben Bolker   schedule 12.03.2017