一个小型二级火箭初始重量为3000kg。一级总重1400kg其中1080kg燃料,二级1080 kg燃料。一级燃料用尽后一级整体抛弃,火箭引擎在二级燃料用尽时关闭。火箭竖直向上发射时燃料燃烧率为18kg/s,由此产生32000N的推力。设火箭上升时空气阻力正比于速度的平方,比例系数为0.4kg/m,求引擎关闭瞬间火箭的高度、速度﹑加速度,及火箭到达最高点时的高度和加速度,并画出高度﹑速度、加速度随时间变化的图形。 的数学建模python代码
时间: 2024-02-19 22:57:34 浏览: 175
```python
import math
import matplotlib.pyplot as plt
# 常量定义
g = 9.8 # 重力加速度
m1 = 1400 # 一级总重
m2 = 1600 # 二级总重
mf1 = 1080 # 一级燃料质量
mf2 = 1080 # 二级燃料质量
mdot = 18 # 燃料燃烧率
F = 32000 # 推力
k = 0.4 # 空气阻力系数
dt = 0.1 # 时间步长
# 初始状态
m = m1 + m2 # 火箭总质量
v = 0 # 初始速度
h = 0 # 初始高度
a = F / m - g # 初始加速度
t = 0 # 初始时间
# 存储数据的列表
hs = [h] # 高度
vs = [v] # 速度
as_ = [a] # 加速度
ts = [t] # 时间
# 模拟火箭运动
while mf2 > 0:
# 计算当前时间步长内的燃料消耗
dm = mdot * dt
if dm > mf2:
dm = mf2
mf2 -= dm # 更新燃料质量
# 计算当前时间步长内的运动状态
m -= dm # 更新火箭总质量
a = (F - k * v ** 2) / m - g # 计算加速度
v += a * dt # 计算速度
h += v * dt # 计算高度
t += dt # 更新时间
# 存储数据
hs.append(h)
vs.append(v)
as_.append(a)
ts.append(t)
# 火箭引擎关闭时的状态
v_max = max(vs) # 最大速度
idx = vs.index(v_max) # 最大速度出现的时间步
h_max = hs[idx] # 最大高度
a_max = as_[idx] # 最大加速度
# 输出结果
print('引擎关闭时的状态:')
print(' 高度:', h)
print(' 速度:', v)
print(' 加速度:', a)
print('到达最高点时的状态:')
print(' 高度:', h_max)
print(' 最大速度:', v_max)
print(' 最大加速度:', a_max)
# 绘制图形
plt.subplot(3, 1, 1)
plt.plot(ts, hs)
plt.title('Height')
plt.xlabel('Time (s)')
plt.ylabel('Height (m)')
plt.subplot(3, 1, 2)
plt.plot(ts, vs)
plt.title('Velocity')
plt.xlabel('Time (s)')
plt.ylabel('Velocity (m/s)')
plt.subplot(3, 1, 3)
plt.plot(ts, as_)
plt.title('Acceleration')
plt.xlabel('Time (s)')
plt.ylabel('Acceleration (m/s^2)')
plt.tight_layout()
plt.show()
```
注:本代码仅供参考,具体实现方法可能因人而异。
阅读全文