高さ h からの斜方投射の最大水平到達距離を陰関数定理を使って求める

高さ h からの斜方投射の最大到達距離を求める準備」のページを参照。

最大水平到達距離となる打ち出し角度 $\theta$ を,陰関数定理を使い,連立方程式の形にして SymPy や Maxima を使って求めてみる。

SymPy で高さ $h$ からの斜方投射の最大水平到達距離を陰関数定理を使って求める

In [1]:
from sympy import *
# 1文字変数の Symbol の宣言が省略できる
from sympy.abc import *

init_printing()

無次元化された斜方投射の解

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

In [2]:
var('H')
def X(T, theta):
    return cos(theta)*T

def Y(T, theta):
    return H + sin(theta)*T - T**2/2
In [3]:
X(T, theta)
Out[3]:
$\displaystyle T \cos{\left(\theta \right)}$
In [4]:
Y(T, theta)
Out[4]:
$\displaystyle H – \frac{T^{2}}{2} + T \sin{\left(\theta \right)}$

滞空時間 $T_1$

滞空時間 $T_1\ \ (>0)$ は以下の式を満たす。

$$Y(T_1, \theta) = 0 \quad\Rightarrow\quad T_1 = T_1(\theta)$$

In [5]:
var('T1')
solve(Y(T1, theta), T1)
Out[5]:
$\displaystyle \left[ – \sqrt{2 H + \sin^{2}{\left(\theta \right)}} + \sin{\left(\theta \right)}, \ \sqrt{2 H + \sin^{2}{\left(\theta \right)}} + \sin{\left(\theta \right)}\right]$

陰関数定理を使う

簡単な場合は,$T_1$ は $\theta$ の陽関数として求めることができるが,一般にはそうはいかないかもしれない。そこで,$T_1$ は $\theta$ の陰関数であるとして話を進める。

$Y(T_1(\theta), \theta) = 0$ であるから,

$$\frac{d Y(T_1(\theta), \theta)}{d\theta} =
\frac{\partial Y}{\partial T_1} \frac{d T_1}{d\theta} +
\frac{\partial Y}{\partial \theta}
= 0$$

より,$\displaystyle \frac{d T_1}{d\theta}$ を求めることができる。

In [6]:
T1 = Function('T1')(theta)

dY = diff(Y(T1, theta), theta)
sol1 = solve(dY, diff(T1, theta))
sol1
Out[6]:
$\displaystyle \left[ \frac{T_{1}{\left(\theta \right)} \cos{\left(\theta \right)}}{T_{1}{\left(\theta \right)} – \sin{\left(\theta \right)}}\right]$
In [7]:
dT1 = sol1[0]
Eq(Derivative(T1, theta), dT1)
Out[7]:
$\displaystyle \frac{d}{d \theta} T_{1}{\left(\theta \right)} = \frac{T_{1}{\left(\theta \right)} \cos{\left(\theta \right)}}{T_{1}{\left(\theta \right)} – \sin{\left(\theta \right)}}$

水平到達距離 $L$

滞空時間 $T_1(\theta)$ の間に水平方向に進む距離は

$$L = X(T_1(\theta), \theta)$$

In [8]:
def L(theta):
    return X(T1, theta)

$L$ が最大となる角度を求める

$\displaystyle \frac{dL}{d\theta} = 0$ となる角度 $\theta \equiv \theta_{\rm max}$ を求める。陰関数定理の結果を .subs() で代入して…

In [9]:
dL = diff(L(theta), theta).subs(diff(T1, theta), dT1)
dL = simplify(dL)
Eq(Derivative(L(theta), theta), dL)
Out[9]:
$\displaystyle \frac{d}{d \theta} T_{1}{\left(\theta \right)} \cos{\left(\theta \right)} = \frac{\left(- T_{1}{\left(\theta \right)} \sin{\left(\theta \right)} + 1\right) T_{1}{\left(\theta \right)}}{T_{1}{\left(\theta \right)} – \sin{\left(\theta \right)}}$

$L$ が最大となる角度は,連立方程式

\begin{eqnarray}
Y(T_1(\theta), \theta) &=& 0 \\
\frac{d}{d\theta} L(\theta) &=& 0
\end{eqnarray}

を,$\sin\theta$ と $T_1(\theta)$ について解いて求めることができる。

In [10]:
sol2 = solve([Y(T1, theta), dL], 
             [sin(theta), T1])
sol2
Out[10]:
$\displaystyle \left[ \left( – \frac{\sqrt{2}}{2 \sqrt{H + 1}}, \ – \sqrt{2 H + 2}\right), \ \left( \frac{\sqrt{2}}{2 \sqrt{H + 1}}, \ \sqrt{2 H + 2}\right)\right]$

