【发布时间】:2023-03-13 17:42:03
【问题描述】:
我得到了这个代码来创建一个 Lotka Volterra 捕食者-猎物模型。此代码运行良好并生成我希望获得的图形类型,但是,我不明白某些代码在做什么,因此不知道在其他规模的其他数据上使用它时需要修改什么.
我不明白的两部分是:
for (n1 in seq((0.1*k[1]),(1.2*k[1]),100)){
for (n2 in seq(.1*k[2],1.2*k[2],.1*k[2])){
以及这一行中的 if 语句:
(n1==100&n2==100){plot(y[,2],y[,3],type="l",xlim=c(0,1000)
任何帮助解释这一点,以便我更好地理解代码是如何工作的,将不胜感激!
library(deSolve)
r<<-matrix(c(1,1),ncol=1)
k<<-matrix(c(1000,1000),ncol=1)
alpha<<-matrix(c(1,1.5,.5,1),ncol=2)
t_stop<-100
color="blue"
for (n1 in seq((0.1*k[1]),(1.2*k[1]),100)){
for (n2 in seq(.1*k[2],1.2*k[2],.1*k[2])){
lvcomp2<-function(t,n,params){ w=n[1]; z=n[2]
return(list(c(r[1]*n[1]*(k[1]-n[1]-alpha[1,2]*n[2])/k[1],r[2]*n[2]*(k[2]-n[2]-
alpha[2,1]*n[1])/k[2])))}
y<-lsoda(c(n1,n2),c(seq(0,t_stop,1)),lvcomp2,NA)
if (n1==100&n2==100){plot(y[,2],y[,3],type="l",xlim=c(0,1000),
ylim=c(0,1000),col=color,xlab="Abundance of species 1",ylab="Abundance of species 2")}
if (n2==1200) {lines(y[,2],y[,3], col=color)}
if (n1==1200){lines(y[,2],y[,3], col=color)}
if (n2==100) {lines(y[,2],y[,3], col=color)}
if (n1==100) {lines(y[,2],y[,3], col=color)}}}
【问题讨论】: