【Python】速さと速度の違いと計算

■概要

「速さ」と「速度」は物理では別物として扱う。

「速さ」と「速度」の違いを説明し、それぞれの机上とPythonで計算を行う。

■速さ

速さは値の大きさを表すものであり、「距離÷時間」で求めることができる。
すなわち、単位時間あたり、どのくらいの距離を進んだかを速さとしている。
なお、大きさだけを考えるものをスカラーと呼ぶ。

速さの単位は、距離(km、mなど)と時間(時間:h、秒:sなど)の単位に依存する。
例えば、距離(m)あたりの時間(秒:s)の場合は、「m/s」と表す。

▼問1

50mの距離を10秒で走る時、以下の2問を求める。


・問1-1:速さ(m/s)を求める。

速さ(m/s)
= 50(m)÷ 10(秒:s)
= 5.0(m/s)


・問1-2:速さ(km/h)を求める。

まず、距離「m」を「km」、時間「s」を「h」に変換する必要がある。
1(m) = 1/1000(km)
1(s) = 1/3600(h)

速さ(km/h)
=(50(m)÷ 1000)÷ (10(s)÷ 3600)
= 18(km/h)

■平均の速さ

前項の「■速さ」の問1では、一定の距離を同じ時間で移動したと仮定し、速さを算出したが、途中で速さが変わった場合の平均の速さは、それぞれの速さの平均ではなく、全体の距離とかかった時間で求める。

▼問2

80mの距離を最初の30mは30秒で歩き、残りの50mは10で走った場合の平均の速さ(m/s)を求める。

まず、全体の距離とかかった時間を算出し、それぞれで速さを求める。

速さ(m/s)
= (30(m)+ 50(m))÷(30(s)+ 10(s))
= 80(m) ÷ 40(s)
= 2.0(m/s)

■速度

「速さ」は大きさだけで表すのに対して、「速度」は大きさと向きで表す
なお、速度のように、大きさと向きで表すものをベクトルと呼ぶ。

速度を表す場合、任意の方向AからBへ進む場合を「正」とした時、任意の方向BからAへ進む場合を「負」とする。

▼問3

西から東へ進む方向を「正」としたとき、西から東へ3.0(m/s)の速さで移動する場合と、東から西へ2.0(m/s)の速さで移動する場合の速度を求める。

西から東へ進む方向を「正」とした場合、
3.0(m/s)
-2.0(m/s)
と表すことができる。

■Pythonによる実装

問1から問3までの問題について、Pythonによる計算を示す。

▼サンプルコード

# 速さ(m/s)を算出する関数
def cal_speed_m_s(m, s):
    return m / s

# 距離(m)と時間(s)から、速さ(km/h)を算出する関数
def cal_speed_m_s_to_km_h(m, s):
    # mをkmに変換
    km = m / 1000
    # s(秒)をh(時間)に変換
    h = s / 3600

    return km / h

# 速さと正負から速度に変換する関数
def change_positive_nagative(m_s, flg):
    # flg:Trueの場合は正の速度
    if flg:
        return m_s
    # flg:Falseの場合は負の速度
    else:
        return -1 * m_s


# メイン処理
if __name__ == '__main__':
    # 問1:50mの距離を10秒で走る場合
    m = 50
    s = 10

    # 問1-1:速さ(m/s)
    print('問1-1:', cal_speed_m_s(m, s), 'm/s')

    # 問1-2:速さ(km/h)
    print('問1-2:', cal_speed_m_s_to_km_h(m, s), 'km/h')

    # 問2:80mの道のりを最初の30mは30秒で歩き
    # 残りの50mは10秒で走る場合の平均の速さ
    m = 30 + 50
    s = 30 + 10
    print('問2:', cal_speed_m_s(m, s), 'm/s')

    # 問3:西から東へ向かう場合を正とした場合
    # 西から東:True
    # 東から西:False

    # 問3-1:西から東へ3.0m/sの速度
    print('問3-1:', change_positive_nagative(3.0, True), 'm/s')

    # 問3-2:東から西へ2.0m/sの速度
    print('問3-2:', change_positive_nagative(2.0, False), 'm/s')

▼実行結果

問1-1: 5.0 m/s
問1-2: 18.0 km/h
問2: 2.0 m/s
問3-1: 3.0 m/s
問3-2: -2.0 m/s

コメント

タイトルとURLをコピーしました