Uderzyło mnie jednak to, że średnie prędkości naprawdę nie zmieniły się zbytnio
Wykres waha się od około 25km/h do ponad 40km/h, a to jest duża zmiana. Jak wspomnieli inni, zwiększenie średniej prędkości wymaga nieliniowego zwiększenia mocy przyłożonej do pedałów.
Innymi słowy, zwiększenie średniej prędkości z 25km/h do 26km/h jest łatwiejsze niż zwiększenie z 40km/h do 41km/h
Powiedzmy, że mam ukraść maszynę czasową, wrócić i przejechać każdy kurs TdF, używając dokładnie tego samego roweru. Aby dopasować do średniej prędkości zwycięzców, to jest moc, którą musiałbym wyprodukować (cóż, bardzo surowe przybliżenie):
(ponownie, jest to bardzo ostrożnie przybliżony wykres, zaprojektowany, aby zilustrować punkt! Ignoruje on takie rzeczy jak wiatr, teren, rzeźba terenu, wybrzeże, nawierzchnia drogi i wiele innych)
Z około 60 watów do 240 watów to ogromna zmiana, a jest bardzo mało prawdopodobne, że konkurenci TdF zwiększyli swoją moc tak bardzo w czasie…
Część tego wzrostu będzie wynikać z większej siły rowerzystów (dzięki lepszemu treningowi i odżywianiu), ale na pewno nie wszystko.
Reszta jest prawdopodobnie wynikiem ulepszeń technologicznych. Na przykład, bardziej aerodynamiczny rower zmniejszy moc potrzebną do osiągnięcia danej średniej prędkości, tak samo jak lżejszy rower podczas pokonywania wzniesień.
Źródło wykresu: Chociaż mój punkt powinien pozostać aktualny bez względu na to jak niedokładny jest powyższy wykres, oto nieporządny skrypt, którego użyłem do jego wygenerowania
Wykorzystuje on dane z tutaj , wyeksportowane do CSV (z tego dokumentu )
Obliczenie średniej prędkości do wymaganej mocy może być znacznie uproszczone, ale łatwiej mi było po prostu zmodyfikować skrypt z mojej odpowiedzi tutaj !
#!/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))"""