因此,基本上,我在python中创建了一个图,该图对一个岛上的两个相互作用的种群进行了建模,并显示了使用扩散方程对一维种群的移动和变化进行建模的方法,并且我正在尝试对其进行修改因此我改为使用二维图,因此它考虑了该物种在岛上的x和y位置。
抱歉,代码很长,虽然大多数代码只是在定义参数-我不太确定如何创建一个二维图,该图在每个位置都具有人口密度,这是我在下面的尝试,但情节根本不正确。我认为我的数值解应该是正确的,我假设这是我的初始/边界条件,以及如何为不正确的概率分布设置数组,但是我不确定如何更改它。例如,我遇到的问题之一是它在x轴上具有Y位置-我该如何解决?r1=0.1 # growth rate B
r2=0.3 # growth rate M
KB = 20 # carrying capacity B
KM = 6000 # carrying capacity M
x=np.arange(0,70) # distance from the coast (100m)
y=np.arange(0,90) # distance from the coast
dx=1 # change in x position
dy=1 # change in y position
dt=1 # time step
m=71 # number of x steps
o=91 # number of y steps
n=21 # time
alpha = 0.00002 # predation rate
beta = 0 # growth rate from predation (assumed to be zero)
B=np.zeros(shape=(m,o,n)) # species B
M=np.zeros(shape=(m,o,n)) # species M
D=0.35 # diffusivity of B
D2=0.05 # diffusivity of M
Alpha=(D*dt)/(dx*dx)
Beta=(D*dt)/(dy*dy)
Alpha2=(D2*dt)/(dx*dx)
Beta2 = (D2*dt)/(dy*dy)
M[0,:,0]=0 #initial conditions
M[m-1,:,0]=0
M[:,0,0]=0
M[:,m-1,0]=0
B[1:26,:,0]=0.96
B[26:44,:,0]=4.6
B[44:m-1,:,0]=0.96
B[:,1:26,0]=0.96
B[:,26:44,0]=4.6
B[:,44:m-1,0]=0.96
M[1:26,:,0]=2500
M[26:44,:,0]=1000
M[44:m-1,:,0]=2500
M[:,1:26,0]=2500
M[:,26:44,0]=1000
M[:,44:m-1,0]=2500
for k in range(0,n-1): # loop for time
B[0,:,k+1]=B[1,:,k+1] # boundary conditions
B[m-1,:,k+1]=B[m-2,:,k+1]
M[0,:,k+1]=0
M[m-1,:,k+1]=0
B[:,0,k+1]=B[:,1,k+1]
B[:,m-1,k+1]=B[:,m-2,k+1]
M[:,0,k+1]=0
M[:,m-1,k+1]=0
for i in range(1,m-1): # loop for x
for j in range(1,o-1): # loop for y
Bdxx=(-2*Alpha)*B[i,j,k]+Alpha*B[i+1,j,k]+Alpha*B[i-1,j,k]
Bdyy=(-2*Beta)*B[i,j,k]+Beta*B[i,j+1,k]+Beta*B[i,j-1,k]
B[i,j,k+1]=B[i,j,k]+Bdxx+Bdyy+r1*B[i,j,k]*(1-B[i,j,k]/KB)-alpha*M[i,j,k]*B[i,j,k] # numerical solution for B
Mdxx=(-2*Alpha2)*M[i,j,k]+Alpha2*M[i+1,j,k]+Alpha2*M[i-1,j,k]
Mdyy=(-2*Beta2)*M[i,j,k]+Beta2*M[i,j+1,k]+Beta2*M[i,j-1,k]
M[i,j,k+1]=M[i,j,k]+Mdxx+Mdyy+r2*M[i,j,k]*(1-M[i,j,k]/KM)+beta*M[i,j,k]*B[i,j,k] # numerical solution for M
plt.pcolormesh(B[:,:,n-1])
plt.colorbar()
plt.xlabel('X Position')
plt.ylabel('Y Position')
非常感谢您的帮助!
编辑:我已经意识到部分问题是y坐标的初始条件不正确