$\sin\theta > 0, \ T_1(\theta) > 0$ であるから,解は…

In [11]:
sinth = sol2[1][0]
sinth
Out[11]:
$\displaystyle \frac{\sqrt{2}}{2 \sqrt{H + 1}}$

$$ \sin\theta_{\rm max} = \frac{1}{\sqrt{2 (1+H)}}$$であることがわかったから,$\tan\theta_{\rm max}$ は…

In [12]:
simplify(sinth/sqrt(1-sinth**2))
Out[12]:
$\displaystyle \frac{1}{\sqrt{\frac{2 H + 1}{H + 1}} \sqrt{H + 1}}$
In [13]:
# 二乗して平方根
sqrt(_**2)
Out[13]:
$\displaystyle \sqrt{\frac{1}{2 H + 1}}$

なかなか簡単化してくれませんが,要するに

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

ということです。

最大水平到達距離

$$L_{\rm max} = X(T_1(\theta_{\rm max}), \theta_{\rm max})$$

In [14]:
T1max = sol2[1][1]
thmax = asin(sol2[1][0])

Lmax = X(T1max, thmax)
simplify(Lmax)
Out[14]:
$\displaystyle \sqrt{\frac{2 H + 1}{H + 1}} \sqrt{H + 1}$
In [15]:
# 二乗して平方根
sqrt(_**2)
Out[15]:
$\displaystyle \sqrt{2 H + 1}$

これもなかなか簡単化してくれませんが,要するに

$$L_{\rm max} = \sqrt{1 + 2H}$$

ということです。

別解

陰関数定理を使い,連立方程式の形にしますが,$\sin\theta$ を消去する方針でやってみます。

$\displaystyle \frac{dL}{d\theta} = 0$ を $\theta$ について解きます。

In [16]:
Eq(dL, 0)
Out[16]:
$\displaystyle \frac{\left(- T_{1}{\left(\theta \right)} \sin{\left(\theta \right)} + 1\right) T_{1}{\left(\theta \right)}}{T_{1}{\left(\theta \right)} – \sin{\left(\theta \right)}} = 0$
In [17]:
solsin = solve(dL, sin(theta))
solsin
Out[17]:
$\displaystyle \left[ \frac{1}{T_{1}{\left(\theta \right)}}\right]$

この $\sin\theta$ を $Y(T_1, \theta) = 0$ に代入して1変数 $T_1$ に関する方程式にし,$T_1$ について解きます。

In [18]:
Eq(Y(T1, theta).subs(sin(theta), solsin[0]), 0)
Out[18]:
$\displaystyle H – \frac{T_{1}^{2}{\left(\theta \right)}}{2} + 1 = 0$
In [19]:
eqT1 = Y(T1, theta).subs(sin(theta), solsin[0])
sols = solve(eqT1, T1)
sols
Out[19]:
$\displaystyle \left[ – \sqrt{2 H + 2}, \ \sqrt{2 H + 2}\right]$

$T_1 > 0$ ですから…

In [20]:
T1max = sols[1]
T1max
Out[20]:
$\displaystyle \sqrt{2 H + 2}$

このときの $\theta$ の値は…

In [21]:
thmax = asin(1/T1max)
thmax
Out[21]:
$\displaystyle \operatorname{asin}{\left(\frac{1}{\sqrt{2 H + 2}} \right)}$

$\sin \theta_{\rm max} = $ …

In [22]:
sin(thmax)
Out[22]:
$\displaystyle \frac{1}{\sqrt{2 H + 2}}$

$\tan \theta_{\rm max} = $ …

In [23]:
tan(thmax)
Out[23]:
$\displaystyle \frac{1}{\sqrt{1 – \frac{1}{2 H + 2}} \sqrt{2 H + 2}}$
In [24]:
sqrt(factor(_)**2)
Out[24]:
$\displaystyle \sqrt{\frac{1}{2 H + 1}}$

最大到達距離 $L_{\rm max}$ は…

In [25]:
X(T1max, thmax)
Out[25]:
$\displaystyle \sqrt{1 – \frac{1}{2 H + 2}} \sqrt{2 H + 2}$
In [26]:
sqrt(simplify(_)**2)
Out[26]:
$\displaystyle \sqrt{2 H + 1}$

Maxima で高さ $h$ からの斜方投射の最大水平到達距離を陰関数定理を使って求める

無次元化された斜方投射の解

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

