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

Python实现平抛运动模拟时小球仅垂直向上运动的修改咨询

平抛运动模拟代码错误修复方案

核心问题及修改点

  • 初始参数赋值颠倒
    原代码中v是速度数组、x是位置数组,你错误地将初始高度赋值给了速度的y分量,水平初速度赋值给了位置的x分量,正确的初始赋值应该是:
    初始位置x=0、y=H,初始速度x=v0x、y=0,对应代码修改为:
# 修正后初始赋值
x[0] = np.array([0. , H])
v[0] = np.array([v0x , 0.])
  • 重力方向设置错误
    y轴向上为正方向时,重力加速度方向向下,受力y分量应为负值,修改为:
f[:] = np.array([0., -m * g])
  • x轴显示范围过小
    根据模拟时长和水平初速度调整x轴范围,模拟100秒的话x轴最大设为1000即可适配水平位移:
ax.set(xlim=(0,1000), ylim=(0,600), xlabel="position, metres", ylabel="height, metres", title="falling apple")
  • (可选优化)增加触地停止逻辑,避免小球落到地面以下后继续运动,模拟循环可以修改为:
for n in range(N):
    v[n+1] = v[n] + ((f[n]/m) * dt)
    x[n+1] = x[n] + (v[n+1] * dt)
    # 触地后位置、速度都置为0,停止运动
    if x[n+1, 1] <= 0:
        x[n+1, 1] = 0
        v[n+1] = np.array([0,0])

修正后完整代码

import numpy as np
import matplotlib.pyplot as plot
from IPython.display import HTML
from matplotlib import animation

#setup fig with axis
fig, ax = plot.subplots(figsize=(8,8))

#set axis limits 调整x轴范围适配水平位移
ax.set(xlim=(0,1000), ylim=(0,600), xlabel="position, metres", ylabel="height, metres", title="falling apple")

#initial params
T = 100.
m = 3
g = 9.81
v0x = 10
H = 553.

#setting calc interval
dt = 0.1
N = int(T/dt)

#arrays 
v = np.zeros((N+1 , 2))
x = np.zeros((N+1 , 2))
f = np.zeros((N+1 , 2))

#修正初始赋值:x是位置[x,y],v是速度[vx, vy]
x[0] = np.array([0. , H])
v[0] = np.array([v0x , 0.])

# 修正重力方向:y轴向上为正,重力向下所以为负
f[:] = np.array([0., -m * g])

#running the dynamics sim 增加触地停止逻辑
for n in range(N):
    v[n+1] = v[n] + ((f[n]/m) * dt)
    x[n+1] = x[n] + (v[n+1] * dt)
    if x[n+1, 1] <= 0:
        x[n+1, 1] = 0
        v[n+1] = np.array([0,0])

#scatter plot
scat_plt = ax.scatter(x[0,0], x[0,1], marker='o', c='#1f77b4', s=200)

## animating 
def animate(i):
    scat_plt.set_offsets(x[i])

ani = animation.FuncAnimation(fig, func=animate, frames=N)
ani.save('ball.html', writer=animation.HTMLWriter(fps= 1//dt))
plot.close()
ani.save('ball.mp4', fps= 1//dt)
HTML('ball.html')

内容的提问来源于stack exchange,提问作者Aakif Rehman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:45:02