我有一个带有X个连接补丁的系统,每个补丁都有一个像这样的简单捕食者-猎物模型:
C_i = r_c*C -d*C + e*P + b*\sum_j(A_ij*C_j)
P_i = r_p*P +e*P + b*\sum_j(A_ij*P_j)
其中C_i
和P_i
是补丁i
中的消费者和猎物数量; r_c,r_p
是增长率; d
是消费者的死亡率,e
是猎物的摄入率。每个方程式的最后一项是消费者或猎物的涌入:A_ij
是指示是否连接了补丁i
和j
的矩阵,而b
是从补丁j
迁移的速率。 (我的系统更复杂,但是这个简单的示例可以做到)。
这种系统将需要与补丁一样多的ODE系统。任何想法如何实现这种系统?我知道如何使用deSolve
对单个补丁(没有索引,没有流入术语)实现它。因此,任何具有deSolve
的解决方案都是首选。
以下矩阵食肉动物-猎物模型可以作为起点:
library(deSolve)
model <- function(t, n, parms) {
with(parms, {
dn <- r * n + n * (A %*% n)
list(dn)
})
}
parms <- list(
r = c(r1 = 0.1, r2 = 0.1, r3 = -0.1, r4 = -0.1),
A = matrix(c(
0.0, 0.0, -0.2, 0.0, # prey 1
0.0, 0.0, 0.0, -0.1, # prey 2
0.2, 0.0, 0.0, 0.0, # predator 1; eats prey 1
0.0, 0.1, 0.0, 0.0), # predator 2; eats prey 2
nrow = 4, ncol = 4, byrow = TRUE)
)
times = seq(0, 500, 0.1)
n0 = c(n1 = 1, n2 = 1, n3 = 2, n4 = 2)
out <- ode(n0, times, model, parms)
plot(out)