In [1]:
X(T, theta):= cos(theta)*T;
Y(T, theta):= H + sin(theta)*T - T**2/2;
Out[1]:
\[\tag{${\it \%o}_{1}$}X\left(T , \vartheta\right):=\cos \vartheta\,T\]
Out[1]:
\[\tag{${\it \%o}_{2}$}Y\left(T , \vartheta\right):=H+\sin \vartheta\,T+\frac{-T^2}{2}\]

滞空時間 $T_1$

滞空時間 $T_1\ \ (>0)$ は以下の式を満たす。

$$Y(T_1, \theta) = 0 \quad\Rightarrow\quad T_1 = T_1(\theta)$$

In [2]:
solve(Y(T1, theta) = 0, T1);
Out[2]:
\[\tag{${\it \%o}_{3}$}\left[ T_{1}=\sin \vartheta-\sqrt{\sin ^2\vartheta+2\,H} , T_{1}=\sqrt{\sin ^2\vartheta+2\,H}+\sin \vartheta \right] \]

陰関数定理を使う

簡単な場合は,$T_1$ は $\theta$ の陽関数として求めることができるが,一般にはそうはいかないかもしれない。そこで,$T_1$ は $\theta$ の陰関数であるとして話を進める。

$Y(T_1(\theta), \theta) = 0$ であるから,

$$\frac{d Y(T_1(\theta), \theta)}{d\theta} =
\frac{\partial Y}{\partial T_1} \frac{d T_1}{d\theta} +
\frac{\partial Y}{\partial \theta}
= 0$$

より,$\displaystyle \frac{d T_1}{d\theta}$ を求めることができる。

In [3]:
depends(T1, theta);

dY: diff(Y(T1, theta)=0, theta);
sol1: solve(dY, diff(T1, theta));
Out[3]:
\[\tag{${\it \%o}_{4}$}\left[ T_{1}\left(\vartheta\right) \right] \]
Out[3]:
\[\tag{${\it \%o}_{5}$}\frac{d}{d\,\vartheta}\,T_{1}\,\sin \vartheta+T_{1}\,\cos \vartheta-T_{1}\,\left(\frac{d}{d\,\vartheta}\,T_{1}\right)=0\]
Out[3]:
\[\tag{${\it \%o}_{6}$}\left[ \frac{d}{d\,\vartheta}\,T_{1}=-\frac{T_{1}\,\cos \vartheta}{\sin \vartheta-T_{1}} \right] \]
In [4]:
dT1: rhs(sol1[1]);
Out[4]:
\[\tag{${\it \%o}_{7}$}-\frac{T_{1}\,\cos \vartheta}{\sin \vartheta-T_{1}}\]

水平到達距離 $L$

滞空時間 $T_1(\theta)$ の間に水平方向に進む距離は

$$L = X(T_1(\theta), \theta)$$

In [5]:
L(theta):= X(T1, theta);
Out[5]:
\[\tag{${\it \%o}_{8}$}L\left(\vartheta\right):=X\left(T_{1} , \vartheta\right)\]

$L$ が最大となる角度を求める

$\displaystyle \frac{dL}{d\theta} = 0$ となる角度 $\theta \equiv \theta_{\rm max}$ を求める。陰関数定理の結果を .ev() で代入して…

In [6]:
dL: diff(L(theta), theta)$
dL: trigsimp(ev(dL, sol1[1]));
Out[6]:
\[\tag{${\it \%o}_{10}$}\frac{T_{1}^2\,\sin \vartheta-T_{1}}{\sin \vartheta-T_{1}}\]

$L$ が最大となる角度は,連立方程式

\begin{eqnarray}
Y(T_1(\theta), \theta) &=& 0 \\
\frac{d}{d\theta} L(\theta) &=& 0
\end{eqnarray}

を,$\sin\theta$ と $T_1(\theta)$ について解いて求めることができる。

In [7]:
sol2: solve([Y(T1, theta) = 0, dL = 0], 
            [sin(theta), T1]);
Out[7]:
\[\tag{${\it \%o}_{11}$}\left[ \left[ \sin \vartheta=-\frac{\sqrt{2}\,\sqrt{H+1}}{2\,H+2} , T_{1}=-\sqrt{2}\,\sqrt{H+1} \right] , \left[ \sin \vartheta=\frac{\sqrt{2}\,\sqrt{H+1}}{2\,H+2} , T_{1}=\sqrt{2}\,\sqrt{H+1} \right] \right] \]

$\sin\theta > 0, \ T_1(\theta) > 0$ であるから,解は…

In [8]:
sinth: rhs(sol2[2][1]), factor;
Out[8]:
\[\tag{${\it \%o}_{12}$}\frac{1}{\sqrt{2}\,\sqrt{H+1}}\]

