Я использую пакет deSolve
для построения пары дифференциальных уравнений (если интересно, прочтите http://www.maa.org/press/periodicals/loci/joma/the-sir-model-for-spread-модели-болезни-дифференциального-уравнения).
Моя конечная цель - создать итеративную функцию или процесс (для цикла), чтобы построить график того, как изменения определенных параметров (бета и гамма) повлияют на решение. Предпочтительным выходом будет список, содержащий все ode
решения для каждого указанного значения бета в цикле. У меня возникают проблемы с интеграцией цикла в настройку, которая требуется пакету deSolve
для функции ode
.
В приведенном ниже коде я пытаюсь изобразить, как диапазон значений (от 1 до 2 с шагом 0,1) в параметре beta повлияет на график дифференциальных уравнений.
for(k in seq(1,2,by=0.1)){ #range of values for beta
init <- c(S=1-1e-6, I=1e-6, R=0) #initial conditions for odes
time <- seq(0,80,by=1) #time period
parameters <- c(beta=k, gamma=0.15) #parameters in ode
SIR <- function(time,state,parameters){ #function containing equaations
with(as.list(c(state,parameters)),{
dS <- -beta*S*I
dI <- beta*S*I-gamma*I
dR <- gamma*I
return(list(c(dS,dI,dR)))
})
}
ode(y=init,times=time,func=SIR()[beta],parms=parameters[k])}
}
Первая ошибка, которую я получаю, гласит, что параметры аргумента в функции SIR отсутствуют.
Ошибка в as.list (c (init, parameters)): аргумент "параметры" отсутствует, значение по умолчанию отсутствует.
Я не понимаю, почему сообщается об этой ошибке, когда я назначил parameters
в предыдущих строках.