0
我寫了一些代碼,有一個邏輯增長組件(即隨着N接近'承載能力'增長速度較慢,直到它達到'承載能力'停止增長) 。但是,當我在R中運行它似乎並沒有工作。一些人口最終大於承載能力。我看了數學和一切OK。所以我認爲問題在於dN/dt只是針對每個人羣計算一次。有誰知道如何解決這個問題?desolve微分方程不工作
任何幫助將不勝感激!
實施例以下代碼:
library('optimbase')
library('deSolve')
library('tidyverse')
K = 150000 #carrying capacity
deaths = 0.2567534 #death rate
treesize = 0.23523 #resource size
K_mat = K*ones(10, 1) #matrix of Ks
death_mat = deaths*ones(10, 1) #matrix of deathrates
tree_mat = treesize*ones(11, 1) #matrix of resources
for_mat <- matrix(rbinom(11 * 10, 1, 0.2), ncol = 11, nrow = 10) #connection
#matrix of foraging
parameters <- c(for_mat, tree_mat, death_mat, K_mat) #outline parameters
N <- runif(10,0,K)
state <- N #starting state
nestchange <- function(t, state, parameters){
with(as.list(c(state, parameters)),{
r = for_mat %*% tree_mat - death_mat
dNdt = r*N - r*N*(N/K_mat)
list(c(dNdt))
})
}
times <- seq(0,100)
out <- ode (y = state,
times = times,
func = nestchange,
parms = parameters)
results <- as.data.frame(out)
results <- gather(results, 'nest', 'N', 2:11)
ggplot(data=results,
aes(x=time, y=N, colour=nest)) +
geom_line() +
theme_bw()
完美!這解決了問題!非常感謝! –
很高興它的工作! – Lyngbakr