1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2次曲線の極座標表示とグラフ化

Posted at

はじめに

極座標表示とは、直交座標表示とは異なり半径と動径(角度)で点の情報を示すというものである。2次曲線や幾何学のような世界では重宝される。また、2体問題の場合、天体の運動は一般的に2次曲線で表すことができる。ところで、二次曲線は、極座標で表すと円、楕円、放物線、双曲線を1つの式に表すことができる。
そこで、今回は2次曲線の極座標表示を紹介して、それをプログラムで図示することで、曲線の性質を理解することを試みる。

二次曲線の極座標表示.png

直交座標と極座標の関係性

直交座標と、極座標は三平方の定理と三角関数によって密接に繋がっている。

\begin{equation}
\left\{ \,
    \begin{aligned}
    & x=  r\cos\theta \\
    & y= r\sin\theta \\
    \end{aligned}
\right.
\end{equation}

つまり、

\begin{equation}
\left\{ \,
    \begin{aligned}
    & r=\sqrt{x^2+y^2} \\
    & \theta= \tan^{-1}(\frac{y}{x})\\
    \end{aligned}
\right.
\end{equation}

上の関係式を上手く使いこなすことで、極座標と直交座標の変換ができる。

2次曲線の極座標表示

2次曲線の極座標表示は以下のように表すことができる。

r=\frac{l}{1+\epsilon \cos\theta}

ただし、$\epsilon\ge0$は離心率、$l>0$は半長弦と呼ばれる。

離心率によって描く図形の種類が変わる。

具体的には、

$\epsilon=0$のとき、円
$0<\epsilon<1$のとき楕円
$\epsilon=1$のとき放物線
$\epsilon>1$のとき双曲線

を示す。

プログラム

簡単のため、グラフの描写範囲を$0\le\epsilon\le2$と限定する。

r=\frac{l}{1+\epsilon \cos\theta}

を$\epsilon$について解くと以下のようになる。

\epsilon=\frac{\frac{l}{r}-1}{\cos \theta}

この式の$r,\theta$に以下の関連式を代入する。

\begin{equation}
\left\{ \,
    \begin{aligned}
    & r=\sqrt{x^2+y^2} \\
    & \theta= \tan^{-1}(\frac{y}{x})\\
    \end{aligned}
\right.
\end{equation}

これをプログラムで再現することで、コンター図で2次曲線描写する。

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

L=3
n = 1000
x = np.linspace(-L,L, n)
y= np.linspace(-L,L, n)
X, Y = np.meshgrid(x, y)
Z = np.zeros((n, n))
# 半長弦
l=1.0
for i in range(n):
  for k in range(n):
    r=(X[i][k]**2 + Y[i][k]**2)**0.5
    theta = np.angle(X[i][k]+1j*Y[i][k])
    #離心率
    epsilon=(l/r-1)/(math.cos(theta))
    #描写範囲の制限
    if 2>epsilon > 0:
        Z[i][k] = epsilon
    else:
        Z[i][k] = 0
plt.gca().set_aspect('equal', adjustable='box')
plt.contour(X, Y, Z, cmap='jet')
plt.colorbar(label="epsilon")
plt.xlabel("x")
plt.ylabel("y")
plt.savefig("二次曲線の極座標表示.png")
plt.show()

これを実行すると以下のようなコンター図が得られる。

二次曲線の極座標表示.png

まるで、天体の動きを表しているかのように美しく描写することができた。

まとめ

今回は、Pythonを用いて、2次曲線を描写することを試みた。具体的には、たった1つの極座標表示の式を用いて、円、楕円、放物線、双曲線を描写することができ、それらの差異が離心率で現れることが分かった。極座標表示は、とっつきにくい分野ではあるが、直交座標表示と三角関数と三平方の定理で繋がっているので、変換方法を押さえておけば理解は深まる。

参考文献

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?