Мой код работает так, как я хочу, но для одной небольшой проблемы: строка 'print' показывает только значения для Bn для первой итерации (n = 2), но не для (n = 5 или 20) .
import numpy as np
from matplotlib import pyplot as plt
import scipy.integrate as integrate
from scipy.integrate import quad
#unique depending on the problem
y = lambda t: 3*t
T = 4 #period
w = 2*np.pi/T #angular frequency
print('Angular Frequency [rad]:',w)
n_list = np.array([2,5,20])
#for loop for multiple n values:
for n in n_list:
Bn = (2/T)*quad(lambda t: y(t)*np.sin(n*w*t), -T/2, T/2)[0] #for odd functions
An = (2/T)*quad(lambda t: y(t)*np.cos(n*w*t), -T/2, T/2)[0] #for even
A0 = (1/T)*quad(lambda t: y(t), -T/2, T/2)[0] #vertical shift
y = lambda t: A0+An*np.cos(n*w*t)+Bn*np.sin(n*w*t) #total equation
t = np.linspace(-6, 6)
plt.plot(t,y(t))
plt.title('n = %d'%n)
print('Coefficients [V]:', 'Bn:',Bn, 'An:', An,'A0:', A0)
plt.show()