Python演習問題:最大値・最小値の検出

前提条件

  • その1:import
    importとエイリアスの設定は以下の通り.
    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
  • その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の最大値と最小値,及びそれらのインデックス(行番号,列番号)を求めて図に示しなさい.
    1.最大値・最小値,インデックス
    np.max, np,min
    np.where
    2.図の描画
    plt.figure
    plt.hold(True), plt.hold(False) #<- 図の上書きor書き換え
    plt.contour
    plt.plot
    ax = Axes3D(XXX)
    ax.plot_surface
    ax.plot

解答例(参考)

メッシュサイズを25×25として解答例の図を作成してみた.
MATLABと似たような見かけにしている.
peakssurf_1.pngpeaks_contour.png


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2017-11-08 (Wed) 12:18:12 (35d)