С удовольствием.


- Исходная функция

- Зашумленная дискретизация исходной функции, шаг дискретизации 1

- Аппроксимация

Действительно, если учитывать только арктангенс аргумента, то начальная фаза в части случаев находится неверно:

Отдельного рассмотрения заслуживает перебор частоты.
При "неверно" выбранных частотах ошибка примерно одинакова и только на верно выбранной ошибка быстро стремится к нулю. Поэтому если выбрать слишком большой шаг перебора можно запросто проскочить искомую частоту.
График зависимости частоты и ошибки представлю попозже.