# Converted from chemoss.m - chemostat steady states (Sf=5)importnumpyasnpfrommiscimportoctave_savemum=1.0;Ks=1.0;Sf=5.0;y=1.0defjacob(X,S,mum_,D,Ks_,Sf_,y_):mug=mum_*S/(Ks_+S)tmp=Ks_*mum_/(Ks_+S)**2returnnp.array([[mug-D,X*tmp],[-mug/y_,-D-X/y_*tmp]])Dopt=mum*(1-np.sqrt(Ks/(Ks+Sf)))Dc=mum*Sf/(Ks+Sf)nDs=25defcompute_tables(Dvec):n=len(Dvec)xs1=np.zeros((n,2));xs2=np.zeros((n,2))lam1=np.zeros((n,2));lam2=np.zeros((n,2))fori,Dinenumerate(Dvec):xs1[i]=[0.0,Sf]Ss=D*Ks/(-D+mum)xs2[i]=[y*(Sf-Ss),Ss]lam1[i]=np.sort(np.linalg.eigvals(jacob(*xs1[i],mum,D,Ks,Sf,y)).real)lam2[i]=np.sort(np.linalg.eigvals(jacob(*xs2[i],mum,D,Ks,Sf,y)).real)returnxs1,xs2,lam1,lam2Dvec1=np.linspace(0.001,Dc,nDs)Dvec2=np.linspace(Dc,0.99,nDs)xs11,xs21,lam11,lam21=compute_tables(Dvec1)xs12,xs22,lam12,lam22=compute_tables(Dvec2)DX1=Dvec1*xs21[:,0]DX2=Dvec2*xs22[:,0]table1=np.column_stack([Dvec1,xs11,xs21,DX1])table2=np.column_stack([Dvec2,xs12,xs22,DX2])octave_save('chemoss.dat',('table1',table1),('table2',table2))