Encuentra el punto de inicio (tiempo) de cada ciclo en una onda sinusoidal

Estoy tratando de lograr que la onda sinusoidal cambie gradualmente de8Hz a2Hz terminado5 segundos:

Esta forma de onda se produjo enEdición genial. Le di una frecuencia de inicio de8Hz, una frecuencia final de2Hz y una duración de5 segundos. La onda sinusoidal cambia gradualmente de una frecuencia a otra durante el tiempo dado.

Mi pregunta es, ¿cómo puedo encontrar con precisión el tiempo de inicio de cada ciclo (resaltado con un punto rojo), usando un bucle FOR?

Pseudocódigo:

time   = 5 //Duration
freq1  = 8 //Start frequency
freq2  = 2 //End frequency

cycles = ( (freq1 + freq2) / 2 ) * time //Total number of cycles

for(i = 0; i < cycles; i++) {
    /* Formula to find start time of each cycle */
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta