You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python摩托艇速度位置计算及绘图项目实现咨询

摩托艇速度与位置计算项目代码调整

原有代码核心问题

  • 未导入对应依赖模块,且位置计算函数中误用未定义变量v,实际应为初速度v0
  • 错误使用积分函数quad计算结果:题目给出的v = v0e^(-bt/m)和p = (mv0/b)(1-e^(-bt/m))*本身就是瞬时速度、瞬时位置关于时间的直接表达式,不需要积分运算
  • 缺少离散时间点生成、绘图相关的逻辑实现

调整后完整代码

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

# 固定常量
b = 14

# 接收用户输入
v0 = float(input("请输入摩托艇的初速度v0(单位:m/s): "))
m = float(input("请输入摩托艇的质量m(单位:kg): "))

# 生成[0,21]区间的1000个离散时间点,密度足够保证曲线平滑
t = np.linspace(0, 21, 1000)

# 批量计算所有时间点对应的速度和位置
v = v0 * np.exp(-b * t / m)
p = (m * v0 / b) * (1 - np.exp(-b * t / m))

# 绘图配置
plt.figure(figsize=(10,6))
plt.plot(t, v, color='crimson', linewidth=2, label='速度 (m/s)')
plt.plot(t, p, color='navy', linewidth=2, label='位置 (m)')
plt.xlabel('时间 t (s)', fontsize=12)
plt.ylabel('数值', fontsize=12)
plt.title('摩托艇速度与位置随时间变化曲线', fontsize=14, pad=20)
plt.legend(fontsize=11)
plt.grid(alpha=0.3, linestyle='--')
plt.show()

# 输出t=20s时的计算结果(符合区间上限设为21以覆盖t=20的要求)
v_20 = v0 * np.exp(-b * 20 / m)
p_20 = (m * v0 / b) * (1 - np.exp(-b * 20 / m))
print(f"t=20s时,摩托艇的速度为:{v_20:.2f} m/s")
print(f"t=20s时,摩托艇的位置为:{p_20:.2f} m")

调整说明

  1. 保留了用户输入初速度、质量的逻辑,固定常量b=14
  2. 用np.linspace生成1000个离散时间点,覆盖[0,21]区间满足计算要求
  3. 用numpy向量化运算批量计算所有时间点的速度、位置,运算效率更高
  4. 绘图部分配置了区分度高的线条颜色、完整的图例、标题和坐标轴标签,加了辅助网格提升可读性
  5. 输出了t=20s时的速度、位置计算结果,也可以根据需要输出所有时间点的对应数值

内容的提问来源于stack exchange,提问作者Jarod O'Neil Q. J Chong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 06:45:03