############################################################################## # FÍSICA COMPUTACIONAL II # # por # # Francisco Carlos Lavarda # ############################################################################## Tutorial de MAXIMA: Análise de Fourier ====================================== Transformada de Fourier (TF) ============================ ** Crie a função tf, que calculará as TFs que você quiser: tf(expr,t,w):=(1/sqrt(2*%pi))*integrate(expr*exp(-%i*w*t),t,-inf,inf); Repare que existem diversas definições diferentes para o cálculo da TF: o importante é que as definições da TF e da anti-TF sejam compatíveis. A definição mais simétrica entre TF e anti-TF é a que usamos acima. ** Defina a função f(t): f(t):=1/(t^2+a^2); ** Calcule a sua TF: tf(f(t),t,w); O MAXIMA vai perguntar se w e a são positivos, negativos ou zero. Para w responda com um p; para a responda com um p também (não o sabemos de fato; é só para ir para frente). Compare com o resultado constante da tabela de TFs no verbete "Transformada de Fourier" em pt.wikipedia.org (haverá uma diferença de uma constante, pois aquele texto usa outra definição para a TF, confira). ** Para mostrar que a função tf definida acima aceita outras variáveis, defina a função g(q): g(q):=%e^(-q^2); ** Calcule a sua TF para a variável v: tf(g(q),q,v); ** Já o cálculo não vai funcionar para algumas funções bem importantes em física, como a função "módulo de t": tf(abs(t),t,w); Este é um defeito do pacote de integração do MAXIMA. Série de Fourier ================ ** Carregue a livraria "fourie" (não tem r mesmo): load("fourie"); ** Defina a função f(x): f(x):= x^2; ** Calcule a SF para o intervalo -pi a pi: fourier(f(x),x,%pi); Antes de dar a resposta, MAXIMA vai perguntar se "cos(n*pi)" é positivo, negativo ou zero. Como m vai de 1 a infinito, esta expressão ora vale +1, ora -1. Responda p ou n então, pois tanto faz. ** Peça uma simplificação da resposta: foursimp(%); Restam agora somente os coeficients a´s da SF, uma vez que a função a ser representada é par e as funções cosseno são pares e as seno são ímpares. Repare que a última linha de resposta é uma lista. ** Peça a SF baseada na lista acima mencionada, na variável x, no intervalo [-pi,pi] com os termos até n=5: fourexpand(%,x,%pi,5); ** Faça um gráfico superpondo f(x) e a SF retornada acima: plot2d([f(x),%],[x,-%pi,%pi]); Veja que somente com n<=5 já temos uma SF que representa muito bem x^2, com exceção das bordas do intervalo. ** Faça um gráfico para ver que fora do intervalo em x [-pi,pi], as duas não mais são coincidentes: plot2d([f(x),%o9],[x,-2*%pi,2*%pi]); Repare que %o9 é o número da resposta do MAXIMA que contém a SF com n<=5 na seção em que eu preparava este tutorial. ** Faça um gráfico para ver que a SF é periódica, ao contrário de x^2: plot2d([f(x),%o9],[x,-6*%pi,6*%pi]); Ou seja: a SF somente é coincidente com a função no intervalo em que nós dissemos que era o período de x^2. Assim, se quisermos uma SF para uma função em um determinado intervalo, basta dizer que o período da função coincide com o tal intervalo. ** Agora vamos calcular a SF para uma função ímpar, f(x)=x, no intervalo de x=[-1,1]. Portanto o período é igual a 2. A repetição deste segmento de função é a conhecida função "rampa". Mais apropriadamente, esta função seria definida como (há outros modos similares de se definir uma rampa): f(x)=x-a, x no intervalo [a-1,a+1], a=0, +/-2, +/-4, +/-6, ... Digite no MAXIMA: f(x):=x; ** Calcule a SF: fourier(f(x),x,1); Antes de dar a resposta, MAXIMA vai perguntar se "cos(n*pi)" é positivo, negativo ou zero. Como m vai de 1 a infinito, esta expressão ora vale +1, ora -1. Responda p ou n então, pois tanto faz. ** Peça uma simplificação da resposta: foursimp(%); Restam agora somente os coeficients b´s da SF, uma vez que a função a ser representada é ímpar e as funções cosseno são pares e as seno são ímpares. Repare novamente que a última linha de resposta é uma lista. ** Peça a SF baseada na lista acima mencionada, na variável x, no intervalo [-1,1] com os termos até n=7: fourexpand(%,x,1,7); ** Faça um gráfico superpondo f(x) e a SF retornada acima: plot2d([f(x),%o16],[x,-1,1]); Veja que somente com n<=7 ainda não temos uma SF que represente muito bem a reta f(x)=x. ** Faça um gráfico para ver que a SF é periódica: plot2d([f(x),%o16],[x,-5,5]); Neste gráfico já é possível ver o formato da função rampa na curva da SF. Repita o procedimento acima com números cada vez maiores de termos na SF e faça o gráfico até achar que a representação é boa o suficiente.