フーリエ級数展開 三角関数、余弦、実数倍角、無限級数の和
Pythonで学ぶフーリエ解析と信号処理 (神永 正博)(著)、コロナ社)の第2章(フーリエ級数展開)、章末問題2-18の解答を求めてみる。
よって、
コード(Python)
#!/usr/bin/env python3
import random
import numpy as np
import matplotlib.pyplot as plt
print('2-18.')
def partialsum(t, n, a):
return np.sin(np.pi * a) / (np.pi * a) + 2 / np.pi * \
sum(a * (-1) ** (k - 1) * np.sin(a * np.pi) * np.cos(k * t) / (k ** 2 - a ** 2)
for k in range(1, n + 1))
vectorized = np.vectorize(partialsum)
t = np.linspace(-np.pi, np.pi, 10000)
n = 5
for i in range(5):
a = random.random() * 5
print(f'a = {a}')
fig = plt.figure()
for m in range(1, n + 1):
ax = fig.add_subplot(n, 1, m)
ax.plot(t, np.cos(a * t))
ax.set_ylim(-2, 2)
ax.plot(t, vectorized(t, m, a))
plt.savefig(f'sample8_{i}.png')
plt.show()
入出力結果
% ./sample8.py
2-18.
a = 2.552785311478355
a = 2.4544664267404053
a = 4.999708433105535
a = 2.037236920387312
a = 2.7287739971046343
%