segunda-feira, 21 de julho de 2014

Série de Fourier com Scilab

Soma de vários termos cossenos.

Sob certas condições, um sinal periódico $x(t)$, isto é, $x(t) = x(t+T)$ para todo $t$, sendo $T$ o período, pode ser representado por uma soma de senos e cossenos na forma
$$ x(t) = a_0 + \sum_{k=1}^{\infty} a_k cos(k \omega_0 t) +  \sum_{k=1}^{\infty} b_k sin(k \omega_0 t) $$
onde $\omega_0 = 2\pi/T$ e $a_0$ é o valor médio de $x(t)$. Essa é a chamada Série Trigonométrica de Fourier. Por exemplo, se $x(t)$ for uma onda quadrada de amplitude $\pi/4$ e média nula (ver figura abaixo), a série de Fourier correspondente é:
$$ x(t) = \sum_{k=1}^{\infty} \frac{(-1)^{k+1}}{2k-1} cos(k \omega_0 t) $$


Onda quadrada.
O scrip Scilab abaixo realiza a soma de até 20 desses termos (usando um slider) e gera o gráfico inicial desta postagem.
--------------------------------------
close;
clc;

function fazg()
    t=0:0.01:5;
    p2=2*%pi;
    s = cos(p2*t);
    kk = round(h1.value);
    disp(kk);
    A = 1;
    for pp=2:kk
        A = -((-1)^(pp))/(2*pp-1);
        s= s + A*cos(p2*(2*pp-1)*t);
    end
    newaxes();
    plot(t,s); title('Série de Fourier: soma de cossenos');
    legend(string(kk)+' termos');
endfunction

f1 = figure();

h1=uicontrol(f1,'style','slider','position', [10 10 100 20], ...
'Min',[1],'Max',[21],'value',10,'SliderStep',[1 5],'callback','fazg()');

Um comentário: