球面方程式

球面方程式

3次元方程式の例としては、例えば球面方程式が挙げられます。

球面方程式は以下のように表されます:

$$
x^2 + y^2 + z^2 = r^2
$$

ここで、$ ( r ) $は球の半径です。

以下に、Pythonでこの球面方程式を解いてグラフ化するコードを示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Sphere equation parameters
r = 1 # Radius

# Generate points on the sphere
theta = np.linspace(0, 2 * np.pi, 100)
phi = np.linspace(0, np.pi, 100)
x = r * np.outer(np.cos(theta), np.sin(phi))
y = r * np.outer(np.sin(theta), np.sin(phi))
z = r * np.outer(np.ones(100), np.cos(phi))

# Plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, color='b', alpha=0.5)

# Set equal aspect ratio
ax.set_box_aspect([1,1,1])

# Set labels
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

plt.title('Sphere')

plt.show()

このコードは、半径が$1$の球を描画しています。

[実行結果]

必要に応じて、r の値を変更して異なる半径の球を描画することができます。

ソースコード解説

このソースコードは、Pythonで半径が$1$の球面を描画するためのプログラムです。

以下はそれぞれの部分の詳細な説明です。

ライブラリのインポートとモジュールの選択

1
2
3
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
  • numpyは、数値計算を行うためのPythonのライブラリです。
    主に多次元配列や行列演算、数学関数などを提供します。
  • matplotlib.pyplotは、グラフ描画のためのライブラリです。
    主に2次元のグラフを描画するための機能を提供します。
  • mpl_toolkits.mplot3dは、3次元のグラフ描画のためのツールキットです。
    これには、3Dプロットを作成するための機能が含まれています。

球面方程式のパラメータの設定

1
r = 1  # Radius
  • rは球の半径を表します。
    この場合、半径は$1$と設定されています。

球面上の点の生成

1
2
3
4
5
theta = np.linspace(0, 2 * np.pi, 100)
phi = np.linspace(0, np.pi, 100)
x = r * np.outer(np.cos(theta), np.sin(phi))
y = r * np.outer(np.sin(theta), np.sin(phi))
z = r * np.outer(np.ones(100), np.cos(phi))
  • thetaphiはそれぞれ、水平方向垂直方向の角度を表します。
    np.linspaceは、指定された範囲内で等間隔の値を生成します。
  • np.outerは、2つのベクトルの外積を計算します。
    ここでは、球面上の点の座標を計算するために使用されます。
  • xyzは、それぞれ球面上の点の$x$座標、$y$座標、$z$座標を表します。

グラフの描画

1
2
3
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, color='b', alpha=0.5)
  • plt.figure()は、新しい図を作成します。
  • fig.add_subplot(111, projection='3d')は、3Dプロット用のサブプロットを作成します。
  • ax.plot_surface(x, y, z, color='b', alpha=0.5)は、球面を描画します。
    xyzは、それぞれ球面上の点の座標を表し、colorは色を指定します。
    alphaは透明度を設定します。

グラフの設定

1
2
3
4
5
ax.set_box_aspect([1,1,1])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.title('Sphere')
  • ax.set_box_aspect([1,1,1])は、3Dプロットの表示を正確なアスペクト比で設定します。
  • ax.set_xlabel('X')ax.set_ylabel('Y')ax.set_zlabel('Z')は、それぞれ$X$軸、$Y$軸、$Z$軸のラベルを設定します。
  • plt.title('Sphere')は、グラフのタイトルを設定します。

グラフの表示

1
plt.show()
  • plt.show()は、プロットを表示します。

これらの手順が組み合わさって、半径が$1$の球面が3Dグラフ上に描画されます。

結果解説

[実行結果]

以下はグラフに表示される内容の詳細です:

1. 3次元座標系:

グラフ上には、$X$軸、$Y$軸、$Z$軸があります。
これらはそれぞれ球の中心を通る直線です。

2. 球面:

グラフ上には、半径が$1$の球面が描かれます。
球面は、球の中心を中心として座標系の全方向に等しく広がっています。
球面は青色で描かれ、半透明になっています。

3. 等距離線:

球面上の等距離線は、球の中心から球面上の各点までの距離が等しい点の集合を示しています。
これは球面が円状の断面を持つことを視覚的に示しています。

4. プロットの表示:

3Dグラフでは、各軸上の値に対応する点がプロットされます。
この例では、球面上の多くの点がプロットされていますが、それらの点が球面上にあることが示されています。

5. タイトルと軸ラベル:

グラフには、「Sphere」というタイトルが表示され、各軸には「X」、「Y」、「Z」というラベルが付けられています。
これらのラベルは、それぞれ$X$軸、$Y$軸、$Z$軸を表します。

これらの要素が組み合わさって、3次元空間内で半径が$1$の球面が視覚化されます。