I've made a 3d plot of the steady state surface so you can see the "pleat" that corresponds to the region where there are 3 simulaneous steady states.
The curves you plotted are the projections of the fold loci down onto the parameter plane.
| > | b:=(x,a)->x^3-a*x^2+k*x;
q:=diff(b(x,a),x); ss:=solve(q=0,x); xp:=unapply(ss[1],a); xm:=unapply(ss[2],a); |
| > | k:=1;
xm(a),xp(a); plot([b(xm(a),a),b(xp(a),a)],a=sqrt(3*k)..4,view=[0..4,0..0.2],labels=["a","b"]); crv1:=plots[spacecurve]([a,b(xm(a),a),xm(a)],a=sqrt(3*k)..4,color=black,thickness=2,numpoints=300): crv2:=plots[spacecurve]([a,b(xp(a),a),xp(a)],a=sqrt(3*k)..4,color=black,thickness=2,numpoints=300): |
![[Plot]](images/schlogl_8.gif)
| > | surf:=plot3d([a,b(x,a),x],x=0..3,a=0..3,style=patchnogrid,axes=boxed,labels=["a","b","x"],
view=[0..3,0..0.3,0..3],grid=[80,80]): all:=plots[display](crv1,crv2,surf,orientation=[-79,67]): plots[display](all); |
![[Plot]](images/schlogl_9.gif)
| > | nframes:=20;
trange:=60.0; dt:=trange/(nframes-1); plots[display](seq(plots[display](all,orientation=[-100+i*dt,67]),i=0..nframes-1), seq(plots[display](all,orientation=[-100+(nframes-1-i)*dt,67]),i=0..nframes-1), insequence=true,title="Equilibrium values of x"); |
![[Plot]](images/schlogl_13.gif)
| > |