python matplotlib 汽车理论1.3汽车驱动力-行驶阻力图、加速度曲线。

一、驱动力-行驶阻力图

以汽车理论第六版第一章1.3题为例,用python matplotlib 画处驱动力行驶阻力图并求解最大车速。

9751426589b8dc3979507ee693cbb5d8.png

 MATLAB 做如图

a3cd7a856a096dce2ccb503e74d9aded.png

在python 中作图,以下图像并没有补充行驶阻力由0开始到最低速度对应的图像,感兴趣需要自行补充。 

 

import numpy as np  # 加载数学库用于函数描述
import matplotlib
import matplotlib.pyplot as plt  # 加载 matplotlib 库 主要调用plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决图像中的'-'负号的乱码问题
n = np.linspace(600, 4000, 5000)  # 600到4000分割为5000份依次带入其他公式计算其值
n1 = 600  # 最低转速
n2 = 4000  # 最高转速 r/min
mx = 2000  # 装载质量
my = 1800  # 整车整备质量
M = 3880  # 总质量
r = 0.367  # 车轮半径
ut = 0.85  # 传动系机械效率
f = 0.013  # 滚动阻力系数
Cda = 2.77  # 空气阻力系数
i0 = 5.83  # 主减速器传动比
If = 0.218  # 飞轮转动惯量
Ig = [5.56, 2.769, 1.644, 1.00, 0.793]  # 变速器传动比
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ** 2 + 40.874 * (n / 1000) ** 3 - 3.8445 * (n / 1000) ** 4
# Tq-n 公式
x = 1
for i in Ig:  # Ig为列表,依次读取传动比
    Ft = (Tq * i0 * i * ut) / r  # Ft 计算公式
    ua = (0.377 * r * n) / (i * i0)  # Ua 计算公式
    Fw = Cda * ua ** 2 / 21.15
    y = Fw + M * 9.8 * f
    plt.plot(ua, Ft, label=f'Ft$_{x}$')  # 绘出不同传动比关系图
    if x < 5:    # 绘出前四条.或len(Ig)
        plt.plot(ua, y, color="mediumturquoise")
    else:   # 在最后一条加标签求解
        plt.plot(ua, y, label='Fw+Ff', color="mediumturquoise")
        ua5 = np.array([(0.377 * r * n) / (Ig[4] * i0)])  # 求解五档车速创建array(有序的数据机集)
        y = np.array([Fw + M * 9.8 * f])  # 求 Fw+Ff 阻力  此时Fw为5档值
        k = np.where(abs(Ft - y) <= 1.5)  # 求解Ft和Fw、Ft满足条件值
        # k 为 求解Ft和Fw、Ft满足条件值 因转速区间为5000.若取=0可能没有解,取满足此条件最大值
        Umax = ua5[k]  # 求解Ft和Fw、Ft满足条件值
        list1 = Umax.tolist()  # 转为列表
        plt.text(100, 1200, '%.2f' % max(list1))  # 将最大值标上 %max(list1)是最大车速

    x += 1  # 下标变换
plt.text(15, 12500, 'Ft1')
plt.text(25, 7000, 'Ft2')
plt.text(50, 4000, 'Ft3')
plt.text(80, 2500, 'Ft4')
plt.text(60, 1800, 'Ft5')
plt.text(70, 500, 'Fw+Ff')
plt.title('驱动力图')  # 图标题
plt.xlabel('U$_{a}$/(km/h)')  # $_{a}$ 为下标表达式
plt.ylabel('F$_{t}$/KN')  # ylabel为 Y 轴标题
plt.legend()  # 确保运行正常显示
plt.show()

Python 加载 matplotlib库后作如图 程序运行效果图 

51a8bcf669fa0294d190dd832f86e378.png

二、加速度曲线

