3
1

軌跡とプログラミング

Posted at

はじめに

高校数学2、3において放物線、円、楕円、双曲線の軌跡と方程式は頻出である。しかし、定義からそれらを実際に図示してみるという取り組みはあまりないようである。従って、本記事ではPythonを用いて、定義からそれぞれのグラフを描写することができるかどうかを考察する。具体的には、まず各曲線において描き方(定義)を述べ、それに応じたプログラムを作ることでどのようなグラフになるのかを図示する。

定義

定点から距離が一定の点が描く軌跡を円と呼ぶ。

プログラム

複素数平面を用いてプログラムを作成した。

python circle_tra.py
import numpy as np
import matplotlib.pyplot as plt
import math
import japanize_matplotlib

m=2
n=100

#座標空間の設定
x=np.linspace(-m,m,n)
y=np.linspace(-m,m,n)

X,Y=np.meshgrid(x,y)

#Z=(X**2+Y**2)**0.5

Z=abs(X+1j*Y)

plt.contourf(X,Y,Z)
plt.colorbar(label="半径")
plt.savefig("円の軌跡.png")
plt.show()

円の軌跡.png

楕円

定義

2点からの距離の和が一定な点が描く軌跡のことを楕円と呼ぶ。

プログラム

ell_tra.py
import numpy as np
import matplotlib.pyplot as plt
import math
import japanize_matplotlib

m=2
n=100

#座標空間の設定
x=np.linspace(-m,m,n)
y=np.linspace(-m,m,n)

X,Y=np.meshgrid(x,y)

Z_a=1
Z_b=-1

z=X+1j*Y

Z=abs(z-Z_a)+abs(z-Z_b)

plt.contourf(X,Y,Z)
plt.colorbar(label="距離の和")
plt.savefig("楕円の軌跡.png")
plt.show()

楕円の軌跡.png

双曲線

定義

2点間からの距離の差が一定になるような点が描く軌跡を双曲線と呼ぶ。

プログラム

python hyper_tra.py
import numpy as np
import matplotlib.pyplot as plt
import math
import japanize_matplotlib

m=2
n=100

#座標空間の設定
x=np.linspace(-m,m,n)
y=np.linspace(-m,m,n)

X,Y=np.meshgrid(x,y)

Z_a=1
Z_b=-1

z=X+1j*Y

Z=abs(z-Z_a)-abs(z-Z_b)

plt.contourf(X,Y,Z)
plt.colorbar(label="距離の差")
plt.savefig("双曲線の軌跡.png")
plt.show()

双曲線の軌跡.png

放物線

定義

ある点とある直線からの距離が等しくなるような点が描く軌跡を放物線と呼ぶ。

プログラム

python par_tra.py
import numpy as np
import matplotlib.pyplot as plt
import math
import japanize_matplotlib

m=2
n=100

#座標空間の設定
x=np.linspace(-m,m,n)
y=np.linspace(-m,m,n)

X,Y=np.meshgrid(x,y)

Z_x=-1

Z=1

z=X+1j*Y

Z=abs(z-Z)-(z-Z_x).real

plt.contourf(X,Y,Z)
plt.colorbar(label="直線と点からの距離の差")
plt.savefig("放物線.png")
plt.show()

放物線.png

まとめ
今回は、コンター図を用いて二次曲線の軌跡を定義からプログラムを用いて描写した。ただし、描写においては複素数平面を用いた。結果としてきれいに描写することができていることが分かった。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1