calculating v02 max
last updated: Oct 20, 2023
VO2max% ​= 0.8 + 0.1894393*e^(−0.012778*t) + 0.2989558*e^(−0.1932605*t)​
VO2 = −4.60 + 0.182258 * v + 0.000104 * v^2
VO2max=VO2/VO2max %
where t is the race time in _minutes_, and v is race velocity in _meters / minute_.
OpenWorkoutTracker has this C++ function I found via github search:
double VO2MaxCalculator::EstimateVO2MaxFromRaceDistanceInMeters(double raceDistanceMeters, double raceTimeMinutes)
{
double speed = raceDistanceMeters / raceTimeMinutes;
return -4.60 + 0.182258 * speed + 0.000104 * speed * speed;
}
so if you run a 40 minute 10k, that would give:
> speed = 10000 / 40
< 250
> -4.6 + 0.182258 * speed + 0.000104 * speed * speed;
< 47.4645
but that's significantly lower than what daniels uses; if we try the calculation given first, we get:
> 0.8 + 0.1894393 * Math.pow(Math.E, -0.012778 * 40)
> +Â 0.2989558 * Math.pow(Math.E, -0.1932605 * 40)
< 0.9137614442697204
and so:
> 47.4645 / 0.9137614442697204
< 51.9440826680247
which matches Daniels very closely