import numpy as np  # 加载数学库用于函数描述
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决图像中的'-'负号的乱码问题
n = np.linspace(600, 4000, 50)
n1 = 600  # 最低转速
n2 = 4000  # 最高转速 r/min
mx = 2000  # 装载质量
my = 1800  # 整车整备质量
M = 3880  # 总质量
r = 0.367  # 车轮半径
ut = 0.85  # 传动系机械效率
f = 0.013  # 滚动阻力系数
Cda = 2.77  # 空气阻力系数
i0 = 5.83  # 主减速器传动比
If = 0.218  # 飞轮转动惯量
Iw1 = 1.798
Iw2 = 3.598
Ig = [5.56, 2.769, 1.644, 1.00, 0.793]  # 变速器传动比
L = 3.2  # 轴距
a = 1.947
hg = 0.9
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ** 2 + 40.874 * (n / 1000) ** 3 - 3.8445 * (n / 1000) ** 4
x = 1
for i in Ig:  # Ig为列表,依次读取传动比
    Ft = (Tq * i0 * i * ut) / r  # Ft 计算公式
    ua = (0.377 * r * n) / (i * i0)  # Ua 计算公式
    p = 1 + ((2*Iw1 + 2*Iw2) / (M * r * r)) + (If * i0 * i0 * i * i*ut)/(M*r*r)
    # p 为旋转质量换算系数
    Fw = Cda * ua ** 2 / 21.15
    Ff = M * 9.8 * f
    at = (Ft-(Ff+Fw))/(p*M)
    plt.plot(ua, at, label=f'{x}档')
    x += 1  # 下标变换
plt.text(20, 2.3, 'I')
plt.text(23, 1.5, 'II')
plt.text(40, 0.8, 'III')
plt.text(70, 0.4, 'IV')
plt.text(100, 0.1, 'V')
plt.title('Ua-a图')  # 图标题
plt.xlabel('U$_{a}$/(km/h)')  # $_{a}$ 为下标表达式
plt.ylabel('a/(m/$s^2$)')  # ylabel为 Y 轴标题
plt.legend()  # 确保右上角标签运行正常显示
plt.show()

三、加速度倒数曲线 

在python 画图中可能会出现一些区间变化过大导致图像难以看懂例如:

在求加速度曲线时由于(Ft - (Fw + Ff))越来越小变化越来越快。图像会出现下图情况。

改善方法

1.重新改写5档速度转速区间,即最大车速对应的转速区间。

2.通过显示窗口只显示部分图像。

plt.axis([0, 100, 0, 10])

 Python中的matplotlib库中的axis(轴)是指图形的坐标轴,包括x轴和y轴。在绘制图形时,可以通过设置axis的属性来调整轴的范围、刻度、标签等。

421a3f9242159389d2a574377b899d2a.png

import numpy as np  # 加载数学库用于函数描述
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决图像中的'-'负号的乱码问题
n = np.linspace(600, 4000, 50)
n1 = 600  # 最低转速
n2 = 4000  # 最高转速 r/min
mx = 2000  # 装载质量
my = 1800  # 整车整备质量
M = 3880  # 总质量
r = 0.367  # 车轮半径
ut = 0.85  # 传动系机械效率
f = 0.013  # 滚动阻力系数
Cda = 2.77  # 空气阻力系数
i0 = 5.83  # 主减速器传动比
If = 0.218  # 飞轮转动惯量
Iw1 = 1.798
Iw2 = 3.598
Ig = [5.56, 2.769, 1.644, 1.00, 0.793]  # 变速器传动比
L = 3.2  # 轴距
a = 1.947
hg = 0.9
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ** 2 + 40.874 * (n / 1000) ** 3 - 3.8445 * (n / 1000) ** 4

x = 1
for i in Ig:  # Ig为列表,依次读取传动比
    Ft = (Tq * i0 * i * ut) / r  # Ft 计算公式
    ua = (0.377 * r * n) / (i * i0)  # Ua 计算公式
    p = 1 + ((2 * Iw1 + 2 * Iw2) / (M * r * r)) + (If * i0 * i0 * i * i * ut) / (M * r * r)
    # p 为旋转质量换算系数
    Fw = Cda * ua ** 2 / 21.15
    Ff = M * 9.8 * f
    F = Fw + Ff
    at = (Ft - F) / (p * M)
    plt.plot(ua, 1 / at, label=f'{x}档')
    x += 1  # 下标变换

plt.axis([0, 100, 0, 10])
plt.title('Ua-1/a图')  # 图标题
plt.xlabel('U$_{a}$/(km/h)')  # $_{a}$ 为下标表达式
plt.ylabel('1/a/(m/$s^2$)')  # ylabel为 Y 轴标题
plt.legend()  # 确保上角标签运行正常显示
plt.show()

 75d04feb1eb37b26e0ed31eead84b11d.png

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值