奇妙な方程式 3Dグラフ

奇妙な方程式 3Dグラフ

奇妙な方程式を立て、Pythonでそれをプロットしてみます。

3次元のグラフを描くためにMatplotlibplt.plot_surface() 関数を使用します。

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

# 変な方程式を定義
def weird_equation(x, y):
return np.sin(x**2 + y**3) * np.cos(x * y) + x * np.exp(-y**2)

# グリッドデータを生成
x = np.linspace(-4, 4, 50)
y = np.linspace(-4, 4, 50)
X, Y = np.meshgrid(x, y)
Z = weird_equation(X, Y)

# 3Dプロットを作成
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.view_init(elev=30, azim=-45)
plt.show()

このコードでは、まず奇妙な方程式 weird_equation(x, y) を定義しています。
この方程式は sincosexp などの関数を使って作られた複雑な式です。

次に、np.linspacenp.meshgrid を使って、$x$ と $y$ の値からなるグリッドデータを生成します。
そして、この$ x $と$ y $の値を weird_equation に代入して、$z $の値を計算しています。

最後に、Matplotlibplt.plot_surface 関数を使って、$X$、$Y$、$Z$ のデータから3次元のサーフェスプロットを描いています。

rstridecstride はグリッドデータの間引き率を指定するパラメータで、値を大きくすると描画が高速になります。

cmap ではカラーマップを指定しています。
view_init で、プロットの視点を調整しています。

このコードを実行すると、以下のような3Dプロットが表示されるはずです。

[実行結果]

グラフは奇妙な形状をしていますが、これは方程式自体が複雑で変則的なためです。

好みのデザインに合わせて、方程式や表示パラメータを調整することができます。

結果解説

[実行結果]

このグラフを詳しく説明します。

まず、プロットの全体的な形状は、不規則な波打つ曲面になっています。

これは、定義した「奇妙な方程式」の形状を反映したものです。
方程式の中には三角関数の sincos、そして指数関数 exp が含まれているため、滑らかではあるものの複雑な形状になっています。


次に、プロットの色分けに注目すると、青系の色から緑、黄色、オレンジ、そして赤へと徐々に変化していることがわかります。

これは、プロットの高さ($z$座標の値)を色で表現しているためです。
青は低い値、赤は高い値を表しています。
具体的には、この色分けは cmap='viridis' というカラーマップを使って指定されています。

プロットの底面($x-y$平面)は、白とグレーの格子状のパターンになっています。
これは、$x軸$と$y軸$の目盛り線を表しています。
目盛りの範囲は、$x$、$y$ともに$-4$から$4$までの値となっています。


さらに、3次元の効果を高めるため、プロットの視点は view_init(elev=30, azim=-45) により、上から$30$度、左から$45$度の角度から見る設定になっています。
この視点を変更すると、形状の立体感が変わります。


最後に、それぞれの軸にはラベル$(X、Y、Z)$が付けられており、データの座標を視覚的に把握しやすくなっています。

このように、この3Dプロットには、方程式から得られる曲面の形状色分けによる高さの表現目盛りと軸ラベル、そして視点の設定など、様々な情報が盛り込まれています。

適切にパラメータを調整することで、データの可視化がより効果的に行えます。