チェビシェフ多項式

モジュールのインポート

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()