ある2点を通る円の方程式を求めるのは難しい。分かりやすい解法としては、円の方程式に2点の座標を代入して連立させる方法である。しかし、もっと良い方法がある。それを今回は紹介すると同時に、複素数平面上で以下のような円束を描写することを目的とする。
ただし、上記の円束の題材は以下の京大の数学入試問題である。
したがって、今回の記事の内容が理解できれば、題材となる証明問題もスムーズに解くことができる。
円や直線に限らず、2つの陰関数で表現できる図形$f(x,y)=0,g(x,y)=0$が存在するとき、以下のことが成立するとする。
つまり2つの曲線は定点$(x_1,y_1)$を通るとすると、
実数$k$を用いて、以下の事が成立する。
つまり、陰関数
は、2つの曲線の交点を通る曲線となる。
そこで、$\gamma=x+jy$とした複素数平面上において以下の2つの曲線の交点を通る曲線を考える。
|\gamma|^2-1=0,\frac{\gamma-\bar{\gamma}}{2j}=0
とすると、2つの陰関数の交点をとおる陰関数は以下のように表すことができる。
(|\gamma|^2-1)+k \frac{\gamma-\bar{\gamma}}{2j}=0
したがって、
k=-\frac{2j(|\gamma|^2-1)}{\gamma-\bar{\gamma}}
コード
さて、上記の考えをもとにして、以下のようなPythonのプログラムを考える。
python. circle_com.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
n=200
L=3.0
x = np.linspace(-L, L, n)
y = np.linspace(-L, L, n)
X, Y = np.meshgrid(x, y)
Z = np.zeros((n, n))
for i in range(n):
for p in range(n):
gamma=X[i][p]+1j*Y[i][p]
Z[i][p]=np.log((abs(-2j*(abs(gamma)**2-1)/(gamma-gamma.conjugate()))))
plt.contourf(X, Y, Z, cmap='jet')
plt.colorbar()
plt.savefig("円束_複素数.png")
plt.show()
このように、上手く円束を描写することができているということが分かる。
今回は、複素数平面上における円束の描写をPythonを用いて表現してみた。具体的には、実数$k$を用いることで2つの曲線(円と直線)に共通な点を通る円の描写を行うことができた。
Views: 0