【问题标题】:How to predict projectile motion? [closed]如何预测弹丸运动? [关闭]
【发布时间】:2018-06-17 10:38:49
【问题描述】:

我需要进行一个项目工作,预测一个运动球在二维运动中的运动轨迹。

那么处理它的可能方法是什么?如果您提供一些详细信息,将会很有帮助。另外,我不知道这是否是问这些问题的正确地方。但是你看,只有专家才能指出一条可以遵循的路径!

我可以进行图像处理,如边缘检测和一些计算机视觉,如使用霍夫变换的车道检测、跟踪一些身体(但没有预测)、人脸检测等。

我试图通过使用卡尔曼滤波器来完成这个项目,但我被卡住了,并且
找不到出路。所以我想也许我应该寻找其他方法。

【问题讨论】:

  • 这是一个简单的物理问题。这是牛顿力学的第一章。我建议你阅读它。

标签: python math projectile


【解决方案1】:

这是一个实用的计算机编程网站,所以我将讨论一种使用它的方法。由于您没有提供自己的详细信息,因此我也避免提供详细信息。如果您想了解有关此方法的更多详细信息,则需要编辑您的问题以显示您自己的更多努力,最好使用一些代码。

与许多物理问题一样,这可以被认为是具有初始值的常微分方程中的问题。但是像许多问题一样,您需要列出您的假设。假设球在地球大气层中接近海平面的地球表面附近移动,速度远低于音速。所以重力加速度、空气密度等可以认为是常数。球的质量和大小可能很重要,但让我们只考虑质量并将球的大小(和形状)的任何问题纳入空气阻力。对于给定的问题,您可以认为“空气阻力系数”也是恒定的。

你的初始值是:

  1. 开始时球的位置。既然你写了“在二维中移动”,我们可以将它们设为相对于地面的x(水平位置)和y(垂直位置)。它们确实需要水平和垂直,适合球所在的地球部分。
  2. 球的初始速度。这也会有水平和垂直分量,所以我们可以使用变量vxvy

那么您有四个变化的变量,xyvxvy。球上的方程来自牛顿运动定律和微积分(后者根据x 等定义vx)。球上有两个主要的力量:

  1. 重力,大小为mg,指向下方。
  2. 空气阻力,也称为阻力,它指向与当前方向相反的方向。幅度很棘手。有multiple formulas for drag。您选择哪一种取决于模拟的复杂程度。

此外,根据模拟的复杂性,您可能需要考虑球的旋转,这会改变阻力,等等。但是这两个是你写的最低限度。

然后使用 ODE(常微分方程)求解器来模拟球的位置和速度。有很多,但一个非常好且相当简单的是RK4, the fourth-order Runge-Kutta method。这很简单,你可以自己编程,但是有很多包可以做到。一个流行的函数是scipy包中的scipy.integrate.odeint ,它可以做多种方法。

如果你不了解 ODE 求解器,你真的不应该做这种项目。你提到的技能似乎与这个项目无关。如果您删除需求中的“空中”部分,则模拟会更简单。

【讨论】:

  • 非常感谢您抽出宝贵的时间,先生。有很多人只是忙着投票。我敢打赌,您一定是在教热心的学生。
  • 我以前用过卡尔曼滤波器。正如我所提到的,陷入了一些问题,无法自己找到出路。我也在这里发布了我的代码,但没有得到回复。所以我想我必须重新开始。
  • 我正在考虑使用欧拉方法来追踪轨迹,因为你需要一个初始起点(它由我的追踪算法提供)和曲线的微分方程来实际追踪它。 (对吗?)我没有假设任何形式的空气阻力,只是由于重力引起的加速度。我只对纸上的 ODE 感到满意,但对如何对其进行编程一无所知。所以我想我应该参加这样的课程:classroom.udacity.com/courses/cs222
  • 这是正确的方向吗,先生?再次感谢您的宝贵时间。
  • Rory Daulton 非常慷慨地带领你走上这条路,但你需要在这里付出更多的努力,Rahul。这是初等物理课本的第一章之一。常微分方程肯定超出了介绍性的微积分。欧拉积分已经足够好了,现在我们有了计算机,稳定所需的小时间步长并不困难。
猜你喜欢
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
相关资源
最近更新 更多