はじめに
方べきの定理は、高校数学1Aの幾何学に登場する重要公式である。
したがって、入試問題では座標計算を用いた図形と方程式やベクトルなどの問題の重要な背景となっている場合が多い。
そこで、今回は、単位円の内部に存在する定点Pを設定し、$P$を通る任意の傾き$m$の直線と単位円の交点$A,B$を考えると、$PA\times PB$は一定になるという方べきの定理を確かめる。
具体的には、$x$軸を$PA$、$y$軸を$PB$として$m$を動かし、プロットしたとき、反比例のグラフになるか確認する。
以下、結果の概要を示す。
Pythonを用いて数値計算した結果、以下のグラフのようになった。
このように、数値計算を行った際の数値誤差は考えられるが、
ほぼ反比例のグラフになることが視覚的に確認できた。
問題設定
以下の単位円$C$において方べきの定理が成立することを視覚的に確認する。
ただし、$P(x,y)$は単位円内部に固定して、
直線$ABの傾き$$m$は実数全体を動くものとする。
まず、$A,B$の座標を求めるべく、以下の連立方程式を解くことを考える。
\begin{equation}
\left\{ \,
\begin{aligned}
& x^2+y^2=1 \\
& y-y_0=m(x-x_0) \\
\end{aligned}
\right.
\end{equation}
すると、
(1+m^2)x^2+2m(y_0-mx_0)x+\{(y_0-mx_0)^2-1\}=0
という二次方程式ができあがる。
そこで、この方程式の実数解を$x_{A},x_{B}(x_{A}>x_{B})$とおくと
AP=|x_0-x_A|\sqrt{m^2+1},BP=|x_0-x_B|\sqrt{m^2+1}
が成立する。したがって、$m$を動かした場合、
$PA\times PB$は一定となることが、
成立することをPythonによる数値計算で視覚的に確認する。
プログラム
以上の考察をもとにPythonでプログラムを生成した。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
PA_ary=[]
PB_ary=[]
m_lim=10
n=100
m_ary=np.linspace(-m_lim,m_lim,n)
#円の内部にPが存在していた方が二次方程式の実数解が得られやすいので、
# 反比例のグラフを描写できるほどの幅広い領域をプロットできる。
x_0,y_0=0.3,0.4
for i in range(n):
m=m_ary[i]
A=m**2+1
B=2*m*(y_0-m*x_0)
C=(y_0-m*x_0)**2-1
D=B**2-4*A*C
if D>=0:
x_1=(-B+D**0.5)/(2*A)
x_2=(-B-D**0.5)/(2*A)
PA=abs(x_0-x_1)*(m**2+1)**0.5
PB=abs(x_0-x_2)*(m**2+1)**0.5
PA_ary.append(PA)
PB_ary.append(PB)
plt.title("PA×PB=(一定)")
plt.plot(PA_ary,PB_ary)
plt.xlabel("PA")
plt.ylabel("PB")
plt.savefig("方べきの定理.png")
plt.show()
結果
以下のようなグラフが得られた。
このグラフから、おおよそ視覚的には反比例の曲線になっているのではないかと推定することができる。
ただし、$P$が単位円の外部にある場合は$m$の値によっては$A,B$が存在しない(虚数解を持つ)ことになる場合があるので、数値計算が難しい。
まとめ
今回は、方べきの定理を題材にした数値計算を行った。
方べきの定理を厳密に証明する場合、少し複雑な代数計算を行う必要がある。
ただ、概要のみ知りたい場合は計算機による数値計算を行うという選択肢もある。
したがって、幾何学のような一見、
数値計算とは関係なさそうな分野でも座標計算の知識を用いることで
上手く処理できる場合がある。

