汽车理论习题1.3

汽车理论习题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(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()

汽车加速度倒数曲线:
在这里插入图片描述
汽车驱动力-行驶阻力平衡图:
在这里插入图片描述
其他问题答案:
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值