ぐっちゃんのチェックポイント

身近なことからキワドイとこまで、幅広い領域を担当しています

ボールを45°の角度で投げても一番遠くに飛ばないワケ

はじめに

こんにちは、pLotsです。


みなさんは小中学校の時に測定ってやりましたか??
私はその中のボール投げとシャトルランが苦手でした。


特にボール投げ苦手過ぎて20mくらいしか投げることができませんでした笑
おまけにノーコンなのでもうダメです。


当時の私の担任が
「45°の角度で投げると一番遠くに投げれるんだよ」
って仰っていました。


しかし高校で物理を習っていた時、
「それって地面から投げる時限定なんじゃないか?」
ということに気付きました。


そこで今回は、
(1)45°が一番遠くに投げることができると言われている理由
(2)なぜ45°の角度で投げても一番遠くに飛ばないのか

の2点について記事を書いていきます。

前提知識

数学

三角関数の倍角(今回はsinの倍角だけでok)
2倍角
 sin2θ = 2sinθcosθ
 cos2θ = cos^2θ - sin^2θ

物理

力の分解

斜方投射の公式

・速度  v_x = v_0 cosθ ,v_y = v_0 sinθ - gt
・位置  x = v_0 cosθ・t ,y = v_0 sinθ・t - \dfrac {1}{2}gt^2

くわしくは
斜方投射1 ■わかりやすい高校物理の部屋■



(1)45°が一番遠くに投げることができると言われている理由
図を元に解いていきましょう

・まずは垂直方向について考える
投げ始めてボールが最も高い高さに届くまでの時間を  t [s] とおく。
最も高い高さでは、垂直方向の速度が  0 [m/s] になるので
 0 = vsinθ-gt

これを  t について解く。
 t =  \dfrac {vsinθ}{g}・・・①

ボールが最も高い高さに届くまでの時間を  t としたので、
投げ始めて落ちるまでにかかる時間は  2t である。

・次に水平方向について考える
基本的には時間×速度なので、
距離d = 水平方向の速度 × 投げ始めて落ちるまでの時間 すなわち
 d = vcosθ・2t ・・・②

①を②に代入して
 d = vcosθ・ \dfrac {2vsinθ}{g}
    = \dfrac {2v^2sinθcosθ}{g}

ここで 前提知識 の倍角の公式を使う。
 d = \dfrac {v^2sin2θ}{g}


さて、この飛距離 d を最大にするにはどうするか?

 sin の範囲が -1~1 なので、最大値の 1 になればいい
とすると、
 sin2θ = 1
 2θ = 90
 θ = 45

よって45°と導出できる。


(2)なぜ45°の角度で投げても一番遠くに飛ばないのか

結論から述べると、「投げる時の高さ」が原因です。

では投射時の高さh を考慮した図を元に解いていきましょう


投げ始めてボールが最も高い高さに届くまでの時間を  t_1
最も高い高さから地面に落ちるまでの時間を  t_2 とする。

・垂直方向
 t_1 について解くのは①と同じ
よって
 t_1 =  \dfrac {vsinθ}{g}・・・①'

次は  t_2 について考えます

 h + vsinθ t_1 - \dfrac {1}{2} gt_1^2 = \dfrac {1}{2} gt_2^2 ・・・③

③の左辺
高さh の場所から垂直方向に速度 vsinθで投げた時の t_1 秒後の高さ

③の右辺
最も高い高さから地面に落ちるまで
つまり、t_2 秒間の自由落下の距離です。


①'を③に代入し、式変形しましょう
 h + \dfrac {(vsinθ)^2}{g} - \dfrac {(vsinθ)^2}{2g} = \dfrac {1}{2} gt_2^2
 h + \dfrac {(vsinθ)^2}{2g} = \dfrac {1}{2} gt_2^2

 t_2^2 = \dfrac {2h}{g} + \dfrac {(vsinθ)^2}{g^2}

 t_2 > 0 なので
 t_2 = \sqrt {\dfrac {2h}{g} + \dfrac {(vsinθ)^2}{g^2}} ・・・③'




・水平方向
(1)と同様、式自体は簡単です。
 d = vcosθ・t_1 + vcosθ・t_2
 d = vcosθ・(t_1 +t_2) ・・・④

④に①'と③'を代入する
 d = vcosθ・(  \dfrac {vsinθ}{g} + \sqrt {\dfrac {2h}{g} + \dfrac {(vsinθ)^2}{g^2}} )
 d = \dfrac {vcosθ}{g} ・(vsinθ +  \sqrt {2gh + (vsinθ)^2})

これをもう少し見やすくして

 d = \dfrac {v^2sin2θ}{2g} ・(1 +  \sqrt {\dfrac{2gh}{(vsinθ)^2} + 1}) ・・・⑤
となります。

しかし(1)と違い、式⑤に  θ = 45 を代入しても最大値にはなりません。

そこでPythonにて、最大飛距離とその時の角度を表示するコードを書いてみました。
第一引数に投げるときの速度、第二引数に高さを設定します。

import math
import numpy as np

def balloptimize(v,h):
  g = 9.8    #重力加速度
  h = h/100  #cmをmに換算
  deg = np.arange(1, 90, 0.01)   #1~90までの0.01刻みの配列を生成
  deg_list = list(deg)         #np.array型をlist型にする
  
  dest_list = []     #結果を入れるリストを用意
  for i in range(len(deg_list)):
    dest =  ((v ** 2 * math.sin(math.radians(2 * deg_list[i]))) / (2 * g)) * (1 + (( 2 * g * h ) / ((v * math.sin(math.radians(deg_list[i])))) ** 2 + 1)**(1/2)) #⑤の式
    dest_list.append(dest)
    
  print("-----最大飛距離[m]-----")
  print(round(max(dest_list),2))
  print()                                             #改行
  print("-----最適な角度[deg]-----")
  print(round(deg_list[dest_list.index(max(dest_list))],2))

では、初速度20[m/s] , 高さ100[cm]を第一引数、第二引数に代入しましょう
実行結果

balloptimize(20,100)
-----最大飛距離[m]-----
41.8

-----最適な角度[deg]-----
44.31

結果を見ると、約41.8 [m] 飛び、約44.31°が最適な角度ということがわかりました。

終わりに

速度だけでなく、投げる時の高さにも影響されるということを理解できたでしょうか。
今回は高校物理の応用なので、空気抵抗の影響は無いものとしています。

あとがき

今回の内容、実は学生の頃に考えていました。
しかしExcelで算出していて利便性が悪そう(?)だったので、
Pythonで表してみました。
ちなみに当時の私のExcelでは、あらかじめsin( 0° )~sin( 90° )の範囲を定義しておいて、
vlookup関数で最大飛距離での角度を求めていました。

たぶんこれが一番楽で直感的に出せると思っていました。



おしまい