如何应用速度和加速度来匹配数学公式的结果

How do I apply velocity and acceleration to match the result of math formulas

所以我有一个初始速度iv一个最终速度fv(始终为0)一个时间t和一个加速度变量a

我使用这些变量来计算最终距离fd

注意:这里使用的语言是 Kotlin

注意:计算fda的公式不是我想出来的

    var iv = 10.0 // initial velocity
    var fv = 0.0  // final velocity
    var t = 8.0   // time
    var a = ((fv - iv)/t) // acceleration
    var fd: Double = ((iv*t) + (a/2.0*Math.pow(t,2.0)))

我得到的结果是 fd = 40.0

当我尝试以这种方式建模时,我会尝试在代码中应用它。

    var d = 0.0 // current distance traveled
    var i = 0   // current time elapsed 
    
    while (i < t) {      
        d += v
        v += a
            
        i++
    }

d 最后应该等于 fd 时,我得到了 d = 45.0 的结果。

我在将速度和加速度应用于速度时做错了什么,以至于我的结果与数学公式显示的结果不同?

不要担心“公式”——想想物理学。

如果你学过微积分和物理学,你就会知道:

a = dv/dt // a == acceleration; v == velocity; t == time
v = ds/dt // v == velocity; s == distance; t == time

如果你足够了解微积分,你可以对加速度方程进行两次积分以获得作为时间函数的行进距离:

a(t) = dv/dt = a0
v(t) = ds/dt = a0*t + v0
s(t) = (a0/2)*t^2 + v0*t + s0

你可以计算常数:

a0 = -1.25 m/sec^s
v0 = 10 m/s
s0 = 0 m

替代:

a(t) = -1.25
v(t) = 10 - 1.25*t
s(t) = -0.625*t^2 + 10*t = (10 - 0.625*t)*t

你也可以用数字计算答案。这就是您使用 Kotlin 所做的。

如果你知道初始条件

a(0), v(0), and s(0)

你可以像这样计算时间增量 dt 结束时的值:

a(t+dt) = f(t+dt)
v(t+dt) = v(t) + a(t)*dt
s(t+dt) = s(t) + v(t)*dt

看来您假设加速度在您感兴趣的整个时间内是恒定的。

你没有说你使用的是什么单位。我将采用公制单位:以米为单位的长度和以秒为单位的时间。

您在 8 秒内从初始速度 10 m/sec 减速到最终速度 0 m/second。这意味着 -1.25 m/sec^2.

的恒定加速度

您应该能够将值代入这些方程式并获得您需要的答案。

在尝试编写代码之前先手动进行计算。