ヘリコイドの方程式

ヘリコイドの方程式

ヘリコイド(helix)は、螺旋状の曲面を表す数学的な形状です。

ヘリコイドの方程式は以下のように表されます:

$$
x(t) = a \cos(t), \quad y(t) = a \sin(t), \quad z(t) = bt
$$

ここで、$ ( a ) $は螺旋の半径を表し、$ ( b ) $は螺旋の傾斜(ねじれ)を制御するパラメーターです。

$ ( t ) $はパラメーターであり、ヘリコイド上の点の位置を示します。

これをPythonで解いて3Dグラフを描く方法を示します。
必要なライブラリは 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
36
37
38
39
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# パラメーターの設定
a = 1.0 # 螺旋の半径
b = 1.0 # 螺旋の傾斜(ねじれ)

# パラメーターの範囲
t = np.linspace(0, 4*np.pi, 1000) # tを0から4πまで1000点で分割

# ヘリコイドの座標を計算
x = a * np.cos(t)
y = a * np.sin(t)
z = b * t

# 3Dプロット
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, projection='3d')

# ヘリコイドをプロット
ax.plot(x, y, z, label='Helix', color='b')

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

# グラフのタイトル
plt.title('Helix')

# 凡例の表示
plt.legend()

# グリッドの表示
ax.grid(True)

# グラフを表示
plt.show()

このコードでは、ヘリコイドのパラメーター$ ( t ) $を$0$から$ ( 4\pi ) $まで$1000$点で分割し、それに基づいて$ ( x(t) $,$ y(t) $,$ z(t) ) $を計算しています。

それらの座標を3Dグラフとして描画し、螺旋状のヘリコイドを表示しています。
ab の値を変更することで、ヘリコイドの形状を調整することができます。

[実行結果]

ソースコード解説

ソースコードの各部分を詳しく説明します。

ライブラリのインポート

1
2
3
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
  • numpy:数値計算を行うためのライブラリです。
    ここでは数値計算や配列操作に使用されます。
  • matplotlib.pyplot:グラフ描画のためのライブラリです。
    ここでは2Dグラフおよび3Dグラフの描画に使用されます。
  • mpl_toolkits.mplot3d:3Dグラフを描画するためのツールキットです。
    ここでは3Dの描画機能を使用します。

パラメーターの設定

1
2
a = 1.0  # 螺旋の半径
b = 1.0 # 螺旋の傾斜(ねじれ)
  • a螺旋の半径を設定します。
  • b螺旋の傾斜(ねじれ)を設定します。

パラメーターの範囲設定

1
t = np.linspace(0, 4*np.pi, 1000)  # tを0から4πまで1000点で分割
  • t:パラメーター t の範囲を設定します。
    0 から までを 1000 等分した配列を作成します。

ヘリコイドの座標の計算

1
2
3
x = a * np.cos(t)
y = a * np.sin(t)
z = b * t
  • x:ヘリコイド上の各点の x 座標を計算します。
    a * np.cos(t) で計算されます。
  • y:ヘリコイド上の各点の y 座標を計算します。
    a * np.sin(t) で計算されます。
  • z:ヘリコイド上の各点の z 座標を計算します。
    b * t で計算されます。

3Dプロットの準備

1
2
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, projection='3d')
  • fig:新しい図を作成します。
  • ax:3Dサブプロットを追加します。
    projection='3d' を指定することで、3次元プロットを有効にします。

ヘリコイドのプロット

1
ax.plot(x, y, z, label='Helix', color='b')
  • ax.plot:ヘリコイドの座標 (x, y, z) をプロットします。
    label='Helix' で凡例のラベルを設定し、color='b' で線の色を青に指定します。

軸ラベルの設定

1
2
3
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
  • ax.set_xlabel:X軸のラベルを設定します。
  • ax.set_ylabel:Y軸のラベルを設定します。
  • ax.set_zlabel:Z軸のラベルを設定します。

グラフのタイトル、凡例、グリッドの表示、グラフの表示

1
2
3
4
plt.title('Helix')
plt.legend()
ax.grid(True)
plt.show()
  • plt.title:グラフのタイトルを設定します。
  • plt.legend:凡例を表示します。
  • ax.grid(True):グリッドを表示します。
  • plt.show():グラフを表示します。

これにより、螺旋状のヘリコイドが3Dグラフとして描画され、軸ラベルやタイトル、凡例、グリッドが付加された見やすい図が生成されます。

結果解説

[実行結果]

グラフに表示される内容を詳しく説明します。

1. 螺旋状の形状:

プロットされたグラフは、螺旋状の曲線であるヘリコイドを表します。
この曲線は螺旋状に広がり、中心軸に沿って上方向に立ち上がる形状を持ちます。
螺旋の半径 $ ( a ) $および螺旋の傾斜 $ ( b ) $によって曲線の形状が決まります。

2. 座標軸:

グラフは3次元空間を表現しており、X軸、Y軸、Z軸がそれぞれ描画されています。
X軸とY軸は平面上に、Z軸は垂直方向に伸びる軸を表します。

3. 軸ラベル:

グラフの各軸にはラベルが付けられており、X軸は ‘X’、Y軸は ‘Y’、Z軸は ‘Z’ と表示されています。
これにより、各軸が何を表しているかが分かりやすくなっています。

4. グラフのタイトル:

グラフの上部には ‘Helix’ というタイトルが表示されています。
これは描かれている曲線(ヘリコイド)の名称を示しています。

5. 凡例:

グラフには凡例が表示されており、’Helix’ というラベルが曲線の意味を示しています。

6. グリッド:

グラフ全体にはグリッドが表示されており、3次元空間を視覚的に区切り、座標軸の目盛りを補助します。

このようなグラフは、数学物理学の学習や可視化に役立ちます。

ヘリコイドの形状を理解するだけでなく、Pythonを使用して数学的な曲線や図形をプロットする方法を学ぶのにも役立ちます。