如何模拟钟摆的空气阻力?
How to simulate air resistance for a pendulum?
我用下面的代码来模拟钟摆的动画,但是,它忽略了空气阻力,一直不停。
while (true) {
angleAccel = -9.81 / length * Math.sin(angle);
angleVelocity += angleAccel * dt;
angle += angleVelocity * dt;
repaint();
try { Thread.sleep(15); } catch (InterruptedException ex) {}
}
现在我想考虑空气阻力,使钟摆在垂直方向上减速并最终停止。我已尝试根据我的需要调整代码,但 none 有效。
在我看来,最明智的做法是将空气阻力加入到控制系统的微分方程中。例如,空气阻力可以通过与速度成正比但方向相反的力来近似。然后方程可以用封闭形式求解(例如,阻尼谐振子e^{-kt} sin (wt)
)或者可以数值积分(长运行中更通用的解决方案)。
我用下面的代码来模拟钟摆的动画,但是,它忽略了空气阻力,一直不停。
while (true) {
angleAccel = -9.81 / length * Math.sin(angle);
angleVelocity += angleAccel * dt;
angle += angleVelocity * dt;
repaint();
try { Thread.sleep(15); } catch (InterruptedException ex) {}
}
现在我想考虑空气阻力,使钟摆在垂直方向上减速并最终停止。我已尝试根据我的需要调整代码,但 none 有效。
在我看来,最明智的做法是将空气阻力加入到控制系统的微分方程中。例如,空气阻力可以通过与速度成正比但方向相反的力来近似。然后方程可以用封闭形式求解(例如,阻尼谐振子e^{-kt} sin (wt)
)或者可以数值积分(长运行中更通用的解决方案)。