Python演習問題:最大値・最小値の検出 †
前提条件 †
- その2:peaks(MATLAB)
MATLAB の peaks と同様なものをデモ・練習用に作成する.
def peaks(N=49):
x = np.linspace(-3., 3., N)
y = np.linspace(-3., 3., N)
X, Y = np.meshgrid(x, y)
Z = 3.*(1.-X)**2.*np.exp(-(X**2.)-(Y+1.)**2.) \
-10.*(X/5.-X**3.-Y**5.)*np.exp(-X**2.-Y**2.) \
-1./3.*np.exp(-(X+1.)**2.-Y**2.)
return X, Y, Z
問題 †
- 上記の peaks を用い,2次元行列データ Z を作成しなさい.
X, Y, Z = peaks(XX)
- Z の最大値と最小値,及びそれらのインデックス(行番号,列番号)を求めて図に示しなさい.
- 最大値・最小値,インデックス
np.max, np.min
np.argmin, np.argmax
- 2次元の図
自分の使いやすい方法で書く.
# オブジェクト指向に沿った書き方
fig = plt.figure() # Figureインスタンス生成
ax = fig.add_subplot(111) # Axesインスタンス生成
ax.contour(X,Y,Z)
ax.plot(x,y,z)
# MATLABに類似した書き方
plt.contour(X,Y,Z)
plt.plot(x,y,z)
- 3次元の図
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d') # または
ax = Axes3D(fig)
ax.plot_surface(X,Y,Z)
ax.plot(x,y,z)
解答例(参考) †
メッシュサイズを 25×25 として解答例の図を作成してみた.
MATLAB と似たような見かけにしている.