Я наносил на Rstudio две разные популяции видов (вымышленные, для обучения), используя векторы:
##I-With vectors :
#Parameters
alphs <- matrix(c(0.01, 0.005, 0.008, 0.01), ncol = 2, byrow = TRUE)
years<-20
R1<- 0.9
R2<- 1.4
#Creating vectors
TimeVec<-seq(0,years,1)
N1<-rep(0,years)
N2<-rep(0,years)
#INITIALIZATION
N0 <- 50
N1[1] <-N0
N2[1] <-N0
for (t in 1:years){
N1[t+1]<-(R1*N1[t])/(1+alphs[1,1]*N1[t]+alphs[1,2]*N2[t])
N2[t+1]<-(R2*N2[t])/(1+alphs[2,1]*N1[t]+alphs[2,2]*N2[t])
}
plot(TimeVec,N1,type="l",xlab='Time (years)',ylab='Population Density',col='blue')
lines(TimeVec,N2,type="l",lwd=2,col='green')
legend("topright", legend = c("Species 1", "Species 2"),lty = 1, col = c("blue", "green"), bty = "n")
Я пытаюсь проверить свои результаты другим методом, используя матрицы.Но так как я новичок в них, я не уверен, что использую их правильно и не могу получить тот же график, что и с кодом выше.
Я пытался использовать аналогичное упражнение, которое делал в последний разнеделю, с двумя разными жизненными стадиями вместо двух разных видов (буквально Nj и Na вместо N1 и N2), которые прекрасно работали с матрицами, как показано ниже:
##Density dependance with matrix :
#Parameters
zeta<-0.05
fert<-6
fert0<-30
matur<-0.9
sj<-0.2
sa<-0.6
years<-20
lambda<- 1.389
##Creating input matrix
X<-matrix(0,2,years+1)
##Creating vectors
TimeVec<-seq(0,years,1)
##INITIALIZATION
N0 <- 30
X[1,1]<- 0 # initial number of juveniles
X[2,1]<- 30 # initial number of adults
for (t in 1:years){
A<-matrix(c((1-matur)*sj,(fert0/(1+zeta*X[2,t])),matur*sj,sa),nrow=2,ncol=2,byrow=TRUE)
X[,t+1]<-A%*%X[,t]
}
plot(TimeVec,X[1,],type="l",xlab='Time (years)',ylab='Population Density',col='blue')
lines(TimeVec,X[2,],type="l",lwd=2,col='orange')
legend("topright", legend = c("Juveniles", "Adults"),lty = 1, col = c("blue", "orange"), bty = "n")
(Здесь X представляет собойматрица, содержащая Nj в первом ряду и Na во втором.)
Однако, так как уравнения сильно отличаются от этого примера, я не мог сделать это точно так же, как в соревновании видов и моей матрице Aзаканчивается вектором данных, содержащим только две разные записи вместо четырех:
##II-With matrix :
#Parameters
alphs <- matrix(c(0.01, 0.005, 0.008, 0.01), ncol = 2, byrow = TRUE)
years<-20
R1<- 0.9
R2<- 1.4
##Creating input matrix
X<-matrix(0,2,years+1)
##Creating vectors
TimeVec<-seq(0,years,1)
##INITIALIZATION
N0 <- 50
X[1,1]<- N0 # initial number of individuals from species 1
X[2,1]<- N0 # initial number of individuals from species 2
for (t in 1:years){
A<-matrix(c(R1/(1+alphs[1,1]+alphs[1,2]),R2/(1+alphs[2,1]+alphs[2,2])),nrow=2,ncol=2,byrow=TRUE)
A
X
##A<-matrix(c(R1*alphs[1,1], alphs[1,2], alphs[2,1], R2*alphs[2,2]),nrow=2,ncol=2,byrow=TRUE)
X[,t+1]<-A%*%X[,t]
}
plot(TimeVec,X[1,],type="l",xlab='Time (years)',ylab='Population Density',col='blue')
lines(TimeVec,X[2,],type="l",lwd=2,col='green')
legend("topright", legend = c("Species 1", "Species 2"),lty = 1, col = c("blue", "green"), bty = "n")
Мне нужно иметь тот же график, что и в первом кодовом блоке, при тех же начальных условиях (перечислены в параметрах ив инициализации).Потому что сейчас это не так, и я не понимаю, почему.Может быть, это на самом деле математический вопрос?