双曲放物面(hyperbolic paraboloid)

双曲放物面(hyperbolic paraboloid)

双曲放物面(hyperbolic paraboloid)は、特定の二次曲面で、鞍型(saddle shape)として知られる形状を持っています。

これは幾何学的に興味深い構造を持つため、建築土木工学などさまざまな分野で応用されています。

双曲放物面の方程式

双曲放物面は次の一般形の二次方程式で表されます:

$$
z = \frac{x^2}{a^2} - \frac{y^2}{b^2}
$$

ここで、$(a) $と$ (b) $は正の実数であり、曲面の形状を定義します。
特に、双曲放物面放物線双曲線の特性を組み合わせたものです。

特徴と性質

  1. 鞍型:

    • 双曲放物面の形状は「鞍型」とも呼ばれ、中心点の周りで異なる曲率を持ちます。
      片方の軸に沿っては上に開いた放物線の形を持ち、もう片方の軸に沿っては下に開いた放物線の形を持ちます。
    • 中心点(原点)では、曲面は凹型凸型が交互に現れ、典型的なのような形状を形成します。
  2. 双曲線と放物線の交差:

    • 双曲放物面は、$x$軸に沿っては放物線$ ( z = \frac{x^2}{a^2} ) $の形状を持ち、$y$軸に沿っては放物線$ ( z = -\frac{y^2}{b^2} ) $の形状を持ちます。
    • 任意の平行断面($z$ = 定数)の形状は双曲線となります。
  3. 無限に広がる曲面:

    • 双曲放物面は無限に広がる曲面であり、$x$軸や$y$軸の方向に制限なく広がります。
  4. 曲率:

    • 双曲放物面の曲率は負であり、これは曲面が中心点の周りで異なる方向に曲がっていることを意味します。

実生活での応用

双曲放物面はその構造的な強度と美しさから、建築土木工学で広く使用されています。

以下はそのいくつかの応用例です:

  1. 建築:

    • モダンな建築物や屋根構造で、双曲放物面はしばしば使用されます。
      例えば、シドニーオペラハウスの屋根の形状は双曲放物面を基にしています。
  2. 橋梁:

    • 双曲放物面の形状は橋のデザインにも応用され、構造的な効率性と美しさを兼ね備えたデザインが可能となります。
  3. インフラストラクチャー:

    • 双曲放物面はパビリオンシェル構造パラボラアンテナなどにも利用されます。
      特に、シェル構造は軽量でありながら高い強度を持ちます。

以下のコードでは、双曲放物面の形状を描き、カラフルなカラーマップを適用します:

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

# パラメータの設定
u = np.linspace(-2, 2, 100)
v = np.linspace(-2, 2, 100)
u, v = np.meshgrid(u, v)

# 放物面の方程式
x = u
y = v
z = u**2 - v**2

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

# 放物面の描画
surf = ax.plot_surface(x, y, z, cmap='coolwarm', edgecolor='none')

# カラーバーの追加
fig.colorbar(surf, ax=ax, shrink=0.5, aspect=5)

# ラベルとタイトルの設定
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')
ax.set_title('3D Hyperbolic Paraboloid')

# 視点の設定
ax.view_init(elev=45, azim=60)

plt.show()

ソースコード解説

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

    • numpyは数値計算を行うために使用します。
    • matplotlib.pyplotはグラフ描画のために使用します。
    • mpl_toolkits.mplot3dは3Dプロットを描画するために使用します。
  2. パラメータの設定:

    • uvは$-2$から$2$までの範囲で等間隔に$100$個の点を生成します。
    • np.meshgridは、2つの1次元配列から2次元の格子を生成します。
  3. 放物面の方程式:

    • x, y, zは放物面の座標を表します。
      放物面の方程式は$z = u^2 - v^2$です。
  4. 3Dプロットの作成:

    • plt.figure(figsize=(10, 8))で新しい図を作成し、figに割り当てます。
      figsizeで図のサイズを指定します。
    • fig.add_subplot(111, projection='3d')で3Dサブプロットを作成し、axに割り当てます。
  5. 放物面の描画:

    • ax.plot_surface(x, y, z, cmap='coolwarm', edgecolor='none')で放物面を描画します。
      cmapはカラーマップを指定し、edgecolor='none'でエッジの色を無効にします。
  6. カラーバーの追加:

    • fig.colorbar(surf, ax=ax, shrink=0.5, aspect=5)でカラーバーを追加し、色の範囲を視覚化します。
  7. ラベルとタイトルの設定:

    • ax.set_xlabel, ax.set_ylabel, ax.set_zlabelで各軸のラベルを設定します。
    • ax.set_titleで図のタイトルを設定します。
  8. 視点の設定:

    • ax.view_init(elev=45, azim=60)3Dプロットの視点を設定します。
      elev垂直方向の角度azim水平方向の角度を指定します。
  9. プロットの表示:

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

このコードを実行することで、3Dの放物面がよりカラフルに、美しく描画されます。
カラーマップと視点を工夫することで、視覚的に非常に魅力的なグラフを作成できます。

グラフ解説

[実行結果]

このコードを実行すると、上記のような美しい3Dの放物面が表示されます:

双曲放物面の形状:

$z = u^2 - v^2$に従って計算された双曲放物面が描画されます。
この形状は鞍型で、特定の曲率を持っています。

カラーマップ:

高さに基づいて色が変化するため、放物面の形状が視覚的に強調されます。
coolwarmカラーマップは青から赤へのグラデーションを作成し、見栄えが良くなります。

カラーバー:

放物面の高さに対応する色の範囲が示されるため、特定の高さがどの色に対応するかが一目でわかります。

軸ラベルとタイトル:

$x$軸、$y$軸、$z$軸のラベルとグラフのタイトルが表示され、グラフの内容が明確になります。

  • 視点の設定:
    適切な視点から放物面を観察できるため、形状カラーマップが立体的に見えます。

このグラフは、数学的な関数の視覚化、特に双曲放物面の形状と特性を示すのに非常に有用です。