Advertisement
ivodevweb

Untitled

Jan 25th, 2023
929
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 2.23 KB | Software | 0 0
  1. % UC: 21048 - Física Geral
  2. % Ano 2022/23 - EFOLIO B - Gráfico Pêndulo Gravítico - UAb
  3. %  Aluno: 2100927 - Ivo Baptista
  4.  
  5. clc         % limpa a tela do terminal
  6. close all   % Fecha os graficos que estão abertos
  7. clear all   % limpa o valor das variaveis em memoria
  8.  
  9. % Constantes
  10. m = 0.0026;  % Massa em g
  11. L = 1.0;  % Comprimento em m
  12. r = 0.3; % Raio em m
  13. g = 9.81; % Aceleração da gravidade em m/s^2
  14. rho = 1.2; % Massa específica do ar em kg/m^3
  15. cd = 0.1;  % Coeficiente de arrasto
  16. A = pi * r^2; % Área transversal da esfera
  17.  
  18. % Calcula o coeficiente de arrasto aerodinâmico
  19. b = 1/2 * rho * cd * A;
  20.  
  21. % Valores iniciais
  22. theta0 = 0.05;  % Ângulo inicial em rad
  23. w0 = 0.0;       % Velocidade angular inicial em rad/s
  24. t0 = 0.0;       % Tempo inicial em s
  25. h = 0.1;        % Passo de tempo em s
  26. t = 0;          % Valor inicial do tempo
  27. tend = 100;     % Valor final do tempo
  28.  
  29.  
  30. ciclos = (tend - t)/h   % Numero de ciclos
  31.  
  32. % Listas para armazenar os resultados
  33. t = t0;
  34. theta = theta0;
  35. w = w0;
  36.  
  37. % Apresentação de Titulo
  38. hold on;
  39. grid;
  40. title('EfolioB - Fisica - Pendulo Gravitico');
  41. axis ([t, tend, -0.15, 0.15]);
  42.  
  43. % cabeçalho da tabela de resultados
  44. printf("  t(s) | Theta(rad/s) |  w(rad/s)    |      k1x     |      k1v     |      k2x     |      k2v    \n");
  45. printf("-------|--------------|--------------|--------------|--------------|--------------|-------------\n");
  46.  
  47. % Loop de tempo
  48. while t(end) < ciclos
  49.     k1x = w(end);
  50.     k1v = -sign(w(end)) * (((b*L)/m) * w(end)^2) - (g / L) * theta(end);
  51.     k2x = w(end) + k1v * h;
  52.     k2v = -sign(w(end) + k1v *h) * (((b*L)/m )* (w(end) + k1v *h)^2) - (g / L) * (theta(end)+k1x(end)*h);
  53.  
  54.     % Atualização dos valores de θ e w
  55.     theta = [theta, theta(end) + ((k1x + k2x) / 2.0)*h];
  56.     w = [w, w(end) + ((k1v + k2v) / 2.0)*h];
  57.  
  58.     % Atualização do tempo
  59.     t = [t, t(end) + h];
  60.    
  61.     printf(" %4d  | %8d  | %8d  |  %8d  |%8d | %8d  |  %8d\n",t(end),theta(end),w(end),k1x,k1v,k2x,k2v);
  62. end
  63.  
  64.  
  65. % Adiciona uma linha para w com a linha azul
  66. hold on;
  67. plot(t, theta, 'r',t, w, 'b');
  68. % Adiciona uma legenda
  69. legend('Theta', 'w');
  70. % Adiciona títulos aos eixos
  71. xlabel('tempo (s)');
  72. ylabel('Theta (rad), w (rad/s)');
  73. grid on;
  74. % Exibe o gráfico
  75. hold off;
  76.  
  77.  
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement