This is a simulation of a cart connected to a spring. You can drag both the cart and the wheel, and you can release them at a particular velocity.
Roughly speaking, this solves the differential equation mx''+kx=f, where f is the driving function. In this case, f is some sine wave, represented by the wheel.
The differential equation is solved using Euler's method, and it is fairly straightforward:
this.spring_drive_angle += 2 * Math.PI * this.spring_drive_freq * dt;
this.spring_x = this.spring_beginning_x + this.spring_drive_ampl * Math.sin(this.spring_drive_angle);
// Fspring = k(rest_pos - x)
var force = this.spring_constant * (this.spring_x + this.spring_rest_length - this.obj_x);
// Ffriction = - friction * mass * (+1 if velocity positive, -1 if negative, 0 if 0)
force -= this.friction * this.obj_mass * Math.sign(this.obj_vx);
// F = ma
var obj_ax = force / this.obj_mass;
// Euler's method step
this.obj_x += dt * this.obj_vx;
this.obj_vx += dt * obj_ax;
The complete source code for the simulation is this Javascript code. Most of it is just for drawing a representation of the cart and wheel and for handling mouse input.