【Python】等加速度直線運動:物体の移動距離や速度を求める

■等加速度直線運動

「等加速度直線運動(とうかそくどちょくせんうんどう)」とは、加速度が一定(変化しない)で、まっすぐな直線上を運動する運動のこと。

特徴:

  1. 加速度が一定:物体の速さが一定の割合で増減あり
  2. 直線運動:物体はまっすぐな道筋を動く
  3. 初速度なしでも可:最初の速さ(初速度)が0でもありでも運動可能

▼3つの公式

「等加速度直線運動」の3の公式を以下に示す。

速度の式

\begin{equation}
v = v_0 + at
\end{equation}


変位の式

\begin{equation}
x = v_0 t + \frac{1}{2} a t^2
\end{equation}


速度と変位の関係

\begin{equation}
v^2 – v_0^2 = 2a x
\end{equation}


文字単位説明
\(v\)\(m/s\)速度
\(v_0\)\(m/s\)初速度
\(a\)\(m/s^2\)加速度
※正負あり
\(t\)\(s\)時刻(秒)
\(x\)\(m\)変位(距離)
※正負あり

■例題

図のような坂道に球体を原点Oに配置し、初速度\(4.0 m/s\)、加速度\(-5.0 m/s^2\)とするとき、以下の問題をpythonを使用して解く。
※坂道を登る方向を正、下る方向を負とする。

初速度:v0 = 4.0 m/s
初速度:v0 = 4.0 m/s
加速度:a = – 0.5 m/s2
加速度:a = – 0.5 m/s2
一瞬だけ速度が0になる
一瞬だけ速度が0になる
原点O
原点O
Text is not SVG – cannot display
  1. \(t = 2.0 s\)の時の速度を求める
  2. \(t = 2.0 s\)の時の変位(距離)を求める
  3. \(v = 0 m/s \)となる時の変位(距離)を求める
  4. \(t = 12.0 s\)の時の速度を求める
  5. \(t = 12.0 s\)の時の変位(距離)を求める

■サンプルコード

def cal_velocity(v0, a, t):
    """ 速度を求める
    :param v0: 初速度 m/s
    :param a: 加速度 m/s**2
    :param t: 時刻 s
    :return: 速度(v) m/s
    """
    return v0 + (a * t)


def cal_displacement(v0, t, a):
    """ 変位を求める
    :param v0: 初速度 m/s
    :param t: 時刻 s
    :param a: 加速度 m/s**2
    :return: 変位(x) m
    """
    return (v0 * t) + ((a * t ** 2) / 2)


def cal_displacement_ver2(v, v0, a):
    """ 変位を求める(ver2)
    :param v: 速度 m/s
    :param v0: 初速度 m/s
    :param a: 加速度 m/s**2
    :return: 変位(x) m
    """
    if a == 0:
        raise ValueError("a must not be zero to avoid division by zero.")
    x = (v ** 2 - v0 ** 2) / (2 * a)
    return x


if __name__ == '__main__':
    v0 = 4.0
    a = - 0.50

    print('===== 問1 =====')
    t_q1 = 2.0
    print(f'速度: {cal_velocity(v0, a, t_q1)}m/s')

    print('===== 問2 =====')
    t_q2 = 2.0
    print(f'変位: {cal_displacement(v0, t_q2, a)}m')

    print('===== 問3 =====')
    v_q3 = 0
    print(f'変位: {cal_displacement_ver2(v_q3, v0, a)}m')

    print('===== 問4 =====')
    t_q4 = 12
    print(f'速度: {cal_velocity(v0, a, t_q4)}m/s')

    print('===== 問5 =====')
    t_q5 = 12
    print(f'変位: {cal_displacement(v0, t_q5, a)}m')

便宜上、「速度と変位の関係」の式については、以下の通り整形して処理を実装する。
※関数名:cal_displacement_ver2(変位を求める(ver2))

\begin{equation}
v^2 – v_0^2 = 2a x
\end{equation}
\begin{equation}
x = \frac{v^2 – v_0^2}{2a}
\end{equation}

■実行結果

===== 問1 =====
速度: 3.0m/s
===== 問2 =====
変位: 7.0m
===== 問3 =====
変位: 16.0m
===== 問4 =====
速度: -2.0m/s
===== 問5 =====
変位: 12.0m

コメント