Advertisement
luizaspan

TAREFA 2 (oscilador harmônico amortecido)

May 7th, 2015
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.26 KB | None | 0 0
  1. // Utilize laços while, do while e/ou for para fazer um programa que calcula a posição e a velocidade do oscilador em função do tempo (digamos, por exemplo, em 100 pontos entre 0 e 3 segundos), colocando os resultados em forma de coluna, onde a primeira coluna é o tempo, a segunda a posição e a terceira a velocidade. Redirecione esse resultado para um arquivo e faça grácos da posição em relação ao tempo (x × t), velocidade em relação ao tempo (v × t) e do espaço de fases (x × v ). Explore valores diferentes para o parâmetro c, variando entre o caso não-amortecido c = 0 e o caso criticamente amortecido (γ = ω0 ).
  2.  
  3. #include <stdio.h>
  4. #include <math.h>
  5.  
  6. #define k 20
  7. #define m 2.5
  8. #define c 10
  9. #define A 0.1
  10.  
  11. #define pi M_PI
  12.  
  13. int main(void)
  14. {
  15.  
  16.   double x,omega,gamma,omega0,v,t;
  17.  
  18.   for (t=0;t<=3;t+=0.03)
  19.     {
  20.       omega0=k/m;
  21.       gamma=c/(2*m);
  22.       omega=2*pi*sqrt(pow(omega0,2)-pow(gamma,2));
  23.       x=A*cos(omega*t)*exp(-gamma*t);
  24.       v=-A*exp(-gamma*t)*(gamma*cos(omega*t)+omega*sin(omega*t));
  25.  
  26.       printf("%lf\t %lf\t %lf\n",t,x,v);
  27.     }
  28.  
  29.   return 0;
  30.  
  31. }
  32.  
  33. // plotando no gnuplot
  34. // p "xxx.dat" u 1:2 w lp -> grafico xxt    
  35. // p "xxx.dat" u 1:3 w lp -> grafico vxt
  36. // p "xxx.dat" u 2:3 w lp -> grafico xxv
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement