У меня есть код, который работает так, как я хочу, но с одной стороны: печать коэффициентов печатает только значения для первой итерации (n = 2), а не для других (n = 5 и 20) даже для тех итераций. Я запутался, потому что код на самом деле вычисляет различные значения и строит их правильно для каждой итерации.
import warnings
warnings.filterwarnings("ignore") #ignore warnings
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
print('Coefficients [V]:', 'Bn:',Bn, 'An:', An,'A0:', A0)
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.show()