チェビシェフ多項式
モジュールのインポート
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import eval_chebyt
np.set_printoptions(precision=3)
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'])
n次のチェビシェフ多項式
n = 3
x = np.linspace(-1.0, 1.0, 8)
Tn = eval_chebyt(n, x) # n次のチェビシェフ多項式の関数
x,Tn
(array([-1. , -0.714, -0.429, -0.143, 0.143, 0.429, 0.714, 1. ]),
array([-1. , 0.685, 0.971, 0.417, -0.417, -0.971, -0.685, 1. ]))
表示フォーマットを関数で作っておくと,
def table(*args):
n1, n2 = np.shape(args)
print(n1,n2)
for i in range(n2):
[print(f'{args[j][i]:8.4f}',end=' ') for j in range(n1)]
print("")
return
これより,
table(x, eval_chebyt(1,x), eval_chebyt(2,x), eval_chebyt(3,x))
4 11
-1.0000 -1.0000 1.0000 -1.0000
-0.8000 -0.8000 0.2800 0.3520
-0.6000 -0.6000 -0.2800 0.9360
-0.4000 -0.4000 -0.6800 0.9440
-0.2000 -0.2000 -0.9200 0.5680
0.0000 0.0000 -1.0000 -0.0000
0.2000 0.2000 -0.9200 -0.5680
0.4000 0.4000 -0.6800 -0.9440
0.6000 0.6000 -0.2800 -0.9360
0.8000 0.8000 0.2800 -0.3520
1.0000 1.0000 1.0000 1.0000
1,2,3次のチェビシェフ多項式を計算し,図示すると,
nmax = 3+1
xx = np.linspace(-3.0, 3.0, 101)
fig = plt.figure() # グラフ領域
for n in range(1,nmax):
plt.plot(xx, eval_chebyt(n, xx), label=f"$n=${n:1d}")
plt.plot([1,1,-1,-1,1],[-1,1,1,-1,-1], '--', color='gray')
plt.axis('scaled')
plt.xlabel(r"$x$") # x軸のラベル設定
plt.xlim(-3.0, 3.0) # x軸範囲の設定
plt.ylabel(r"$T_n(x)$") # y軸のラベル設定
plt.ylim(-3.0, 3.0) # y軸範囲の設定
plt.legend(ncol=1, loc='best', fancybox=False, frameon = True, fontsize=11)
fig.savefig('chebyt_n3.pdf')
plt.show()
前のページに戻る
「目次」のページに戻る