Untitled
unknown
plain_text
a year ago
2.4 kB
1
Indexable
Never
import numpy as np import matplotlib.pyplot as plt # Dados Físicos. rho = 1.29 cr = 0.013 g = 9.81 inc = 0 #Inclinação da estrada em percentagem alpha = np.arctan(inc / 100) #inclinação em rad #Dados do Veículo m = 730 # massa do veículo em kg af = 1.7995 cd = 0.33 p = 38 # potência do motor em hp p_watts = p * 746 # potência do motor em watts #Força de resistencia constante F0 = m * g * (cr * np.cos(alpha) + np.sin(alpha)) #Constante de resistência c = 0.5 * rho * af * cd #Força máxima de tração das rodas mu = 0.8 #coeficiente atrito Fmax = mu * m * g * np.cos(alpha) #força resultante no veículo f = lambda v: (p_watts / v) - F0 - c*v**2 #Condições simulação v0 = 1 #velocidade inicial t0 = 0 #tempo inicial tf = 60 #tempo final dt = 0.01 #steps temporais t = [t0] v = [v0] F = [f(v0)] while t[-1] < tf: F_atual = f(v[-1]) if F_atual > Fmax: F_atual = Fmax dv = F_atual/m*dt # variação da velocidade em cada iteração v.append(v[-1] + dv) # atualização da velocidade t.append(t[-1] + dt) # atualização do tempo F.append(F_atual) # atualização da força v_kmh = [v_i*3.6 for v_i in v] # conversão para km/h #Método Analítico num_velocidades = 20 # função para calcular a velocidade usando equação analítica def v_analitico(t, v0): return (p_watts / c * m)**0.5 * np.tanh((c * t + np.arctanh(v0 * (c * m / p_watts)**0.5)) * (p_watts / (m * c))**0.5) # Cálculo da velocidade para diferentes valores de tempo velocidades_analiticas = [] tempo = np.linspace(t0, tf, num=1000) for i in range(num_velocidades): v_analitica = v_analitico(tempo, v0) velocidades_analiticas.append(v_analitica) v0 = v_analitica[-1] # atualiza a velocidade inicial para o próximo cálculo #Gráfico da Velocidade x Tempo plt.plot(t, [v_i*3.6 for v_i in v]) plt.title("Velocidade x Tempo") plt.xlabel("Tempo (s)") plt.ylabel("Velocidade (km/h)") plt.show() #Gráfico da Força x Tempo plt.plot(t, F) plt.title("Força x Tempo") plt.xlabel("Tempo (s)") plt.ylabel("Força (N)") plt.show() #Gráfico da Força x Velocidade plt.plot([v_i*3.6 for v_i in v], F) plt.title("Força x Velocidade") plt.xlabel("Velocidade (km/h)") plt.ylabel("Força (N)") plt.show()