Untitled
unknown
plain_text
3 years ago
2.8 kB
16
Indexable
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
#v_kmh_analitico = [v_i*3.6 for v in velocidades_analiticas] # conversão para km/h
#Gráfico da Velocidade x Tempo
for v in v_kmh_analitico:
plt.plot(tempo, v)
plt.title("Velocidade x Tempo")
plt.xlabel("Tempo (s)")
plt.ylabel("Velocidade (km/h)")
plt.show()
#Gráfico da Força x Tempo
F_analitico = f(np.array(velocidades_analiticas))
plt.plot(tempo, F_analitico)
plt.title("Força x Tempo")
plt.xlabel("Tempo (s)")
plt.ylabel("Força (N)")
plt.show()
#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()
Editor is loading...