code to make the following graphs

> f1:=sin(x):g1:=diff(f1,x):
f2:=x^4-1:g2:=diff(f2,x):

> f3:=piecewise(x<-1,-x,x<1,x^2,x<5,x):g3:=diff(f3,x):

> li:=proc(f,a,b,c,d,s) local plotf, plotdf, scal:
if s=c then plotf:=plot(f,x=a..b,scaling=constrained,xtickmarks=[0],ytickmarks=[],discont=true,color=blue,thickness=3,view=[a..b,c..d]); plotdf:=plot(diff(f,x),x=a..b,scaling=constrained,xtickmarks=[0],ytickmarks=[],discont=true,color=blue,thickness=3,view=[a..b,c..d]): else
plotf:=plot(f,x=a..b, xtickmarks=[0],ytickmarks=[],color=blue,thickness=3,view=[a..b,c..d],discont=true); plotdf:=plot(diff(f,x),x=a..b, xtickmarks=[0],ytickmarks=[],color=blue,thickness=3,view=[a..b,c..d],discont=true): fi:
[plotf,plotdf] end:

> f1:=li(sin(x),0,3,0,3,c): f1[2]:f1[2]:

> f2:=li(exp(-x),0,3,0,3,c):f2[2]:f2[2]:

> f3:=li(piecewise(x<-1,-x,x<1,x^2,x<5,x),-2,2,-2,2,c):f3[2]:f3[2]:

> f4:=li(exp(-x),0,1,-1,1,c): f4[1]:f4[2]:

> f5:=li(x^2-1,-2,2,-2,2,c):f5[2]:f5[2]:

> f6:=li( ((x-2)^2-1)*((x+2)^2-1)/20 ,-4,4,-2,2,c): f6[1]:f6[2]:

> f7:=li( piecewise(x<0,(x+1)^2,x<4,sqrt(1-(x/2)^2)) ,-1,1.5,-2,2,c): f7[1]: f7[2]:

> #f8:=li( 1/(x^2-1) ,-2.5,2.5,-4,4,c): f8[1]: f8[2]:
f8:=li( -abs(x)*x/2 ,-2,2,-1,1,c): f8[1]: f8[2]:

> f9:=li( piecewise(x<-1,x+2,x<1,-x^3,x<5,x-2) ,-4,4,-4,4,c): f9[1]: f9[2]:

> f10:=li( -x^2/3 ,-1,1,-1,1,c): f10[1]: f10[2]:

> f11:=li( piecewise(x<1,x^3-1,x<3,(x-1)^2) ,-1,2,-3,3,c): f11[1]: f11[2]:

> f12:=li( 1/(1+x^2) ,-3,3,-1,1,c): f12[1]: f12[2]:

> #f13:=li( -abs(x)*x/2 ,-2,2,-1,1,c): f13[1]: f13[2]:

> graphs:=[seq(op([cat(f,i)[1],cat(f,i)[2]]),i=1..12)]:

> #rnd:=graphs:

> rnd:=combinat[randcomb](graphs,24):

> graphs1:=[seq(rnd[i],i=1..9)]:

> graphs2:=[seq(rnd[i],i=10..18)]:

> graphs3:=[seq(rnd[i],i=19..24)]:

> mat1:=matrix(3,3,graphs1):

> mat2:=matrix(3,3,graphs2):

> mat3:=matrix(2,3,graphs3):

> gphs:plots[display](mat1); plots[display](mat2);plots[display](mat3);

>