All pastes #1735287 Raw Edit

verlet

public text v1 · immutable
#1735287 ·published 2010-01-02 18:30 UTC
rendered paste body
#include <stdlib.h>
#include <stdio.h>
#define SQR(x) (x * x)
#define NS 100 //number of steps

int main (void)
{
        double r[NS][2] = {0},  v2[NS][2] = {0}, a[NS][2] = {0}, v[NS][2] = {0}, Ep[NS] = {0}, Ek[NS] = {0};
        r[0][0] = 1; r[0][1] = 2;
        double d = 0.2;

        for (int t = 1; t < NS; t++ ) {
                for (int i = 0; i < 2; i++) {
                        r[t][i] = r[t-1][i] + v[t-1][i] * d + a[t-1][i] * SQR(d)/2;
                        v2[t][i] = v[t-1][i] + a[t-1][i] * d/2;
                        a[t][i] = -r[t][i] * 0.1; //k/m = 0.1
                        v[t][i] = v2[t][i] + a[t][i]/2;
                        Ek[t] = (SQR(v[t][0]) + SQR(v[t][1]))/2; //m =1
                        Ep[t] = (SQR(r[t][0]) + SQR(r[t][1])) * d * 0.1/2; //k = 0.1
                }
                printf ("%d,  %g,  %g,  %g,  %g,  %g\n", t, r[t][0], r[t][1], Ek[t], Ep[t], Ep[t] + Ek[t]);
        }

        return 0;
}