多変数関数の3次元グラフ化 Matplotlib

多変数関数の3次元グラフ化

多変数関数を使用した例を提供します。

以下のコードは、多変数関数 $ (z = f(x, y)) $の計算と3Dサーフェスプロットを示しています。

この例では、多変数関数$ (z) $を計算し、3Dサーフェスプロットで可視化します。

使用する関数は$ (z = \sin(\sqrt{x^2 + y^2}) / (\sqrt{x^2 + y^2} + 1)) $です。

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

# xおよびyの値を生成
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)

# 複雑な多変数関数z = f(x, y)の計算
z = np.sin(np.sqrt(x**2 + y**2)) / (np.sqrt(x**2 + y**2) + 1)

# 3Dサーフェスプロットを作成
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(x, y, z, cmap='viridis', linewidth=0, antialiased=False)

# カラーバーを追加
fig.colorbar(surf, ax=ax, pad=0.1)

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

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

このコードは、$ (z = \frac{\sin(\sqrt{x^2 + y^2})}{\sqrt{x^2 + y^2} + 1}) $という複雑な多変数関数を計算し、3Dサーフェスプロットで可視化します。

このプロットは、複雑な関数の3D表現を示しています。

必要に応じて、異なる関数やプロットスタイルを試すことができます。

ソースコード解説

このPythonソースコードは、3次元の複雑なグラフを作成し、matplotlibとNumPyを使用してそれを表示するものです。

以下はソースコードの詳細な説明です。

1. import numpy as np:

NumPyライブラリをインポートし、npという別名で使用できるようにします。
NumPyは数値計算のためのPythonライブラリで、多次元配列や数学関数のサポートが含まれています。

2. import matplotlib.pyplot as plt:

matplotlibライブラリをインポートし、pltという別名で使用できるようにします。
matplotlibはグラフを描画するためのPythonライブラリで、pyplotモジュールを使います。

3. from mpl_toolkits.mplot3d import Axes3D:

mpl_toolkits.mplot3dからAxes3Dをインポートします。
これは、3次元プロットを作成するために必要なモジュールです。

4. import japanize_matplotlib:

japanize_matplotlibをインポートし、日本語のテキストをmatplotlibのプロット内で正しく表示するためのライブラリです。

5. x = np.linspace(-5, 5, 100):

xという変数に、-5から5までの範囲を100の等間隔に区切った値が配列として格納されます。
この範囲と間隔は、x軸の値を指定します。

6. y = np.linspace(-5, 5, 100):

yという変数に、xと同様に-5から5までの範囲を100の等間隔に区切った値が格納されます。
この範囲と間隔は、y軸の値を指定します。

7. x, y = np.meshgrid(x, y):

xyの値を使用して、2つの2D配列 xy を生成します。
これらは後で3Dプロットを作成するために使用されます。

8. z = np.sin(np.sqrt(x**2 + y**2)) / (np.sqrt(x**2 + y**2) + 1):

多変数関数$ (z = f(x, y)) $の計算を行います。
ここでは、$ (z) は (x) $と$ (y) $の関数として、$(z = \frac{\sin(\sqrt{x^2 + y^2})}{\sqrt{x^2 + y^2} + 1}) $として計算されます。

9. fig = plt.figure(figsize=(10, 8)):

3Dプロットを含む新しい図を作成します。
figsizeパラメータは、図のサイズを指定します。

10. ax = fig.add_subplot(111, projection='3d'):

図に3Dサブプロットを追加します。
projection='3d'を指定して、3Dプロットを作成できるようにします。

11. surf = ax.plot_surface(x, y, z, cmap='viridis', linewidth=0, antialiased=False):

3Dサーフェスプロットを作成します。
xy、および z はプロットするデータです。
cmap='viridis'はカラーマップを指定し、linewidth=0はプロットの線幅をゼロに設定し、antialiased=Falseはアンチエイリアスを無効にします。

12. fig.colorbar(surf, ax=ax, pad=0.1):

カラーバーをプロットに追加します。
pad=0.1はカラーバーの位置を調整するためのパディングです。

13. ax.set_xlabel('X軸'), ax.set_ylabel('Y軸'), ax.set_zlabel('Z軸'):

X、Y、およびZ軸のラベルを設定します。

14. plt.show():

グラフを表示します。