sinc 関数
モジュールのインポート
import numpy as np
import matplotlib.pyplot as plt
import scienceplots
#Warning : As of version 2.0.0, you need to add import scienceplots before setting the style (plt.style.use('science')).
plt.style.use(['science', 'notebook'])
正規化された sinc 関数
正規化された sinc 関数と正規化されていないsinc 関数($\sin x / x$)を比較して描くと,
u = np.linspace(-6.0, 6.0, 101)
fig = plt.figure() # グラフ領域の作成
plt.plot(u, np.sinc(u)) # 正規化されたsinc 関数
plt.plot(u, np.sinc(u/np.pi))
fig.savefig('p1_ex01_sinc_1.pdf')
plt.show()
正規化されていない sinc 関数
正規化されていない numpyの sinc 関数と$\sin x / x$を描くと,もちろん同じ結果であるので重なってしまう.
fig = plt.figure() # グラフ領域の作成
plt.xlim(-6.0, 6.0) # x軸範囲の設定
plt.ylim(-1.0, 2.0) # y軸範囲の設定
plt.xlabel(r"$x$") # x軸のラベル設定
plt.ylabel(r"$sinc(x)$") # y軸のラベル設定
plt.plot(u, np.sinc(u/np.pi))
plt.plot(u, np.sin(u)/u, '.')
fig.savefig('p1_ex01_sinc_2.pdf')
plt.show()
q = 180.0/np.pi
nx2 = 6
xx = np.linspace(0.0, 90.0/q, nx2)
print(f"{'x [deg]:':>10s}",end=' ')
[print(f"{xx[i]*q:8.5f}",end=' ') for i in range(nx2)]
print("")
print(f"{'sin(x):':>10s}",end=' ')
[print(f"{np.sin(xx[i]):8.5f}",end=' ') for i in range(nx2)]
x [deg]: 0.00000 18.00000 36.00000 54.00000 72.00000 90.00000
sin(x): 0.00000 0.30902 0.58779 0.80902 0.95106 1.00000
nu = 7
u = np.linspace(-6.0, 6.0, nu)
np.sin(u)/u
array([-0.04656925, -0.18920062, 0.45464871, nan, 0.45464871,
-0.18920062, -0.04656925])
少しずらして描くと次のようになり,少しわかり易くなろう.
nu = 101
u = np.linspace(-6.0, 6.0, nu)
fig = plt.figure() # グラフ領域の作成
plt.xlim(-6.0, 6.0) # x軸範囲の設定
plt.ylim(-1.0, 2.0) # y軸範囲の設定
plt.xlabel(r"$x$") # x軸のラベル設定
plt.ylabel(r"$sinc(x)$") # y軸のラベル設定
plt.plot(u, np.sinc(u/np.pi))
plt.plot(u, np.sin(u)/u+0.1)
u2 = u[u!=0]
plt.plot(u2, np.sin(u2)/u2+0.2)
fig.savefig('p1_ex01_sinc_3.pdf')
plt.show()
u2 = u[u!=0]
u2
array([-6. , -5.88, -5.76, -5.64, -5.52, -5.4 , -5.28, -5.16, -5.04,
-4.92, -4.8 , -4.68, -4.56, -4.44, -4.32, -4.2 , -4.08, -3.96,
-3.84, -3.72, -3.6 , -3.48, -3.36, -3.24, -3.12, -3. , -2.88,
-2.76, -2.64, -2.52, -2.4 , -2.28, -2.16, -2.04, -1.92, -1.8 ,
-1.68, -1.56, -1.44, -1.32, -1.2 , -1.08, -0.96, -0.84, -0.72,
-0.6 , -0.48, -0.36, -0.24, -0.12, 0.12, 0.24, 0.36, 0.48,
0.6 , 0.72, 0.84, 0.96, 1.08, 1.2 , 1.32, 1.44, 1.56,
1.68, 1.8 , 1.92, 2.04, 2.16, 2.28, 2.4 , 2.52, 2.64,
2.76, 2.88, 3. , 3.12, 3.24, 3.36, 3.48, 3.6 , 3.72,
3.84, 3.96, 4.08, 4.2 , 4.32, 4.44, 4.56, 4.68, 4.8 ,
4.92, 5.04, 5.16, 5.28, 5.4 , 5.52, 5.64, 5.76, 5.88,
6. ])
前のページに戻る
「Python」の目次ページに戻る