Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- main(){
- float k, m, t, dt=0.01, i, x, v, vprova=0;
- FILE *fp;
- printf("Questo programma simulerà il moto di un oscillatore armonico utilizzando il metodo di integrazione di eulero, e ne stamperà poi il grafico.\n");
- printf("Per iniziare, però, ho bisogno che tu inserisca il coefficiente elastico k>0 in kg*s^-2 e la massa dell'oggetto m>0 in kg.\n");
- printf("Inserisci la costante elastica.\n k = ");
- scanf("%f", &k);
- while(k<=0){
- printf("Il valore di k è errato! Reinseriscilo!\n k = ");
- scanf("%f", &k);
- }
- printf("Inserisci la massa del corpo in movimento.\n m = ");
- scanf("%f", &m);
- while(m<=0){
- printf("Il valore di m è errato! Reinsericilo!\n m = ");
- scanf("%f", &m);
- }
- printf("Inserisci anche il tempo t>=0 in cui vuoi conoscere la posizione del corpo.\n t = ");
- scanf("%f", &t);
- while(t<0){
- printf("Il valore di t è errato! Reinsericilo!\n t = ");
- scanf("%f", &t);
- }
- if((fp=fopen("eulero.dat", "w"))==NULL){
- printf("Errore nell'apertura del file eulero.dat.\n");
- exit(EXIT_FAILURE);
- }
- printf("Inserisci la condizione inziale dello spazio.\n x = ");
- scanf("%f", &x);
- printf("Inserisci la condizione iniziale della velocità.\n v = ");
- scanf("%f", &v);
- fprintf(fp, "# t x v\n");
- for(i=0.; i<t; i=i+dt){
- vprova=v;
- v=v-(x*k*dt)/m;
- x=x+vprova*dt;
- fprintf(fp, "%f %f %f\n", i, x, v);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment