双曲面の方程式
双曲面の方程式をPythonで解いてグラフ化する方法を示します。
ここでは、主軸が$ (z) $軸に平行な双曲面の方程式を例に取ります。
双曲面の方程式:
$$
[ \frac{x^2}{a^2} + \frac{y^2}{b^2} - \frac{z^2}{c^2} = 1 ]
$$
この方程式をグラフ化するために、NumPy
とMatplotlib
を使用します。
1 | import numpy as np |
このコードでは、双曲面のパラメータ$ (a, b, c) $を指定しています。
そして、双曲線の方程式をパラメータ$ (U, V) $の関数として定義し、それを使用して$ (X, Y, Z) $座標を計算しています。
最後に、計算した座標を用いてMatplotlib
のplot_surface
関数で双曲面をプロットしています。
このコードを実行すると、指定した双曲面が3次元グラフとして表示されます。
[実行結果]
ソースコード解説
ソースコードの詳細な説明は以下の通りです。
1. ライブラリのインポート
1 | import numpy as np |
numpy
: 数値計算ライブラリ。配列操作や数学関数を提供。matplotlib.pyplot
: グラフ描画ライブラリ。mpl_toolkits.mplot3d
: 3次元プロット用のツールキット。
2. 双曲面のパラメータ設定
1 | a = 2.0 # x方向の半軸の長さ |
- 双曲面の各軸方向の半軸の長さを設定します。
3. パラメータの範囲設定とメッシュグリッド作成
1 | u = np.linspace(-2, 2, 100) |
np.linspace
: 指定された範囲内で等間隔の数値を生成。meshgrid
: 2つの1次元配列から2次元グリッドを生成。
4. 双曲面の方程式をパラメータ表示で定義
1 | X = a * np.cosh(U) * np.cos(V) |
- 双曲面の方程式をパラメータ$ (U) $と$ (V) $の関数として定義します。
np.cosh
: 双曲線余弦関数。np.sinh
: 双曲線正弦関数。
5. 3Dプロットの準備
1 | fig = plt.figure(figsize=(8, 8)) |
plt.figure
: 新しい図を作成します。fig.add_subplot
: サブプロットを追加します。
ここでは3次元の図を作成しています。
6. 双曲面のプロット
1 | ax.plot_surface(X, Y, Z, cmap='viridis', edgecolor='k') |
ax.plot_surface
: 双曲面を3Dプロットします。cmap='viridis'
: カラーマップをViridis
に設定。edgecolor='k'
: エッジの色を黒色に設定。
7. 軸ラベルとタイトルの設定
1 | ax.set_xlabel('X') |
- 軸ラベルとグラフのタイトルを設定します。
8. グラフの表示
1 | plt.show() |
- 作成した3Dグラフを表示します。
このソースコードを実行すると、定義された双曲面の方程式に基づいて双曲面が描画され、その3次元形状が視覚化されます。
結果解説
[実行結果]
以下はグラフに表示される内容の詳細です。
1. 双曲面の方程式:
双曲面の方程式は次のように表されます。
$$
\frac{x^2}{a^2} + \frac{y^2}{b^2} - \frac{z^2}{c^2} = 1
$$
この方程式は、$ (a, b, c) $を用いて定義される双曲面の形状を示しています。
この例では主軸が$ (z) $軸に平行な双曲面を扱います。
2. パラメータ設定:
- (u, v) はそれぞれパラメータ空間の値を表します。
np.linspace(-2, 2, 100)
を使用して、それぞれのパラメータの値を生成します。 U, V
はこれらのパラメータのメッシュグリッドを作成します。
3. 座標計算:
- 双曲面の方程式をパラメータ表示で定義します。
$ X = a \cosh(U) \cos(V) $
$ Y = b \cosh(U) \sin(V) $
$ Z = c \sinh(U) $
ここで、$ (\cosh) $は双曲線余弦関数、$ (\sinh) $は双曲線正弦関数です。
4. 3Dプロット:
plot_surface
関数を使用して、双曲面の$ (X, Y, Z) $座標を3次元空間にプロットします。cmap='viridis'
はカラーマップを指定し、edgecolor='k'
はエッジの色を黒に設定します。
5. グラフの装飾:
- 軸ラベルやタイトルを設定して、グラフをわかりやすくします。
- $X$軸は ‘X’、$Y$軸は ‘Y’、$Z$軸は ‘Z’ としてラベル付けされます。
- グラフのタイトルは ‘Hyperboloid’ となります。
6. グラフの表示:
- 最後に
plt.show()
を使用して、作成した3Dグラフを表示します。
このコードを実行すると、$ (a, b, c) $の値に基づいて定義された双曲面が3次元プロットで表示されます。
双曲面の形状や曲線が視覚化され、指定したパラメータによって変化する様子を確認できます。