nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

頂角が小さい二等辺三角形の底辺について

回転運動の説明を読んでいる時に、角度が小さい時の差ベクトルの近似について気になったので考えて見た。
等速円運動 [物理のかぎしっぽ]

以下の図のような二等辺三角形における底辺(青)、円弧(赤)、そして垂線(緑)を考える。
f:id:koideforest:20181111195750p:plain
図では頂角は30度でプロットしてある。

問題によっては、赤を近似するために青にしたり、その逆もあったり、何を基準にするかややこしい面があるように思う。
とりあえず、それぞれを式で表す。二等辺三角形の頂角および辺の長さを \theta, rとすると

\displaystyle
(red) = r \theta
\\
\displaystyle
(blue) = r \sin( \theta / 2 ) + r \sin( \theta / 2 ) = 2 r \sin( \theta / 2 )
\\
\displaystyle
(green) = r \sin( \theta )

青を表現するのに \sin関数を使うため、比較として、三角形における \sin関数の最も直接的な利用である垂線(緑)を登場させた。
底辺と垂線は、次のようにして差を評価出来る。

\displaystyle
(green) = r \sin( \theta ) = 2 r \sin( \theta / 2 ) \cos( \theta / 2 ) < (blue)
角度が非常に小さい( \theta \ll 1 )時、 \cos( \theta / 2 ) \approx 1 となって、青と緑は(ほぼ)一致する。

赤と青は、 \sin関数のTaylor展開から \theta << 1で両者が一致するのがすぐわかる。

\displaystyle
(blue) = 2 r \sin( \theta / 2 ) \approx 2 r \left( \theta / 2 \right) = r \theta = (red)

よって、最終的には赤青緑が全て近似的に等しくなる。

図を作るのに使ったスクリプト

from matplotlib import pyplot as plt
import numpy as np
import math

fig = plt.figure()
ax = fig.add_subplot( 1, 1, 1 )

d = 30. # degree
radians = np.array([ math.radians(d) for d in np.linspace( 0, d, 100 ) ])
c = np.cos( math.radians(d) )
s = np.sin( math.radians(d) )

# triangle
tri = plt.Polygon( ( ( 0, 0 ), ( 1, 0 ), ( c, s ) ),
                   color = "black",
                   alpha=0.1
      )
ax.add_patch( tri )

# arc
ax.plot( np.cos( radians ), np.sin( radians ), color = "red" )

# base line of triangle
xs = np.linspace( c, 1., 100 )
ys = ( ( s - 0. ) / ( c - 1. ) ) * ( xs - c ) + s 
ax.plot( xs, ys, color = "blue" )

# vertical line in triangle
ax.vlines( c, 0., s, color = "green" )

plt.tick_params( left='off', right='off', bottom='off', top='off',
                 labelleft='off', labelright='off', labelbottom='off', labeltop='off' )

plt.savefig( "triangle.png" )

三角形および補助線の書き方は以下を参照
Python/Matplotlibで三角形の描画
【Python@matplotlib】matplotlib にて横、縦の補助線を描く方法について - Qiita