モンゴメリー曲面

モンゴメリー曲面

モンゴメリー曲面方程式は、特殊な3次元曲面を表す方程式です。
この曲面は、数学者ゲオルク・モンゴメリーにちなんで名付けられました。

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

$$
z^2 = x^2 + y^2 + \frac{a^2}{4} - \frac{a}{2} \sqrt{x^2 + y^2}
$$

この方程式にはいくつかの特徴があります:

  1. $ (x)$、$(y)$、$(z) $は、3次元空間内の点の座標を表します。
    曲面上の点の位置を定義します。
  2. $(a) $は定数であり、曲面の形状を制御します。
    $(a) $の値が異なると、曲面の形状も変化します。
  3. 方程式の右辺は、$(x) $と$ (y) $の座標によって決まる項と定数項からなります。
    これらの項は曲面の形状を定義します。
  4. 方程式の左辺は$ (z) $の二乗であり、曲面上の点の$ (z) $座標を表します。
    この部分が右辺の式によって決定されます。

モンゴメリー曲面は、円錐楕円錐の特徴を持ち、特殊な形状を示します。

この曲面は、幾何学数学の研究で興味深い対象として扱われています。

その形状や性質は、さまざまな数学的な問題や応用において重要な役割を果たしています。

ソースコード

この方程式をグラフ化するために、NumPyMatplotlibを使用します。

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
31
32
33
34
35
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# モンゴメリー曲面方程式
def montgomery_surface(x, y, a):
z = np.sqrt(x**2 + y**2 + a**2/4 - a/2 * np.sqrt(x**2 + y**2))
return z

# x, y 座標の範囲
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)

# 定数 a の値
a = 1

# モンゴメリー曲面の z 座標を計算
Z = montgomery_surface(X, Y, a)

# グラフ化
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')

# 軸ラベル
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# タイトル
plt.title('Montgomery Surface (a = 1)')

# グラフ表示
plt.show()

このコードは、モンゴメリー曲面の方程式を解いて、3Dグラフとして表示します。

a の値を変えることで、異なる形状の曲面を表示することができます。

[実行結果]

ソースコード解説

以下に、ソースコードの詳細な説明を示します。

1. ライブラリのインポート

1
2
3
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
  • numpy は数値計算を行うためのライブラリであり、数値配列や数学関数を提供します。
  • matplotlib.pyplot はグラフ描画のためのライブラリであり、2次元のグラフやプロットを作成します。
  • mpl_toolkits.mplot3d は3次元のグラフを描画するためのツールキットです。

2. モンゴメリー曲面方程式の定義

1
2
3
def montgomery_surface(x, y, a):
z = np.sqrt(x**2 + y**2 + a**2/4 - a/2 * np.sqrt(x**2 + y**2))
return z
  • montgomery_surface 関数は、与えられた $(x)$、$(y) $座標と定数$ (a) $に基づいて、モンゴメリー曲面の$ (z) $座標を計算します。

3. $(x) $と$ (y) $座標の範囲の設定

1
2
3
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
  • np.linspace 関数を使用して、$-5 $から$ 5 $までの範囲を等間隔で$100$個の点に分割した$ (x)$、$(y) $座標を生成します。
  • np.meshgrid 関数は、これらの$ (x)$、$(y) $座標の組み合わせを作成します。

4. 定数 (a) の値の設定

1
a = 1
  • 定数$ (a) $の値を$ 1 $に設定します。

5. モンゴメリー曲面の$ (z) $座標の計算

1
Z = montgomery_surface(X, Y, a)
  • montgomery_surface 関数を使用して、各$ (x)$、$(y) $座標に対応する$ (z) $座標を計算します。

6. グラフ化

1
2
3
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
  • plt.figure() 関数を使用して新しい図を作成します。
  • fig.add_subplot(111, projection='3d') は、3次元のサブプロットを追加します。
  • ax.plot_surface(X, Y, Z, cmap='viridis') は、$(x)$、$(y)$、$(z) $座標の曲面をプロットします。

7. 軸ラベルとタイトルの設定

1
2
3
4
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.title('Montgomery Surface (a = 1)')
  • ax.set_xlabelax.set_ylabelax.set_zlabel で、それぞれの軸にラベルを設定します。
  • plt.title でグラフのタイトルを設定します。

8. グラフの表示

1
plt.show()
  • plt.show() で、グラフを表示します。

グラフ解説

[実行結果]

  • プロットされた曲面は、モンゴメリー曲面を表しています。
  • 曲面の形状は、$(a) $の値によって変化します。
    $(a) $の値が大きいほど、曲面の形状が変化します。
  • $x$, $y$, $z$軸にはそれぞれ座標軸が表示されています。
  • グラフのタイトルは、Montgomery Surface (a = 1) となっており、$(a) $の値が$1$である場合の曲面を表示しています。

このプログラムを実行することで、モンゴメリー曲面の形状を視覚的に理解することができます。