onde: f(t)= função periódica que se deseja representar;
ω0= frequencia fundamental (notar que: n⋅ω0=ωn= harmônica n do sinal);
a0, an e bn são coeficientes da série de Fourier, que determinam a contribuição de cada componente harmônica na representação da função.
(*)Harmônicas = múltiplos inteiros da frequencia fundamental do sinal.
Os coeficientes são calculados da seguinte forma:
a0=T1∫t0t0+Tf(t)dt=valor médio de f(t);
an=T2∫t0t0+Tf(t)⋅cos(n⋅ω0t)dt,n>0
bn=T2∫t0t0+Tf(t)⋅sin(n⋅ω0t)dt,n>0
Exemplo
A figura abaixo representa uma onda períodica resultante de um circuito retificador de onda completa, cuja entrada é uma onda cossenoidal. Determina a série de Fourier para esta onda.
Solução:
Determinar a frequência fundamental do sinal:
T=403π−40π=20π (segundos)
ω0=T2π=40 (rad/s).
Cálculo do valor médio:
a0=T1∫t0t0+Tf(t)dt
As próximas equações envolvem integrais ao longo de um período completo de vo(t). O ponto inicial do período é arbitrário e pode ser escolhido de forma a facilitar a integração. Em muitos casos, os limites mais simples são [0,T] ou [−T/2,T/2]. Neste caso, a forma de onda pode ser representada como sendo:
% exe_15_2_1.m%% Exemplo de Série de Fourier - aplicacao% Exemplo 15.2.1 de Dorf, ...%% Fernando Passold, em 13/09/2023disp('Periodo do sinal:')
T=pi/20disp('Frequencia (fundamental, Hz):')
f=1/T
disp('Valor medio:')
a0=10/pi% calculando coeficientes a_n e b_n
w0 = 2*pi/T; % freq fundamental, em rad/s
tf = 2*T; % tempo final
dt = tf/200; % incremente de tempo
t = 0:dt:tf; % cria vetor tempodisp('Calculando v(t) usando Série de Fourier...')
v = a0*ones(size(t)); % inicia com vetor v(t) zeradofor n = 1:100% 100 harmonicas
an = 20*((-1)^n)/(pi*(1-4*n^2));
bn = 0;
v = v + an*cos(n*w0*t) + bn*sin(n*w0*t);
end% Plotando o gráfico resultanteplot(t, v)
axis([0 tf 06])
grid
xlabel('tempo (s)')
ylabel('v(t) (V)')
title('Serie de Fourier')
Obtemos o seguinte resultado:
>> exe_15_2_1
Periodo do sinal:
T =
0.15708
Frequencia (fundamental, Hz):
f =
6.3662
Valor medio:
a0 =
3.1831
Calculando v(t) usando Série de Fourier...
>>
e o gráfico:
Obs.: Note que a primeira figura foi obtida, fazendo-se no MATLAB:
Lembrando ainda de fasores, podemos representar o lado direito da eq. Anterior no domínio da frequência. Convertendo da forma retangular para a forma polar:
% exe_15_2_2.m%% Exemplo de Série de Fourier - aplicacao% Exemplo 15.2.2 de Dorf, ...%% Fernando Passold, em 13/09/2023
clear a b c theta % limpa algum conteudo anterior na memoriadisp('Periodo do sinal:')
T=pi/10disp('Frequencia (fundamental, Hz):')
f=1/T
disp('Valor medio:')
a0=1.25% calculando coeficientes a_n e b_n
w0 = 2*pi/T; % freq fundamental, em rad/s
tf = 2*T; % tempo final
dt = tf/200; % incremente de tempo
t = 0:dt:tf; % cria vetor tempo
h = input('Numero desejado de harmonicas? ');
disp('Calculando v(t) usando Série de Fourier...')
v = a0*ones(size(t)); % inicia com vetor v(t) zerado
cont = 0;
for n = 1:h % 100 harmonicas
an = ( 5/(n*pi) )*sin( (n*pi)/2 );
a(n) = an;
bn = ( 5/(n*pi) )*( 1 - cos( (n*pi)/2 ) );
b(n) = bn;
cn = abs(an - j*bn);
c(n) = cn;
thetan = angle(an - j*bn);
theta(n) = thetan;
v = v + an*cos(n*w0*t) + bn*sin(n*w0*t);
cont = cont + 1;
end% Plotando o gráfico resultanteplot(t, v)
axis([0 tf -16])
grid
xlabel('tempo (s)')
ylabel('v(t) (V)')
title('Serie de Fourier')
aux=num2str(h);
texto = [aux '-harmonicas'];
text(0.125, 5.6, texto)
Executando:
> exe_15_2_2
Periodo do sinal:
T =
0.31416
Frequencia (fundamental, Hz):
f =
3.1831
Valor medio:
a0 =
1.25
Numero desejado de harmonicas? 10
Calculando v(t) usando Série de Fourier...
>> [c' theta'.*(180/pi)]
ans =
2.2508-451.5915-900.75026-1359.7454e-171800.45016-450.53052-900.32154-1359.7454e-171800.25009-450.31831-900.20462-1359.7454e-171800.17314-450.22736-900.15005-1359.7454e-171800.1324-450.17684-900.11846-1359.7454e-17180
>>
E rende o gráfico:
Note que podemos vizualizar um espectro do sinal:
>> k=0:n; % vetor de componentes do sinal
>> ff = f.*k; % vetor contendo as frequencias
>> % Falta acrescentar componentes "DC":
>> c = [a0 c];
>> theta = [0 theta];
>> [k' ff' c' theta'.*(180/pi)] % imprimindo uma "tabela"ans =
001.25013.18312.2508-4526.36621.5915-9039.54930.75026-135412.7329.7454e-17180515.9150.45016-45619.0990.53052-90722.2820.32154-135825.4659.7454e-17180928.6480.25009-451031.8310.31831-90
>>