見出し画像

【Python】 等高線の表示

関数contour()を使う

xn=50
x0=np.linspace(-2,2,xn)
x1=np.linspace(-2,2,xn)

y=np.zeros((xn,xn))
for i0 in range(xn):
   for i1 in range(xn):
       y[i1,i0]=f3(x0[i0],x1[i1])

xx0,xx1=np.meshgrid(x0,x1)

plt.figure(1,figsize=(4,4))
cont=plt.contour(xx0,xx1,y,5,colors='black')
cont.clabel(fmt='%.2f',fontsize=8)

plt.show()

linspaceやmeshgridの使用にはnumpyのライブラリが必要。
ここでは"np"と名前をつけて利用している。
また、グラフのプロットにはmatplotlib.pyplotのライブラリが必要。
ライブラリの読み込みには以下のコードを初めに宣言しておく。​

import numpy as np
import matplotlib.pyplot as plt

ちなみに変数xnは解像度を示す。ここではxn=50なので解像度は50x50。二重ループ内の関数を以下のようにしてグラフを描くと...

def f3(x0,x1):
   ans=(2*x0**2+x1**2)*np.exp(-(2*x0**2+x1**2))
   return ans

画像1

上のような等高線が描ける。

この記事が気に入ったらサポートをしてみませんか?