Return to コンピュータ演習

高さ h からの斜方投射の最大到達距離を求める準備

地面から高さ $h$ の地点から空気抵抗なしの斜方投射を行うと,水平方向の到達距離が最大となるのは打ち上げ角度(仰角)が $45^{\circ}$ のときではない。何度のときかを求めるための準備。

問題(3択)

まずは予想をたててみよう。

地面から高さ $h$ の地点から空気抵抗なしの斜方投射の問題。初速度の大きさが一定の条件で,地面から高さ $h$ の地点から投射された物体の水平到達距離が最大となる投射角 $\theta$ は…

  1. 45° より小さくなる。
  2. やっぱり 45° である。
  3. 45° より大きくなる。

 

運動方程式

水平方向を \(x\),鉛直上向きを \(y\) とすると,運動方程式は重力加速度の大きさを \(g\) として

\begin{eqnarray}
\frac{d^2 x}{dt^2} &=& 0 \\
\frac{d^2 y}{dt^2} &=& -g
\end{eqnarray}

初期条件と解

初期条件を \(t = 0\) で

$$x(0) = 0, \quad y(0) = h, \quad v_x(0)  = v_0 \cos\theta, \quad v_y(0) = v_0 \sin \theta$$

としたときの解は

\begin{eqnarray}
x(t) &=& v_0 \cos\theta\cdot t \\
y(t) &=& h + v_0 \sin\theta\cdot t – \frac{1}{2} g t^2 \\
v_x(t) &=& v_0 \cos\theta \\
v_y(t) &=& v_0 \sin\theta – g t
\end{eqnarray}

$h=0$ の場合

$h=0$ のときの最大到達距離は $\theta = 45^{\circ}$ のときであることを示しておく。

地面 $y=0$ から打ち上げて再び地面 $y = 0$ に落ちるまでの滞空時間 $t_1\ (>0)$ は

$$y(t_1) = v_0 \sin\theta\cdot t_1 – \frac{1}{2} g t_1^2  =0$$

より

$$t_1 = \frac{2 v_0}{g} \sin\theta$$

この時間での水平方向の到達距離は

$$x(t_1) = v_0 \cos\theta \,t_1 = \frac{2 v_0^2}{g} \sin\theta\,\cos\theta = \frac{v_0^2}{g} \sin 2\theta$$

で,$x(t_1)$ が最大となるのは $\sin 2\theta = 1$ すなわち $\theta = 45^{\circ}$ のときであった。そのときの最大到達距離は

$$x_{\rm max} = \frac{v_0^2}{g} $$

 

無次元化

この系に特徴的な時間 \(\displaystyle \tau \equiv \frac{v_0}{g}\) および長さ \(\displaystyle \ell \equiv v_0 \tau = \frac{v_0^2}{g}\) で解を無次元化しておく。

\begin{eqnarray}
T &\equiv& \frac{t}{\tau} \\
H &\equiv& \frac{h}{\ell} \\
X(T, \theta) &\equiv& \frac{x}{\ell} = T \,\cos\theta \tag{1}\\
Y(T, \theta)&\equiv& \frac{y}{\ell} = H+ T\,\sin\theta – \frac{1}{2} T^2  \tag{2}\\
V_x &\equiv& \frac{d\bar{x}}{d\bar{t}} = \cos\theta \\
V_y &\equiv& \frac{d\bar{y}}{d\bar{t}} = \sin\theta – T
\end{eqnarray}

滞空時間と水平到達距離

一般の $H > 0$ の場合,地面より高さ \(H\) の場所から投射して地面 \(Y=0\) に落ちるまでの滞空時間 \(T_1 \ (>0)\) は \((2)\) 式から

\begin{eqnarray}
Y(T_1, \theta) &=& H + \sin\theta\cdot T_1 – \frac{1}{2} T_1^2 = 0
\end{eqnarray}

より(2次方程式の解の公式の正の解のみを取り出せばよいので)

$$ T_1 = \sin\theta + \sqrt{\sin^2\theta + 2 H}$$

この時間での水平方向の到達距離 \(L\) は \((1)\) 式から

\begin{eqnarray}
L &=& T_1 \cos\theta \\
&=& \sin\theta \cos\theta + \sqrt{\sin^2\theta \cos^2\theta + 2 H \cos^2\theta}
\end{eqnarray}

このままでもよいが,$u \equiv \tan\theta$  として $L$  を $u$ で書き直すと,

\begin{eqnarray}
\cos^2\theta &=& \frac{1}{1 + u^2} \\
\sin\theta \cos\theta &=& \tan\theta \cos^2\theta = \frac{u}{1+u^2} \\
\therefore\ \ L(u) &=& \frac{u}{1+u^2} + \sqrt{\left(\frac{u}{1+u^2} \right)^2 + \frac{2 H}{1+u^2}} \\
&=& \frac{1}{1+u^2} \left\{u + \sqrt{(1+2H) u^2 + 2H} \right\}
\end{eqnarray}

最大水平到達距離

水平到達距離が最大となるのは $\displaystyle \frac{d L(u)}{du} = 0$ となる $u \equiv u_{\rm max}$ のときである。別ページで解いているように,

$$u_{\rm max} = \tan \theta_{\rm max} = \frac{1}{\sqrt{1 + 2H}}$$

であり,そのときの最大水平到達距離は

$$L_{\rm max} \equiv L(u_{\rm max} ) = \sqrt{1 + 2H}$$

となることがわかります。(手計算でやるのはしんどいので。)

SciPy で高さ h からの斜方投射の最大到達距離を求める

地面から高さ $h$ の地点から空気抵抗なしの斜方投射を行うと,初速度の大きさを一定とした場合,水平方向の到達距離が最大となるのは打ち上げ角度(仰角)が何度のときかを Python の SciPy と NumPy を使って(かつ SymPy を使わずに)求める。

SymPy で高さ h からの斜方投射の最大到達距離を求める

地面から高さ $h$ の地点から空気抵抗なしの斜方投射を行うと,初速度の大きさを一定とした場合,水平方向の到達距離が最大となるのは打ち上げ角度(仰角)が何度のときかを Python の SymPy を使って(かつ SciPy や NumPy を使わずに)求める。