CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

| Download
Path: 6.7.ipynb
Views: 17
Image: ubuntu2204
Kernel: SageMath 10.1
alpha = 1*10^(-8) x0=5000 y0=70000 c=3000 f(x,y)= 0.05*x*(((x-c)*(1-(x/150000)))/(x+c))-alpha*x*y g(x,y) = 0.08*y*(((y-15000)*(1-(y/400000)))/(y+15000))-alpha*x*y streams=streamline_plot((f(x,y),g(x,y)), (x,0,400000),(y,0,500000)) display(streams) whale_war=[] deltat=1 Ev=0 while Ev <= 100: data=[[0,x0,y0]] #initial (t,x,y) t=0 x=x0 y=y0 for i in range(10000): deltax=f(x,y)*deltat deltay=g(x,y)*deltat t+=deltat x+=deltax y+=deltay data.append([t,x,y]) if abs(deltax) < .5 and abs(deltay) < .5: whale_war.append([c, t, x, y]) break Ev+=1000 display(table(whale_war))
Image in a Jupyter notebook

It takes 331 days to reach equilibrium and the whales do not wipe eachother out 😃

alpha = 1*10^(-8) x0=5000 y0=70000 c=1000 f(x,y)= 0.05*x*(((x-c)*(1-(x/150000)))/(x+c))-alpha*x*y g(x,y) = 0.08*y*(((y-15000)*(1-(y/400000)))/(y+15000))-alpha*x*y deltat=1 Ev=0 while Ev <= 100: data=[[0,x0,y0]] #initial (t,x,y) t=0 x=x0 y=y0 for i in range(10000): deltax=f(x,y)*deltat deltay=g(x,y)*deltat t+=deltat x+=deltax y+=deltay data.append([t,x,y]) if abs(deltax) < .5 and abs(deltay) < .5: whale_war.append([c, t, x, y]) break Ev+=1000
alpha = 1*10^(-8) x0=5000 y0=70000 c=2000 f(x,y)= 0.05*x*(((x-c)*(1-(x/150000)))/(x+c))-alpha*x*y g(x,y) = 0.08*y*(((y-15000)*(1-(y/400000)))/(y+15000))-alpha*x*y deltat=1 Ev=0 while Ev <= 100: data=[[0,x0,y0]] #initial (t,x,y) t=0 x=x0 y=y0 for i in range(10000): deltax=f(x,y)*deltat deltay=g(x,y)*deltat t+=deltat x+=deltax y+=deltay data.append([t,x,y]) if abs(deltax) < .5 and abs(deltay) < .5: whale_war.append([c, t, x, y]) break Ev+=1000
alpha = 1*10^(-8) x0=5000 y0=70000 c=4000 f(x,y)= 0.05*x*(((x-c)*(1-(x/150000)))/(x+c))-alpha*x*y g(x,y) = 0.08*y*(((y-15000)*(1-(y/400000)))/(y+15000))-alpha*x*y deltat=1 Ev=0 while Ev <= 100: data=[[0,x0,y0]] #initial (t,x,y) t=0 x=x0 y=y0 for i in range(10000): deltax=f(x,y)*deltat deltay=g(x,y)*deltat t+=deltat x+=deltax y+=deltay data.append([t,x,y]) if abs(deltax) < .5 and abs(deltay) < .5: whale_war.append([c, t, x, y]) break Ev+=1000
alpha = 1*10^(-8) x0=5000 y0=70000 c=5000 f(x,y)= 0.05*x*(((x-c)*(1-(x/150000)))/(x+c))-alpha*x*y g(x,y) = 0.08*y*(((y-15000)*(1-(y/400000)))/(y+15000))-alpha*x*y deltat=1 Ev=0 while Ev <= 100: data=[[0,x0,y0]] #initial (t,x,y) t=0 x=x0 y=y0 for i in range(10000): deltax=f(x,y)*deltat deltay=g(x,y)*deltat t+=deltat x+=deltax y+=deltay data.append([t,x,y]) if abs(deltax) < .5 and abs(deltay) < .5: whale_war.append([c, t, x, y]) break Ev+=1000
alpha = 1*10^(-8) x0=5000 y0=70000 c=6000 f(x,y)= 0.05*x*(((x-c)*(1-(x/150000)))/(x+c))-alpha*x*y g(x,y) = 0.08*y*(((y-15000)*(1-(y/400000)))/(y+15000))-alpha*x*y deltat=1 Ev=0 while Ev <= 100: data=[[0,x0,y0]] #initial (t,x,y) t=0 x=x0 y=y0 for i in range(10000): deltax=f(x,y)*deltat deltay=g(x,y)*deltat t+=deltat x+=deltax y+=deltay data.append([t,x,y]) if abs(deltax) < .5 and abs(deltay) < .5: whale_war.append([c, t, x, y]) break Ev+=1000 header=["c","t","x","y"] display(table(whale_war, header_row=header))

I would say there is a lot of sensitivity because if you look after c=4000 the population switches to a different equilibrium point which is where one of the whale populations cease to exist 😦

sorry for so much code I spent an hour and a half trying to put this into a loop and it wouldnt run