codexpast-exam-of-the-topics-in-applied-mathematics-course-of-the-university-of-oxford2009-competition-portrait.py
past-exam-of-the-topics-in-applied-mathematics-course-of-the-university-of-oxford/2009-competition-portrait.py
"""Original solution diagram; Python 3.14, NumPy 2.3.5, Matplotlib 3.10.7. Output to CWD."""
from pathlib import Path
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.rcParams.update({'figure.facecolor':'white','axes.facecolor':'white','font.size':10,'axes.spines.top':False,'axes.spines.right':False})
fig,ax=plt.subplots(figsize=(6.5,5),layout='constrained');x=np.linspace(.015,1.6,50);X,Y=np.meshgrid(x,x);U=X*(1-X-Y/2);V=Y*(1-Y-X/2);ax.streamplot(X,Y,U,V,density=1,color='.6',linewidth=.7);n=np.linspace(0,1.6,300);ax.plot(n,2*(1-n),label='n+m/2=1');ax.plot(n,1-n/2,label='m+n/2=1');ax.scatter([0,1,0],[0,0,1],facecolors='white',edgecolors='black',s=40,zorder=4);ax.scatter([2/3],[2/3],color='black',s=40,zorder=4);ax.set(xlabel='n',ylabel='m',xlim=(0,1.6),ylim=(0,1.6),title='Coexistence attracts all positive states (q=1)');ax.legend(fontsize=9)
fig.savefig(Path.cwd()/'2009-competition-portrait.png',dpi=150,facecolor='white');plt.close(fig)