Em um post anterior eu comentei sobre a importância do operador módulo e como ele pode, além de simplesmente dar o resto da divisão, também ajudar a criar ciclos numéricos, muito úteis quando precisamos seguir uma sequência numérica em que, ao chegar no final, a contagem reinicia.
A abordagem é totalmente funcional, mas tem uma limitação na forma do ciclo: o módulo sobe em linha reta e, ao chegar no limite, cai bruscamente de volta ao zero, formando uma onda “dente de serra”. Se você precisar de algo que suba e desça suavemente, passando por valores intermediários nos dois sentidos, o módulo não resolve, pois ele nunca “volta” de forma gradual, só reinicia.
Neste ponto, para nos ajudar, encontramos as funções periódicas, sendo as famigeradas funções Seno e Cosseno as principais candidatas. Daqui pra frente vamos trabalhar apenas com a função Seno, mas saiba que tudo deste post se aplica a ambas, com a diferença de que a função Cosseno está adiantada noventa graus em relação à função Seno (mais tarde explico isso também).
A primeira coisa que precisamos definir é que a função Sen(x) tem seus resultados, ou imagem, fechados entre -1 e 1, ou seja, ela varia entre esses dois valores subindo e descendo.
Neste momento pode surgir uma dúvida: como algo que só varia entre -1 e 1 pode ser útil para mim? A resposta é simples: quando precisarmos que ela varie entre números maiores, podemos simplesmente multiplicá-la por um valor que consideremos nosso limite. Aqui vamos chamar esse valor de e teremos . Considerando igual a 5, temos o gráfico a seguir:
O que esse representa é uma grandeza chamada amplitude, ou seja, quanto a onda se afasta, para cima e para baixo, da sua linha central (por enquanto o eixo X, mas isso vai mudar daqui a pouco). Como amplitude é uma medida de distância, e distância negativa não existe, definimos formalmente como .
Agora finalmente temos uma função mais útil, variando até qualquer valor que eu deseje, mas entra uma nova questão: estamos presos num ciclo de tamanho fixo, ou seja, a onda sempre leva a mesma distância no eixo X para subir, descer e voltar ao ponto de partida, o que no nosso caso é o famigerado valor de , aproximadamente . A este valor damos o nome de período, comumente associado a . Aqui as coisas ficam divertidas, pois podemos manipular o período apenas dividindo-o por um valor, que será chamado de . Esse valor pode ser qualquer número diferente de zero; se for negativo, a onda apenas fica espelhada, e por isso a fórmula usa o valor absoluto:
Se quisermos, por exemplo, que o período seja de 1 unidade no eixo X, basta dividirmos pelo mesmo valor:
Para encaixar isso em nossa fórmula, apenas multiplicamos o valor de por dentro da função Seno, ficando até agora:
Usando o valor que definimos acima, temos agora o seguinte gráfico:
Como já sabemos que, se , então , podemos simplesmente multiplicar por outros valores para aumentar ou diminuir o período por um fator. Assim, se quisermos um ciclo completo a cada 5 unidades, precisamos multiplicar por este valor. Mas tem uma pegadinha aqui: como o valor está na parte de baixo da fração, precisamos considerar o inverso do valor que desejamos, então, para aumentar o ciclo, precisamos multiplicar por :
Olhando no gráfico, podemos verificar o ocorrido:
Esse valor que definimos é comumente chamado de frequência angular.
Perceba que a variação ainda vai de um valor negativo até esse mesmo valor positivo, mas pode ser que precisemos que ela ocorra mais acima ou mais abaixo. Para isso, vamos introduzir um novo parâmetro na nossa equação, o , que permitirá deslocar a onda para cima e para baixo. Isso é bem simples: basta somar ao que temos até agora:
Desta forma, agora toda a onda é deslocada em unidades. Se, por exemplo, definirmos como 10, nosso gráfico se deslocará 10 unidades para cima, não mais iniciando no zero nem tocando o eixo X:
Apenas com estes três parâmetros podemos, por exemplo, modelar alguns probleminhas simples: vamos supor que, num ciclo de 365 dias, uma cidade teve uma variação de temperatura em Celsius iniciando aos 20 graus na primavera, tendo um pico de 30 graus no verão, voltando aos 20 graus no outono e ficando em 10 graus no inverno. Isolando cada valor, podemos chegar a algumas conclusões:
- A variação é sempre de 10 graus para cima ou 10 graus para baixo, assim sabemos que esse é o nosso .
- O ciclo completo de medições é de 365 dias, ou seja, nosso período é de 365 dias, logo .
- A onda oscila entre 10 e 30, então sua linha central é a média dos dois, , e esse é o nosso deslocamento vertical . (Como o seno começa justamente na linha central, isso bate com os 20 graus do início do ciclo.)
E chegamos à nossa função final:
E o nosso gráfico de temperatura fica:
Neste modelo simples já é possível ter uma noção de como a temperatura varia no decorrer do ano, seus máximos e mínimos e, principalmente, os valores intermediários. É claro que um modelo real é muito mais complexo, mas, para a compreensão básica, isso já ajuda a entender o poder das funções periódicas.
Mas vamos enriquecer o nosso problema com mais uma restrição: como o verão é em janeiro, no início do ano, o que podemos fazer para que o dia 0 seja na verdade o pico da temperatura? Para isso, queremos deslocar a função de ano para trás, e temos como controlar isso através do .
O número exato que será deslocado é definido como:
Assim, para trazer o pico para o dia zero, precisamos mover a curva um quarto de ano para a esquerda, ou seja, um deslocamento de . Podemos desenvolver:
Esse deslocamento movimenta a função para frente e para trás e é descrito como um valor somado ao argumento da função Seno:
Se aplicarmos ao nosso modelo, em que queremos deslocar um quarto de ano, ou seja, , temos:
E aqui cumpro a promessa do início do post: o deslocamento de fase que encontramos, , é exatamente a diferença entre seno e cosseno. Vale a identidade , então nossa função final pode ser escrita como .
É isso que significa dizer que o cosseno está “adiantado” noventa graus: ele já começa no pico onde o seno só chega depois de um quarto de ciclo. Na prática, escolher seno ou cosseno é só uma questão de qual ponto do ciclo você quer no instante zero.