solutions of the first three models, still looking for the solution of the fourth model...

restart;

m, l := 1., 1.;

beltv := proc (t) options operator, arrow; .1 end proc;

spring := proc (x) options operator, arrow; 1000.*(l-x) end proc;

sys1 := [m*(diff(x(t), t, t)) = spring(x(t))+friction1(diff(x(t), t)), x(0) = 1, (D(x))(0) = 0];

viscous := proc (v) options operator, arrow; (-1)*30.*(v-beltv(t)) end proc;

friction1 := proc (v) options operator, arrow; viscous(v) end proc;

friction1(v);

sys1;

sol1 := dsolve(sys1, numeric, output = listprocedure, range = 0 .. 2);

plots[odeplot](sol1, [t, x(t)], 0 .. 1, gridlines = true, thickness = 2, refine = 2);

plots[odeplot](sol1, [[t, diff(x(t), t)], [t, beltv(t)]], 0 .. 1, gridlines = true, thickness = 2, refine = 2);

sys2 := [m*(diff(x(t), t, t)) = spring(x(t))+friction2(diff(x(t), t)), x(0) = 1, (D(x))(0) = 0];

coulomb := proc (v) options operator, arrow; (-1)*25.*signum(v-beltv(t)) end proc;

friction2 := proc (v) options operator, arrow; viscous(v)+coulomb(v) end proc;

friction2(v);

sys2;

sol2 := dsolve(sys2, numeric, method = classical[abmoulton], stepsize = 0.4500000e-4, output = listprocedure);

plots[odeplot](sol2, [t, x(t)], 0 .. 1, gridlines = true, thickness = 2);

plots[odeplot](sol2, [[t, diff(x(t), t)], [t, beltv(t)]], 0 .. 1, gridlines = true, thickness = 2, numpoints = 500);

sys3 := [m*(diff(x(t), t, t)) = spring(x(t))+friction3(diff(x(t), t)), x(0) = 1, (D(x))(0) = 0];

stribeck := proc (v) options operator, arrow; (-1)*.3*signum(v)*exp(-2*abs(v)) end proc;

friction3 := proc (v) options operator, arrow; viscous(v)+coulomb(v)+stribeck(v) end proc;

friction3(v);

sys3;

sol3 := dsolve(sys3, numeric, method = classical[abmoulton], stepsize = 0.4500000e-4, output = listprocedure);

plots[odeplot](sol3, [t, x(t)], 0 .. 1, gridlines = true, thickness = 2);

plots[odeplot](sol3, [[t, diff(x(t), t)], [t, beltv(t)]], 0 .. 1, gridlines = true, thickness = 2, numpoints = 500);

plots[display]({plots[odeplot](sol1, [t, x(t)], 0 .. 1, gridlines = true, thickness = 2, refine = 2), plots[odeplot](sol2, [t, x(t)], 0 .. 1, gridlines = true, thickness = 2, color = green), plots[odeplot](sol3, [t, x(t)], 0 .. 1, gridlines = true, thickness = 2, color = blue)}, view = [0 .. 1, 1 .. 1.03]);

plots[display]({plots[odeplot](sol1, [[t, diff(x(t), t)], [t, beltv(t)]], 0 .. 1, gridlines = true, thickness = 2, refine = 2), plots[odeplot](sol2, [[t, diff(x(t), t)], [t, beltv(t)]], 0 .. 1, gridlines = true, thickness = 2, numpoints = 500, color = green), plots[odeplot](sol3, [[t, diff(x(t), t)], [t, beltv(t)]], 0 .. 1, gridlines = true, thickness = 2, numpoints = 500, color = blue)}, view = [0 .. 1, -0.2e-1 .. .13]);