フーリエ級数展開 三角関数、正弦、実数倍角
Pythonで学ぶフーリエ解析と信号処理 (神永 正博)(著)、コロナ社)の第2章(フーリエ級数展開)、章末問題2-17の解答を求めてみる。
よって求めるフーリエ展開は、
コード(Python)
#!/usr/bin/env python3
import random
import numpy as np
import matplotlib.pyplot as plt
print('2-17.')
def partialsum(t, n, a):
return 2 / np.pi * \
sum(k * (-1) ** k * np.sin(a * np.pi) * np.sin(k * t) / (a ** 2 - k ** 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(a)
fig = plt.figure()
for m in range(1, n + 1):
ax = fig.add_subplot(n, 1, m)
ax.plot(t, np.sin(a * t))
ax.set_ylim(-2, 2)
ax.plot(t, vectorized(t, m, a))
plt.savefig(f'sample7_{i}.png')
plt.show()
入出力結果
% ./sample7.py
2-17.
4.11686011187972
1.264113176239896
4.464191894422588
0.6797740784195017
4.794822074091237
%