Advertisement
ivodevweb

Untitled

Jan 16th, 2023
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.95 KB | None | 0 0
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import pandas as pd
  4.  
  5. # Constantes
  6. m = 0.00026  # Masa do pendulo em gramas
  7. L = 1.0  # Comprimento da corda em metros
  8. # b = 0.01 # Coeficiente de arrasto aerodinâmico
  9. p = 1.28 # Densidade do ar em kg/m^3
  10. g = 9.81 # Aceleração da gravidade em m/s^2
  11.  
  12. # Coeficiente de arrasto aerodinâmico para uma esfera
  13. cd = 0.01
  14. # Raio do pêndulo
  15. R = 3 # em metros
  16.  
  17. # Área frontal do pêndulo
  18. A = 0.002826
  19.  
  20. # Coeficiente de arrasto aerodinâmico
  21. b = 0.000180864
  22.  
  23. # Valores Iniciais
  24. theta0 = 0.05  # Ângulo inicial em radianos
  25. w0 = 0.0       # Velocidade angular inicial em radianos/s
  26. t0 = 0.0       # Tempo inicial em segundos
  27. h = 0.1        # Passo de tempo em segundos
  28. # Listas para armazenar resultados
  29. t = [t0]
  30. theta = [theta0]
  31. w = [w0]
  32.  
  33. # Loop ao longo do tempo
  34. while t[-1] < 100.0:
  35.     # Calcular valores intermediários
  36.     k1x = h * w[-1]
  37.     k1v = h * (-w[-1]*(b*L/m) *(theta[-1])**2)-g*theta[-1]  
  38.     k2x = h * (w[-1] + k1v)
  39.     k2v = h*(-((w[-1] + k1v)*h)*(b*m)*((w[-1] + k1v)*h)**2 - g * ((theta[-1] + k1x)))
  40.  
  41.     # Atualize teta e w
  42.     theta.append(theta[-1] + ((k1x + k2x) / 2.0)*h)  # Metodo Heun
  43.     w.append(w[-1] + ((k1v + k2v) / 2.0)*h)        # Metodo Heun
  44.  
  45.     # Atualiza o Tempo  
  46.     t.append(t[-1] + h)
  47.  
  48. # Cria gráfico para teta com linha vermelha
  49. plt.plot(t, theta, color='red')
  50.  
  51. # Adiciona uma linha para w com linha azul
  52. plt.plot(t, w, color='blue')
  53.  
  54. # Adicionar uma legenda
  55. plt.legend(['theta', 'w'])
  56.  
  57. # Adicionar rótulos de eixo
  58. plt.xlabel('t (s)')
  59. plt.ylabel('theta (rad), w (rad/s)')
  60.  
  61. # Crie um dataframe das listas t, theta e w
  62. df = pd.DataFrame({'t (s)': t, 'theta (rad)': theta, 'w (rad/s)': w, 'k1x': k1x, 'k1v': k1v, 'k2x': k2x, 'k2v': k2v})
  63.  
  64. # Exibir as primeiras linhas do dataframe
  65. print(df.head())
  66.  
  67. # Salva o dataframe em um arquivo CSV
  68. df.to_csv('pendulum_results_full_heun.csv', index=False)
  69.  
  70. # Mostra o grafico
  71. plt.show()
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement