import scipy
import pylab
def calc_x_k_list(k, t_list):
result_list = []
for t in t_list:
t1 = 1.0 / 8 * scipy.sinc(1.0 * k / 8)**2
t2 = scipy.e**complex(0, -scipy.pi / 4 * k) - scipy.e**complex(0, -3 * scipy.pi / 4 * k)
t3 = 0.5 * (scipy.e**complex(0, -5*scipy.pi / 4 * k) - scipy.e**complex(0, -7 * scipy.pi / 4 * k) )
t_last = scipy.e**complex(0, k*t)
result = (t1 * (t2 + t3) * t_last).real
result_list.append(result)
return result_list
def calc_x_f_list(k, t_list):
y_list_list = []
for k in range(-k, k):
y_list = calc_x_k_list(k, t_list)
y_list_list.append(y_list)
final_y_list = [ sum(a) for a in zip(*y_list_list)]
return final_y_list
t_list = scipy.arange(-2*scipy.pi, 2*scipy.pi, 0.1)
k = 3
y_list = calc_x_f_list(k, t_list)
p3 = pylab.plot(t_list, y_list, label='k=3')
k = 5
y_list = calc_x_f_list(k, t_list)
p5 = pylab.plot(t_list, y_list, label='k=5')
k = 100
y_list = calc_x_f_list(k, t_list)
p200 = pylab.plot(t_list, y_list, label='k=200')
pylab.legend()
pylab.title(r'Fourier Series')
pylab.xlabel(r'Time $t$')
pylab.ylabel(r'$x(t)$')
pylab.grid(True)
pylab.show()