$$ \sin\theta_{\rm max} = \frac{1}{\sqrt{2 (1+H)}}$$であることがわかったから,$\tan\theta_{\rm max}$ は…

In [9]:
sinth/sqrt(1-sinth**2), factor;
Out[9]:
\[\tag{${\it \%o}_{13}$}\frac{1}{\sqrt{H+1}\,\sqrt{\frac{2\,H+1}{H+1}}}\]
In [10]:
/* 二乗して平方根 */
sqrt(%**2);
Out[10]:
\[\tag{${\it \%o}_{14}$}\frac{1}{\sqrt{2\,H+1}}\]

なかなか簡単化してくれませんが,要するに

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

ということです。

最大水平到達距離

$$L_{\rm max} = X(T_1(\theta_{\rm max}), \theta_{\rm max})$$

In [11]:
T1max: rhs(sol2[2][2])$
thmax: asin(1/sqrt(2*(1+H)))$

X(T1max, thmax), factor;
Out[11]:
\[\tag{${\it \%o}_{17}$}\sqrt{H+1}\,\sqrt{\frac{2\,H+1}{H+1}}\]
In [12]:
/* 二乗して平方根 */
sqrt(%**2);
Out[12]:
\[\tag{${\it \%o}_{18}$}\sqrt{2\,H+1}\]

これもなかなか簡単化してくれませんが,要するに

$$L_{\rm max} = \sqrt{1 + 2H}$$

ということです。

別解

陰関数定理を使い,連立方程式の形にしますが,$\sin\theta$ を消去する方針でやってみます。

$\displaystyle \frac{dL}{d\theta} = 0$ を $\theta$ について解きます。

In [13]:
dL = 0;
Out[13]:
\[\tag{${\it \%o}_{19}$}\frac{T_{1}^2\,\sin \vartheta-T_{1}}{\sin \vartheta-T_{1}}=0\]
In [14]:
solsin: solve(dL=0, sin(theta));
soltheta: solve(solsin[1], theta);
solve: using arc-trig functions to get a solution.
Some solutions will be lost.
Out[14]:
\[\tag{${\it \%o}_{20}$}\left[ \sin \vartheta=\frac{1}{T_{1}} \right] \]
Out[14]:
\[\tag{${\it \%o}_{21}$}\left[ \vartheta=\arcsin \left(\frac{1}{T_{1}}\right) \right] \]

この $\theta$ を $Y(T_1, \theta) = 0$ に代入して1変数 $T_1$ に関する方程式にし,$T_1$ について解きます。

In [15]:
eqT1: ev(Y(T1, theta) = 0, soltheta[1]);
Out[15]:
\[\tag{${\it \%o}_{22}$}-\frac{T_{1}^2}{2}+H+1=0\]
In [16]:
sols: solve(eqT1, T1);
Out[16]:
\[\tag{${\it \%o}_{23}$}\left[ T_{1}=-\sqrt{2}\,\sqrt{H+1} , T_{1}=\sqrt{2}\,\sqrt{H+1} \right] \]

$T_1 > 0$ ですから…

In [17]:
T1max: rhs(sols[2]);
Out[17]:
\[\tag{${\it \%o}_{24}$}\sqrt{2}\,\sqrt{H+1}\]

このときの $\theta$ の値は…

In [18]:
thmax: ev(rhs(soltheta[1]), sols[2]);
Out[18]:
\[\tag{${\it \%o}_{25}$}\arcsin \left(\frac{1}{\sqrt{2}\,\sqrt{H+1}}\right)\]

$\sin \theta_{\rm max} = $ …

In [19]:
sin(thmax);
Out[19]:
\[\tag{${\it \%o}_{26}$}\frac{1}{\sqrt{2}\,\sqrt{H+1}}\]

$\tan \theta_{\rm max} = $ …

In [20]:
tan(thmax), factor;
Out[20]:
\[\tag{${\it \%o}_{27}$}\frac{1}{\sqrt{H+1}\,\sqrt{\frac{2\,H+1}{H+1}}}\]
In [21]:
sqrt(%**2);
Out[21]:
\[\tag{${\it \%o}_{28}$}\frac{1}{\sqrt{2\,H+1}}\]

最大到達距離 $L_{\rm max}$ は…

In [22]:
X(T1max, thmax), factor;
Out[22]:
\[\tag{${\it \%o}_{29}$}\sqrt{H+1}\,\sqrt{\frac{2\,H+1}{H+1}}\]
In [23]:
sqrt(%**2);
Out[23]:
\[\tag{${\it \%o}_{30}$}\sqrt{2\,H+1}\]