Ciò che mi ha davvero colpito è che le velocità medie non sono cambiate molto
Il grafico varia da circa 25 km / ha oltre 40 km / h, e questo è un grande cambiamento. Come altri hanno già detto, aumentare la velocità media richiede un aumento non lineare della potenza applicata ai pedali.
In altre parole, aumentare la velocità media da 25 km / ha 26 km / h è più facile che aumentare da 40 km / ha 41 km / h
Supponiamo che dovessi rubare una macchina del tempo, tornare indietro e guidare ogni corso TdF, usando la stessa identica bici. Per abbinare la velocità media dei vincitori, questa è la potenza che avrei bisogno di produrre (beh, un'approssimazione molto grezza):
(di nuovo, questo è un grafico approssimativamente molto approssimativo, progettato per illustrare un punto! Ignora cose come il vento, il terreno, il disegno, la costa, il fondo stradale e molte altre cose)
Da circa 60 watt a 240 watt è un grande cambiamento ed è molto improbabile che i concorrenti TdF abbiano aumentato la loro potenza così tanto nel tempo.
Una parte dell'aumento sarà dovuta a ciclisti più potenti (grazie a un miglior allenamento e nutrizione), ma certamente non tutti.
Il resto è probabilmente dovuto a miglioramenti tecnologici. Ad esempio, una bici più aerodinamica ridurrà la potenza richiesta per una data velocità media, lo stesso con una bici più leggera quando si sale.
Fonte per il grafico: sebbene il mio punto debba rimanere valido indipendentemente da quanto sia impreciso il grafico sopra, ecco lo script disordinato che ho usato per generarlo
Utilizza i dati da qui , esportati in CSV (da questo documento )
La velocità media per il calcolo dei watt richiesti potrebbe essere notevolmente semplificata, ma per me è stato più semplice modificare lo script dalla 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))"""