Разминка на правку кода. Сейчас dt зашит константой, и исследовать его влияние можно только пересборкой.
Выведите шаг в пульт: добавьте ручку в main и читайте её в расчётной функции.
// в main, рядом с остальными ручками:
add_float_param("Шаг по времени", 0.05f, 0.001f, 0.5f, 0.005f);
// в calculation_function, вместо глобального dt:
float dt = get_float_param("Шаг по времени");
Проверьте влияние шага на период. Период малых колебаний $2\pi \approx 6.28$; при $dt = 0.3$ на него приходится около 21 шага. Увеличивайте шаг и найдите:
- при каком шаге фазовая траектория заметно перестаёт быть замкнутой;
- при каком расчёт разваливается совсем.