Runge Kutta del quarto ordine

di il
1 risposte

Runge Kutta del quarto ordine

Buonasera, devo realizzare un programma in C che integri posizione e velocità di un oscillatore armonico con il metodo di Runge Kutta del quarto ordine. Io ho provato cosi con questa funzione:
double RungeKuttaFourth (double y, double dt, double dy) {
    double y1, y2, y3, y4;
    y1 = dy*dt;
    y2 = (y + y1/2)*dt;
    y3 = (y + y2/2)*dt;
    y4 = (y + y3)*dt;
    return y + 1.0/6.0*(y1 + 2*y2 + 2*y3 + y4);
}
Successivamente nel main ho:
printf("\nHai scelto il metodo d'integrazione Runge-Kutta del quarto ordine");
        for (i = 0; i <= N; i++) {
            fprintf(f,"%lf %lf %lf\n", t, xANDv.x, xANDv.v);
            xANDv.x = RungeKuttaFourth(xANDv.x,dt,xANDv.v);
            xANDv.v = RungeKuttaFourth(xANDv.v,dt,-k/m*xANDv.x);
            t+=dt;
        }
A me sembra giusto questo codice ma ottengo risultati completamente sballati, per esempio per la posizone:
Cattura.JPG
Cattura.JPG

Qualcuno sa dirmi come mai?

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte