Quello che mi ha colpito di più, però, è che le velocità medie non sono cambiate molto
Il grafico va da circa 25km/h a oltre 40km/h, e questo è un grande cambiamento. Come altri hanno detto, aumentare la velocità media richiede un aumento non lineare della potenza applicata ai pedali.
In altre parole, aumentare la velocità media da 25km/h a 26km/h è più facile che aumentare da 40km/h a 41km/h
Diciamo che dovessi rubare una macchina del tempo, tornare indietro e percorrere ogni percorso TdF, usando esattamente la stessa bicicletta. Per uguagliare la velocità media dei vincitori, questo è il wattaggio che dovrei produrre (beh, un'approssimazione molto grossolana):
(anche questo è un grafico molto grossolanamente approssimato, progettato per illustrare un punto! Ignora cose come il vento, il terreno, il disegno, il disegno, la costa, il manto stradale e molte altre cose)
Da circa 60 watt a 240 watt è un cambiamento enorme, ed è molto improbabile che i concorrenti di TdF abbiano aumentato la loro potenza così tanto nel tempo…
Parte dell'aumento sarà dovuto a ciclisti più potenti (grazie ad un migliore allenamento e ad una migliore alimentazione), ma certamente non tutto.
Il resto è probabilmente dovuto a miglioramenti tecnologici. Per esempio, una bicicletta più aerodinamica diminuirà la potenza richiesta per una data velocità media, lo stesso con una bicicletta più leggera quando si sale.
Fonte per il grafico: Anche se il mio punto dovrebbe rimanere valido indipendentemente da quanto impreciso sia il grafico di cui sopra, ecco lo script disordinato che ho usato per generarlo
Utilizza i dati di qui , esportati in CSV (da questo documento )
La velocità media per il calcolo dei watt richiesti potrebbe essere molto semplificata, ma per me è stato più facile modificare lo script da la mia risposta qui !
#!/usr/bin/env python2
"""Wattage required to match pace of TdF over the years
Written in Python 2.7
"""
def Cd(desc):
"""Coefficient of drag
Coefficient of drag is a dimensionless number that relates an
objects drag force to its area and speed
"""
values = {
"tops": 1.15, # Source: "Bicycling Science" (Wilson, 2004)
"hoods": 1.0, # Source: "Bicycling Science" (Wilson, 2004)
"drops": 0.88, # Source: "The effect of crosswinds upon time trials" (Kyle,1991)
"aerobars": 0.70, # Source: "The effect of crosswinds upon time trials" (Kyle,1991)
}
return values[desc]
def A(desc):
"""Frontal area is typically measured in metres squared. A
typical cyclist presents a frontal area of 0.3 to 0.6 metres
squared depending on position. Frontal areas of an average
cyclist riding in different positions are as follows
http://www.cyclingpowermodels.com/CyclingAerodynamics.aspx
"""
values = {'tops': 0.632, 'hoods': 0.40, 'drops': 0.32}
return values[desc]
def airdensity(temp):
"""Air density in kg/m3
Values are at sea-level (I think..?)
Values from changing temperature on:
http://www.wolframalpha.com/input/?i=%28air+density+at+40%C2%B0C%29
Could calculate this:
http://en.wikipedia.org/wiki/Density_of_air
"""
values = {
0: 1.293,
10: 1.247,
20: 1.204,
30: 1.164,
40: 1.127,
}
return values[temp]
"""
F = CdA p [v^2/2]
where:
F = Aerodynamic drag force in Newtons.
p = Air density in kg/m3 (typically 1.225kg in the "standard atmosphere" at sea level)
v = Velocity (metres/second). Let's say 10.28 which is 23mph
"""
def required_wattage(speed_m_s):
"""What wattage will the mathematicallytheoretical cyclist need to
output to travel at a specific speed?
"""
position = "drops"
temp = 20 # celcius
F = Cd(position) * A(position) * airdensity(temp) * ((speed_m_s**2)/2)
watts = speed_m_s*F
return watts
#print "To travel at %sm/s in %s*C requires %.02f watts" % (v, temp, watts)
def get_stages(f):
import csv
reader = csv.reader(f)
headings = next(reader)
for row in reader:
info = dict(zip(headings, row))
yield info
if __name__ == ' __main__':
years, watts = [], []
import sys
# tdf_winners.csv downloaded from
# http://www.guardian.co.uk/news/datablog/2012/jul/23/tour-de-france-winner-list-garin-wiggins
for stage in get_stages(open("tdf_winners.csv")):
speed_km_h = float(stage['Average km/h'])
dist_km = int(stage['Course distance, km'].replace(",", ""))
dist_m = dist_km * 1000
speed_m_s = (speed_km_h * 1000)/(60*60)
watts_req = required_wattage(speed_m_s)
years.append(stage['Year'])
watts.append(watts_req)
#print "%s,%.0f" % (stage['Year'], watts_req)
print "year = c(%s)" % (", ".join(str(x) for x in years))
print "watts = c(%s)" % (", ".join(str(x) for x in watts))
print """plot(x=years, y=watts, type='l', xlab="Year of TdF", ylab="Average watts required", ylim=c(0, 250))"""