Если принять, что tractiveEffort - это максимальная сила тяги, то движение ТС (транспортного средства) можно условно разбить на три этапа:
1. Движение с постоянным ускорением
Назовем это этап разгона.
Пусть N - мощность, Fmax - максимальная сила тяги, m - масса ТС, тогда
amax = Fmax/m - ускорение на этапе разгона, это максимальное ускорение, на которое способно ТС.
v1 = N/Fmax - скорость к концу данного этапа.
t1 = v1/amax - момент времени, когда заканчивается разгон.
S1 = amax(t1)2 / 2 - расстояние на котором заканчивается разгон.
2. Движение с постоянной мощностью
Этот этап начинается сразу после этапа разгона. Ускорение начинает уменьшаться. Этап продолжается, пока ТС не наберет максимальную скорость.
v = SQRT((v1)2 + 2N(t-t1)/m) - скорость в любой момент времени t после разгона до достижения максимальной скорости (t1<t<t2).
S = S1 + m/(3N)*(v3 - (v1)3) - формула для перемещения на данном этапе
t2 = t1 + m/(2N)*((vmax)2 - (v1)2) - момент достижения максимальной скорости
S2 = S1 + m/(3N)*((vmax)3 - (v1)3) - точка достижения максимальной скорости
3. Движение с постоянной скоростью
Последний, самый простой этап.
v = vmax - no comment.
S = S2 + vmax(t - t2) - формула для перемещения на данном этапе
Более подробно, как выводятся формулы здесь: https://docs.google.com/document/d/1f3Mzyql6r1G01boaIY4XRssTl-C4ZCQuLFXumRh2eh8/edit?usp=sharing
Можно посмотреть, как всё это работает в таблицах и графиках, также здесь можно визуально сравнить графики двух различных ТС друг с другом: https://docs.google.com/spreadsheets/d/1bSdvX6iyCAhEOXbc3PAXT02eIcu8LNvqZnRKqRBTjts/edit?usp=sharing