汽车理论习题1.3
#-*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import math
#绘制坐标轴以及标明xy轴
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
fig1 = plt.figure(1)
ax1 = fig1.add_subplot(111)
ax1.set(xlim=[0,140], ylim=[0,14000], title='汽车驱动力-行驶阻力平衡图',ylabel='Ft/N,(Ff+Fw)/N', xlabel='Ua/(km/h)')
fig2 = plt.figure(2)
ax2 = fig2.add_subplot(111)
ax2.set(xlim=[0,110], ylim=[0,30], title='汽车的加速度倒数曲线',ylabel='1/a', xlabel='Ua')
#设置汽车相关参数
#主减速器传动比
i0 = 5.81
#传动系机械效率
hT = 0.85
#车轮半径
r = 0.367
#汽车总质量
m=3880
#汽车总重量
G = 38800
#滚动阻力系数
f = 0.013
#空气阻力系数*迎风面积
CdA = 2.77
#汽车轴距
L = 3.2
#汽车质心至前轴距离(满载)
a = 1.947
#汽车质心高(满载)
hg = 0.9
lt1,lt2,lt3,lt4,lt5 = [],[],[],[],[]
ls1,ls2,ls3,ls4,ls5 = [],[],[],[],[]
li1,li2,li3,li4,li5 = [],[],[],[],[]
lq1,lq2,lq3,lq4,lq5 = [],[],[],[],[]
#计算滚动阻力和空气阻力
#滚动阻力
Ff = G*f
#空气阻力
for Ua in range(0,121):
li2.append(Ua)
Fw = CdA*Ua**2/21.15
F = Fw+Ff
li1.append(F)
#计算不同档位时的驱动力
for j in range(0,5):
#一档时
if j == 0:
ig = 5.522
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
lt1.append(Ua)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
ls1.append(Ft)
Fw = CdA*Ua**2/21.15
F = Fw+Ff
derta1 = abs(Ft-F)
li4.append(derta1)
#二档时
if j == 1:
ig = 2.769
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
lt2.append(Ua)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
ls2.append(Ft)
#三档时
if j == 2:
ig = 1.644
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
lt3.append(Ua)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
ls3.append(Ft)
#四档时
if j == 3:
ig = 1.00
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
lt4.append(Ua)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
ls4.append(Ft)
#五档时
if j == 4:
ig = 0.793
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
lt5.append(Ua)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
ls5.append(Ft)
array = np.arange(95,105,0.01)
lp = array.tolist()
for Ua in lp:
Fw = CdA*Ua**2/21.15
F = Fw+Ff
derta = abs(F-Ft)
li3.append(derta)
#求解汽车的最高车速
li3.sort()
derta_min = li3[0]
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
for Ua in lp:
Fw = CdA*Ua**2/21.15
F = Fw+Ff
derta = abs(F-Ft)
while derta == derta_min:
point_x = Ua
point_y = CdA*Ua**2/21.15+Ff
break
else:
continue
x = [point_x,point_x]
y = [point_y,0]
#求汽车最大爬坡度
li4.sort()
derta1_max = li4[-1]
alpha_max = math.asin(derta1_max/G)
#计算克服最大爬坡度是所需的最大附着率
i = derta1_max/G
Cφ2 = i/(a/L+hg*i/L)
#计算不同档位时的加速度倒数
for j in range(0,5):
#一档时
if j == 0:
ig = 5.522
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
Fw = CdA*Ua**2/21.15
F = Fw+Ff
a1 = (Ft-F)/m
lq1.append(1/a1)
#二档时
if j == 1:
ig = 2.769
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
Fw = CdA*Ua**2/21.15
F = Fw+Ff
a2 = (Ft-F)/m
lq2.append(1/a2)
#三档时
if j == 2:
ig = 1.644
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
Fw = CdA*Ua**2/21.15
F = Fw+Ff
a3 = (Ft-F)/m
lq3.append(1/a3)
#四档时
if j == 3:
ig = 1.00
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
Fw = CdA*Ua**2/21.15
F = Fw+Ff
a4 = (Ft-F)/m
lq4.append(1/a4)
#五档时
if j == 4:
ig = 0.793
for n in range(600,4001):
Ua = (0.377*r*n)/(ig*i0)
a=n/1000
Tq = -19.313+295.27*a-165.44*a**2+40.874*a**3-3.8445*a**4
Ft = Tq*ig*i0*hT/r
Fw = CdA*Ua**2/21.15
F = Fw+Ff
if F <= Ft:
a5 = (Ft-F)/m
lq5.append(1/a5)
li5.append(Ua)
else:
break
#计算加速时间
sum = 0
for n in range(0,len(lq2)-1):
sum = sum+lq2[n]*(lt2[n+1]-lt2[n])
for n in range(0,len(lq3)-1):
if lt3[n] >= lt2[-1]:
sum = sum+lq3[n]*(lt3[n+1]-lt3[n])
else:
continue
for n in range(0,len(lq4)-1):
if lt4[n] >= lt3[-1] and lt4[n] <= 70:
sum = sum+lq4[n]*(lt4[n+1]-lt4[n])
else:
continue
print("汽车最高车速为:{:.2f}km/h".format(point_x))
print("汽车最大爬坡度为:{:.2f}".format(alpha_max))
print("汽车克服最大爬坡度时所需的附着率为:{:.2f}".format(Cφ2))
print("2档起步加速行驶至70km/h的加速时间为:{:.2f}".format(sum))
#绘制汽车驱动力-行驶阻力平衡图
ax1.plot(lt1,ls1,label='Ft1',color = 'k')
ax1.plot(lt2,ls2,label='Ft2',color = 'k')
ax1.plot(lt3,ls3,label='Ft3',color = 'k')
ax1.plot(lt4,ls4,label='Ft4',color = 'k')
ax1.plot(lt5,ls5,label='Ft5',color = 'k')
ax1.plot(li2,li1,label='Fw+Ff',color = 'y')
ax1.plot(x, y, color='k')
#绘制汽车的加速度倒数曲线
ax2.plot(lt1,lq1,color = 'k')
ax2.plot(lt2,lq2,color = 'k')
ax2.plot(lt3,lq3,color = 'k')
ax2.plot(lt4,lq4,color = 'k')
ax2.plot(li5,lq5,color = 'k')
plt.show()
汽车加速度倒数曲线:
汽车驱动力-行驶阻力平衡图:
其他问题答案: