8,153
edits
Changes
From Fellrnr.com, Running tips
no edit summary
=Monotony Calculations=
The original work<ref name="OTMonotony"/> on training monotony used TRIMP<sup>cr10</sup> and TRIMP<sup>zone</sup>, but I believe that substitute TRIMP<sup>exp</sup> is more appropriate. From the daily TIMPfor TRIMP<sup>expzone</sup> because of the advantages noted in [[TRIMP]]]. From the daily TRIMP values for a given 7 day period the standard deviation can be calculated. (If there is more than one workout in a day, the TRIMP values for each are simply added together.) The monotony can be calculated using Monotony = (average(TIRIMP<sup>exp</sup>TRIMP)/stdevstddev(TIRIMP<sup>exp</sup>TRIMP)This gives a value of monotony that tends towards infinity as stdevstddev(TIRIMP<sup>exp</sup>TRIMP) tends towards zero, so I cap Monotony to a maximum value of 10. Without this cap, the value tends to be unreasonably sensitive to high levels of monotony. Values of Monotony over 2.0 are generally considered too high, and values below 1.5 are preferable. A high value for Monotony indicates that the training program is ineffective. This could be because the athlete is doing a low level of training; an extreme example would be a well-trained runner doing a single easy mile every day. This would allow for complete recovery, but would not provide the stimulus for improvement and would likely lead to rapid detraining. At the other extreme, doing a hard work out every day would be monotonous and not allow sufficient time to recover. The Training Strain below can help determine the difference between monotonous training that is inadequate and monotonous training that is excessive.
=Training Strain Calculations=
A similar calculation can be used to calculate a value for Training Strain.
Training Strain = sum(TIRIMP<sup>exp</sup>TRIMP) * Monotony
The value of Training Strain that leads to actual overtraining would be specific to each athlete. An elite level athlete will be able to train up much higher levels than a beginner. However this Training Strain provides a better metric of the overall stress that an athlete is undergoing than simply looking at training volume.
=A simple TRIMP<sup>cr10</sup> based calculator=
This calculator will show the TRIMP<sup>cr10</sup> values for each day, the Monotony, the total TRIMP<sup>cr10</sup> for the week and the Training Strain.
<html>
<script type="text/javascript">
var isArray = function (obj) {
return Object.prototype.toString.call(obj) === "[object Array]";
},
getNumWithSetDec = function( num, numOfDec ){
var pow10s = Math.pow( 10, numOfDec || 0 );
return ( numOfDec ) ? Math.round( pow10s * num ) / pow10s : num;
},
getAverageFromNumArr = function( numArr, numOfDec ){
if( !isArray( numArr ) ){ return false; }
var i = numArr.length,
sum = 0;
while( i-- ){
sum += numArr[ i ];
}
return getNumWithSetDec( (sum / numArr.length ), numOfDec );
},
getVariance = function( numArr, numOfDec ){
if( !isArray(numArr) ){ return false; }
var avg = getAverageFromNumArr( numArr, numOfDec ),
i = numArr.length,
v = 0;
while( i-- ){
v += Math.pow( (numArr[ i ] - avg), 2 );
}
v /= numArr.length;
return getNumWithSetDec( v, numOfDec );
},
getStandardDeviation = function( numArr, numOfDec ){
if( !isArray(numArr) ){ return false; }
var stdDev = Math.sqrt( getVariance( numArr, numOfDec ) );
return getNumWithSetDec( stdDev, numOfDec );
};
function doTrimp(dur, cr10, trimp)
{
var d1 = document.getElementById(dur).value;
var c1 = document.getElementById(cr10).value;
var t1 = d1 * c1;
document.getElementById(trimp).innerHTML = t1;
}
function doCalc()
{
var trimps=new Array();
var total = 0;
for(i=1; i< 8; i++)
{
doTrimp('dur_'+i, 'cr10_'+i, 'trimp_'+i);
trimps[i-1] = Number(document.getElementById('trimp_'+i).innerHTML);
total += trimps[i-1];
}
var average = getAverageFromNumArr(trimps, 2);
var stddev = getStandardDeviation(trimps, 2);
var Monotony = 10.0;
if (average < (10 * stddev))
{
Monotony = average / stddev;
Monotony = Math.round(Monotony*100)/100;
}
document.getElementById('Monotony').innerHTML = "Monotony: " + Monotony + " ( " + average + " / " + stddev + " )";
document.getElementById('Total').innerHTML = "Total TRIMP: " + total;
document.getElementById('Stress').innerHTML = "Training Stress: " + Math.round(total * Monotony);
}
</script>
<form style="font-family: Helvetica,Arial,sans-serif;" id="MonotonyForm">
<table style="text-align: left;" border="1" cellpadding="1" cellspacing="1">
<tr>
<th>Day</th>
<th>Duration (min)</th>
<th>CR10 Rating</th>
<th>TRIMP(CR10)</th>
</tr>
<tr>
<td>1</td>
<td><input maxlength="3" size="3" id="dur_1" value="10"></td>
<td><input maxlength="3" size="3" id="cr10_1" value="4"></td>
<td><label id="trimp_1"></label></td>
</tr>
<tr>
<td>2</td>
<td><input maxlength="3" size="3" id="dur_2" value="19"></td>
<td><input maxlength="3" size="3" id="cr10_2" value="3"></td>
<td><label id="trimp_2"></label></td>
</tr>
<tr>
<td>3</td>
<td><input maxlength="3" size="3" id="dur_3" value="0"></td>
<td><input maxlength="3" size="3" id="cr10_3" value="0"></td>
<td><label id="trimp_3"></label></td>
</tr>
<tr>
<td>4</td>
<td><input maxlength="3" size="3" id="dur_4" value="0"></td>
<td><input maxlength="3" size="3" id="cr10_4" value="0"></td>
<td><label id="trimp_4"></label></td>
</tr>
<tr>
<td>5</td>
<td><input maxlength="3" size="3" id="dur_5" value="0"></td>
<td><input maxlength="3" size="3" id="cr10_5" value="0"></td>
<td><label id="trimp_5"></label></td>
</tr>
<tr>
<td>6</td>
<td><input maxlength="3" size="3" id="dur_6" value="0"></td>
<td><input maxlength="3" size="3" id="cr10_6" value="0"></td>
<td><label id="trimp_6"></label></td>
</tr>
<tr>
<td>7</td>
<td><input maxlength="3" size="3" id="dur_7" value="0"></td>
<td><input maxlength="3" size="3" id="cr10_7" value="0"></td>
<td><label id="trimp_7"></label></td>
</tr>
</table>
<label id="Monotony">Monotony:</label><br/>
<label id="Total">Total TRIMP:</label><br/>
<label id="Stress">Training Stress:</label><br/>
<input type="button" value="Calculate" onclick="doCalc()"/>
</form>
</html>
=Examples=