我在 R 的元种群中编写 SIR 模型,我想集成 systema,为此我使用 de deSolve 和 C 编译代码,我以前使用过这个,但在有几个参数的情况下,现在我会有 Nxm参数,其中 N 是系统的维度,所以我想要那个
/* file age3classp.c */
#include <R.h>
static double parms[3];
static double forc[1];
#define N parms[0]
#define N1 parms[1]
#define gam3 parms[2]
这个参数是向量或矩阵 NxN 可能吗?
在 C 中,我的模型将采用以下形式:
# SIR metapopulation model:
SIR <- function(t, state, parameters) {
with(as.list(c(state, parameters)),{
dS = c()
dI = c()
dR = c()
for(i in c(1:dim)){
dS[i] <- delta_N[i]*(S[i]+I[i]+R[i])
dI[i] <- 10
dR[i] <- 10
}
list(c(dS, dI, dR))
})
}
population <- c(S <- matrix(100,ncol=N,nrow =1 ), I <- matrix(10,ncol=N,nrow =1 ),
R <- matrix(0,ncol=N,nrow =1 ))
z <- ode(population, times, SIR, parameters)
通过这种方式,它不会将 S[i] 或其他变量识别为变量,而只是作为初始条件值。
我该怎么做才能将其识别为变量?