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(x,y):
        return  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.)
    ただし,適用条件は以下の範囲とする.
    (i)-3≦x≦3,-3≦y≦3

問題

  • 上記のpeaksを用い,(i)の範囲で任意のメッシュ数に分割された2次元行列データ'Z'を作成しなさい.
    # np.linspace, np.meshgrid
    # Z = peaks(XX,XX)
  • Zの最大値と最小値,及びそれらのインデックス(行番号,列番号)を求めて図に示しなさい.
    1.最大値・最小値,インデックス
    # np.max, np,min
    # np.where
    2.図の描画
    # plt.figure, plt.hold
    # plt.contour, plt.plot  #<- 2次元の等高線図
    # ax = Axes3D(XXX),ax.plot_surface, ax.plot #<- 3次元図

解答例(参考)

メッシュサイズを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-10-05 (Thu) 18:54:31 (14d)