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

编程新手求助:基于SUVA公式迭代计算变加速度下的车辆速度

加速度序列下的速度迭代计算与绘图实现

问题核心

给定含2000个项的加速度列表(数值随速度/阻力动态变化),以初始速度0为起点,通过公式 V²=U²+2as 迭代计算每行驶0.01m后的末速度(该末速度直接作为下一次迭代的初速度),最终绘制速度随位移变化的曲线。

原代码问题修正

你提供的示例代码逻辑有误:count += np.sqrt(u ** 2 + 2*i*s) 是错误的累加方式,正确逻辑应该是每次用前一次的末速度作为下一次的初速度,而非累加平方根结果。

完整实现代码

import numpy as np
import matplotlib.pyplot as plt

# 示例加速度列表(实际替换为你的2000项列表)
acceleration = [1, 2, 3, 4, 5]
initial_vel = 0  # 初始速度
step_distance = 0.01  # 每次迭代行驶的距离

def calculate_velocity_sequence(u0, acc_list, s):
    vel_sequence = []
    current_u = u0
    for a in acc_list:
        # 用SUVA公式计算当前步骤的末速度
        current_v = np.sqrt(current_u ** 2 + 2 * a * s)
        vel_sequence.append(current_v)
        # 更新初速度为当前末速度,用于下一次迭代
        current_u = current_v
    return vel_sequence

# 计算速度序列
velocity_list = calculate_velocity_sequence(initial_vel, acceleration, step_distance)
# 计算对应的位移序列(每次0.01m,总位移=步数*0.01)
displacement_list = np.arange(1, len(velocity_list)+1) * step_distance

# 绘制速度-位移曲线
plt.figure(figsize=(10,6))
plt.plot(displacement_list, velocity_list, linewidth=2, color='b')
plt.xlabel('位移 (m)')
plt.ylabel('速度 (m/s)')
plt.title('加速度变化下的速度-位移曲线')
plt.grid(True)
plt.show()

代码说明

  • 迭代逻辑:每次计算完当前末速度后,立即将其赋值给current_u,作为下一次计算的初速度,完全匹配问题要求的迭代规则。
  • 位移计算:通过np.arange生成与速度序列长度匹配的位移值,每一步对应0.01m的位移增量。
  • 绘图部分:用matplotlib绘制平滑曲线,添加坐标轴标签、标题和网格,直观展示速度随位移的变化趋势。

内容的提问来源于stack exchange,提问作者Tom Oliver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:10:29