はじめに
大学受験数学の有名問題の1つに準円というものがある。
具体的には、ある楕円に対して直交する2接線の交点の軌跡は円の軌跡を描く。
ただし、これを証明するのはかなり難しく、受験では差がつく問題であるといえる。
そこで、今回はそのような軌跡である準円について証明問題を考えそれを解く。
次に、計算機を用いた数値計算により、
準円が描写される軌跡について視覚的に理解することを目的とする。
具体的には、以下の図のようなグラフを作成する。
問題設定
楕円$\frac{x~2}{a^2}+\frac{y^2}{b^2}=1$に対して直交する2接線の交点は円を描くことを示せ。
解答
方針
2つの接線が直交することから、2つの傾きの積は-1となる。これを2次方程式の解と係数の関係と結び付けられるかがポイントとなる。これをミスると計算量がすさまじく膨大になる。
楕円の接線の方程式
楕円上の任意の点$(a \cos\theta,b\sin\theta)$を通る接線は、楕円の接線の公式により、
\frac{(a\cos\theta)x}{a^2}+\frac{(b\sin\theta)y}{b^2}=1
(ay)\sin\theta+(bx)\cos\theta=(ab)
一方で、傾き$m$は
m=-\frac{b\cos\theta}{a\sin\theta}
と表現できる。したがって、2つの直交する接線の接点を$(a \cos\theta_0,b\sin\theta_0),(a \cos\theta_1,b\sin\theta_1)$とすると、
(-\frac{b\cos\theta_0}{a\sin\theta_0})(-\frac{b\cos\theta_1}{a\sin\theta_1})=-1
が成立する。したがって、
\frac{b^2\cos\theta_0\cos\theta_1}{a^2\sin\theta_0\sin\theta_1}=-1
この式を用いて上手く2次方程式の解と係数の関係と結び付ける。
三角関数の相関関係
ここで、三角関数の相関関係により、
\sin^2\theta+\cos^2\theta =1
連立方程式
したがって、以下の連立方程式を作成することができる。
\begin{equation}
\left\{ \,
\begin{aligned}
& (ay)\sin\theta+(bx)\cos\theta=(ab) \\
& \sin^2\theta+\cos^2\theta =1 \\
\end{aligned}
\right.
\end{equation}
上式から$\cos\theta$を消去すると以下の$\sin\theta$の2次方程式が得られる。
\{(bx)^2+(ay)^2\}\sin^2\theta-(2a^2by)\sin\theta+\{(ab^2)-(bx)^2\}=0
この方程式に対して、解と係数の関係を用いると、
\sin\theta_0\sin\theta_1=-\frac{\{(ab^2)-(bx)^2\}}{\{(bx)^2+(ay)^2\}}
同様に、$\cos\theta$についての2次方程式を考えると以下のようになる。
\{(bx)^2+(ay)^2\}\cos^2\theta-(2ab^2x)\cos\theta+\{(ab^2)-(ay)^2\}=0
したがって、解と係数の関係より、
\cos\theta_0\cos\theta_1=-\frac{\{(ab^2)-(ay)^2\}}{\{(bx)^2+(ay)^2\}}
ところで、2つの接線は直交するので傾きの関係から、
\frac{b^2\cos\theta_0\cos\theta_1}{a^2\sin\theta_0\sin\theta_1}=-1
が成立したためこの式に前の2つの式を代入して整理すると以下の円の方程式が得られる。
x^2+y^2=(a^2+b^2)
プログラム
さて、上記のことを計算機を用いて確認してみよう。
アルゴリズム
直交する2接線から、
\frac{b^2\cos\theta_0\cos\theta_1}{a^2\sin\theta_0\sin\theta_1}=-1
が得られる。つまり、
\tan\theta_1=-\frac{b^2}{a^2\tan\theta_0}
なので、
\theta_1=\arctan{(-\frac{b^2}{a^2\tan\theta_0})}
これを用いることで、$\theta_0$を与えることで、2つの接線を描写することができる。
したがって、その交点を頑張って求めると、以下の通りである。
(x,y)=(\frac{a(\sin\theta_1-\sin\theta_0)}{\sin(\theta_1-\theta_0)},\frac{b(\cos\theta_1-\cos\theta_0)}{\sin(\theta_1-\theta_0)})
したがって、$-\pi\le\theta_0\le \pi$の範囲で$\theta_0$を
動かすと軌跡を描写することができるはずである。
Python
上記の考察をプログラムに反映すると以下の通り。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
#グラフのアスペクト比を整える
plt.axes().set_aspect("equal")
#プロット数
n=8
#theta_0の範囲
theta_0_ary=np.linspace(-math.pi,math.pi,n)
#描写領域
L=6
#楕円のパラメータ
a=2
b=1
x_ary=[]
y_ary=[]
plt.xlim(-L,L)
plt.ylim(-L,L)
for i in range(n):
theta_0=theta_0_ary[i]
#接線の直交条件
theta_1=math.atan(-b**2/(a**2*math.tan(theta_0)))
A=-(b/a)/math.tan(theta_0)
B=b/math.sin(theta_0)
C=-(b/a)/math.tan(theta_1)
D=b/math.sin(theta_1)
## 交点の座標
# x=-(B-D)/(A-C)
# y=A*x+B
x=a*(math.sin(theta_1)-math.sin(theta_0))/(math.sin(theta_1-theta_0))
y=b*(math.cos(theta_1)-math.cos(theta_0))/(math.sin(theta_1-theta_0))
x_ary.append(x)
y_ary.append(y)
## 2つの直交する接線の描写
xx=np.linspace(-L,L,n)
yy1=A*xx+B
yy2=C*xx+D
plt.plot(xx,yy1,color="blue")
plt.plot(xx,yy2,color="blue")
plt.plot(x,y,'o',color="red")
##楕円の描写
theta_ary=np.linspace(0,math.pi*2,100)
x_e_ary=a*np.cos(theta_ary)
y_e_ary=b*np.sin(theta_ary)
##解答の円の軌跡の描写
x_c_ary=(a**2+b**2)**0.5*np.cos(theta_ary)
y_c_ary=(a**2+b**2)**0.5*np.sin(theta_ary)
plt.plot(x_e_ary,y_e_ary,color="black")
plt.plot(x_c_ary,y_c_ary,color="red")
plt.savefig("準円_"+str(n)+"2.png")
plt.show()
結果
$n=2,4,6,8,10$での結果を以下に示す。
n=2
n=4
n=6
n=8
n=10
このように、交点は円周上にあることが分かる。
まとめ
今回は、大学入試数学で頻出かつレベルの高い問題として楕円の準円についての証明問題を扱った。ポイントとしては、接線の直交条件と解と係数の関係をどのようにして結びつけるかであった。
また、後半ではその命題に対して、計算機を用いた数値計算により視覚的に描写の様子を確認した。
このように、大学入試の問題を計算機を用いて視覚化することはプログラムの勉強になる。





