離心率から楕円のグラフを表示するPythonコード
楕円の離心率 $e$ から, 楕円のグラフをPythonで表示してみよう。
楕円のグラフ(媒介変数表示)
横方向の半径の長さを $a$, 縦方向の半径の長さを $b$ とすると, $(x,y)=(a\cos\theta, b \sin \theta)$ が対応する(原点中心の)楕円の媒介変数表示となる。
媒介変数 $\theta$ をlinspace(0, 2*np.pi, n)
で $0 \leqq \theta \leqq 2\pi$ の中で $n$ 刻みで定義する。
x
座標をa*np.cos(theta)
, y
座標をb*np.sin(theta)
として, matplotlib.pyplot(x, y)
でグラフを表示する。
$a>b$ である楕円は $b^2 =a^2(1-e^2)$, $a<b$ である楕円は $a^2 =b^2(1-e^2)$ が成り立つことを利用して, 離心率を利用する。
入力例. 離心率 $e=0.8$ の横長の楕円を表示する
import matplotlib.pyplot as plt
import numpy as np
# 離心率
eccentricity = 0.8
# 楕円のパラメータ
a = 1 # 長軸の半径
b = a * np.sqrt(1 - eccentricity**2) # 短軸の半径
# パラメータを生成
theta = np.linspace(0, 2 * np.pi, 100)
# 楕円の座標計算
x = a * np.cos(theta)
y = b * np.sin(theta)
# 楕円を描画
plt.plot(x, y, label=f'Eccentricity = {eccentricity}')
plt.title('Ellipse with Given Eccentricity')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.grid(True)
plt.show()
