#include int main() { // Federkonstante const double k = 1; // Zeitschritt const double dt = 0.01; // (Start-)Position double x = 0.3; // (Start-)Geschwindigkeit double v = 0.0; // zu simulierende Zeit double T = 100.0; // Kraft auf die Masse double F = -k*x; printf("#t\tx\tek\tep\te\n"); for (double t = 0.0; t < T; t+= dt) { // Velocity-Verlet-Algorithmus // Geschwindigkeits-Halbschritt v += 0.5*F*dt; // neue Position x += v*dt; // neue Kraft F = -k*x; // zweiter Geschwindigkeits-Halbschritt v += 0.5*F*dt; // kinetische Energie double ek = 0.5*v*v; // potentielle Energie double ep = 0.5*k*x*x; // Gesamtenergie double e = ek + ep; printf("%lf\t%lf\t%lf\t%lf\t%lf\n", t, x, ek, ep, e); } }