Add files via upload

This commit is contained in:
Peter Norvig authored and GitHub committed 2020-01-27 23:37:57 -08:00
1 parent c965960fc6
commit 0e498afb3f
3 files changed
+177 -156

No files matched your search

+102 -92
View File
@@ -4,12 +4,12 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"<div align=\"right\"><i>Peter Norvig, 23 Oct 2017<br>Revised 2 June 2019</i></div>\n",
"<div align=\"right\"><i>Peter Norvig, Oct 2017<br>Revised Jan 2020</i></div>\n",
"\n",
"# Bicycling: Speed v. Grade, VAM, Eddington, Hill-index\n",
"\n",
"Like most people, I bike slower when I'm going up a steep hill than on a flat road. But how much slower?\n",
"To answer that, I downloaded all my recorded [Strava](https://www.strava.com/athletes/575579) rides longer than 25 miles as [`bikerides25.tsv`](bikerides25.tsv). I parse the file into `rides`, a list of `Ride` structures. I filter out all the rides that have exactly 0 ft climbing (i.e. stationary bike rides) and that have `'MTB'` in the title (i.e. mountain bike rides that are not relevant to road bike riding)."
"To answer that, I downloaded a bunch of my recorded [Strava](https://www.strava.com/athletes/575579) rides longer than 25 miles as [`bikerides25.tsv`](bikerides25.tsv). I parse the file into `rides`, a list of `Ride` structures. I filter out all the rides that have exactly 0 ft climbing (i.e. stationary bike rides) or that have `'MTB'` in the title (i.e. mountain bike rides that are not relevant to road bike riding) or are blank or are comment lines (start with `#`)."
]
},
{
@@ -37,7 +37,7 @@
"def hours(sec, min, hour=0) -> float: return int(sec)/3600 + int(min)/60 + int(hour)\n",
"\n",
"rides = [parse_ride(line) for line in open('bikerides25.tsv') \n",
" if 'MTB' not in line and '\t0 ft' not in line]"
" if line.strip() and not line.startswith('#') and 'MTB' not in line and '\t0 ft' not in line]"
]
},
{
@@ -59,7 +59,7 @@
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
@@ -124,7 +124,7 @@
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAykAAAKSCAYAAADWEJRoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsvX18W3Xd///q/Vh307GVtlu3UGCyTeDy8gL5AXYC4rhxrFWogANRoYiCPkBUJmQTWGTcKHo94Hu52SlwyUAoN4UqgpcK10XH0G0MNxmMjnXpepMsLU3SJCQhSX9/1BObk5zkJDnnk0/eez8fjz2kyUle5/1+fU487/O5K3G73RNgGIZhGIZhGIaRhNJCnwDDMAzDMAzDMMxUuEhhGIZhGIZhGEYquEhhGIZhGIZhGEYquEhhGIZhGIZhGEYquEhhGIZhGIZhGEYquEhhGIZhGIZhGEYquEhhGIZhipqTTz4ZJ598su7j7XY7ampq8M1vftPEs2IYhmHygYsUhmGYI5ienh4cffTRqKmpwR133JH0vtfrxZo1a3DhhRdiyZIlqKurwwknnIBzzz0X//Vf/wW/35/ye71eL37605+iubkZFosFixYtwhlnnIE777wThw8fNjkqhmEYptgpL/QJMAzDMIXB4/Hg+uuvx/Tp0+Hz+VIeMzY2hkcffRSf/OQnsWLFCsybNw9erxf/93//h9tuuw3//d//jZdffhmzZ89O+N7Pfvaz2L9/P/7t3/4NX/7yl1FSUoJt27bhZz/7GR5//HG88sormD9/viFxvPDCC4Z8D8MwDCMPXKQwDMMcoXz/+9+H3+/Hd7/7Xdx1110pj2lsbER/fz8qKiqS3rvuuuvw1FNPYfPmzbjlllvirz/66KPYv38/LrvsMmzatCnhMzfeeCMee+wxbN68GevWrTMkjqamJkO+h2EYhpEHHu7FMAxzBNLV1YWnnnoK999/P+rq6jSPKysrS1mgAEBLSwsA4P333094/eDBgwCACy+8MOkzF110EQBgZGRE13m+9tpr8fkjvb29uPrqq3H88cdjzpw52L17NwDtOSnj4+O47bbbsGzZMtTV1eG0007DQw89hImJCU29YDCIBx98EJ/5zGewYMECzJ8/H2effTZ+/etfp/zcH/7wB7S0tGDJkiU45phjcOKJJ+L888/HT3/6U13xMQzDMKnhnhSGYZgjjOHhYdx8881oaWnBpZdeii1btuT0PS+99BIA4KSTTkp4fcmSJQCAl19+Ga2trQnvvfzyywCAs88+Oyutvr4+fPazn8WJJ56Iyy67DOPj45g+fbrm8aFQCC0tLXjzzTexbNkytLW1wev14ic/+Qm2bt2a8jPj4+NobW3Fzp07ccopp+DLX/4yAODPf/4zvvvd72L79u34xS9+ET/+kUcewU033YRjjjkG559/PmprazE6Oop9+/bh4YcfTuhdYhiGYbKDixSGYZgjiImJCXzrW99CRUUFHnjgAd2fi0QiuP/++wFMzlPZtm0b9uzZg+XLl+PrX/96wrFf+cpX8Mwzz+CJJ57Au+++izPOOAMlJSV44403sHfvXtx666344he/mNV5v/HGG7jllluwdu1aXcc/9NBDePPNN3HRRRfhscceQ2np5MCBm2++WbNAuu2227Bz507ccccduOmmm+Kvh0IhXHXVVXjiiSewatWqeA/Rww8/jMrKSvT09OCYY45J+K7R0dGs4mMYhmES4SKFYRjmCGLTpk145ZVXsGXLFsydO1f35yKRCO69996E1y6//HLcf//9mDZtWsLr06ZNwwsvvIDbb78dmzdvxq5du+Lvff7zn48P+cqGY445Bj/4wQ90H79lyxaUlJTgzjvvjBcoALBo0SJ84xvfwIYNGxKOHxsbwxNPPIFTTjkloUABgKqqKqxbtw5//OMf8eSTTyYMYysvL085HC6b3DIMwzDJcJHCMAxzhLBv3z7ccccduPzyy/H5z38+q89OmzYNbrcbExMTcDgcePXVV3HXXXfhnHPOwdNPP41jjz02fuwHH3yAq666Cvv27cMvf/lLnHvuuSgvL8cbb7yBNWvWYMWKFXjsscfwuc99Trf+SSedhKqqKl3Hjo+P48CBA6ivr8fixYuT3j/rrLOSXtu5cycikQhKS0uTChhgskgDgPfeey/+WltbG6xWK04//XR84QtfwJlnnonTTz8d9fX1esNiGIZhNOAihWEY5gjhuuuuw9y5c5N6RLKhpKQEDQ0NuOKKK7B48WKcd955uOWWW/DMM8/Ej7n99tuxdetWPPbYY1i5cmX89QsuuADz58/H8uXL8f3vfx9vvfWWbl31cKp0eL1eAEBtba3u7/rggw8AAG+99Vba85q6VPONN96I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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
@@ -141,7 +141,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"So, I average a little under 14 mph when the overall route is fairly flat, with a lot of variability from 12 to 16 mph, depending more on my level of effort than on the grade of the road. But from around 50 ft/mile grade speed falls off quickly: down to 12mph at 80 ft/mile; 11 mph at 100 ft/mile; and under 10 mph at 120 ft/mile. Note that even 120 ft/mile is only 2.3% grade, but if you figure a typical route is 1/3 up, 1/3 down, and 1/3 flat, then that's 6.8% average grade on the up part."
"So, I average a little under 14 mph when the overall route is fairly flat, with a lot of variability from 12 to 16 mph, depending more on my level of effort than on the grade of the road. But from around 50 ft/mile grade speed falls off quickly: down to 12mph at 80 ft/mile; 11 mph at 100 ft/mile; and around 10 mph at 120 ft/mile. Note that even 120 ft/mile is only 2.3% grade, but if you figure a typical route is 1/3 up, 1/3 down, and 1/3 flat, then that's 6.9% average grade on the up part."
]
},
{
@@ -172,7 +172,7 @@
{
"data": {
"text/plain": [
"(69.10185351454508, 62.471852498446204)"
"'Coast: 69.2 min, Creek: 62.5 min.'"
]
},
"execution_count": 6,
@@ -181,7 +181,7 @@
}
],
"source": [
"duration(15.7, 344), duration(13.5, 735)"
"f'Coast: {duration(15.7, 344):.1f} min, Creek: {duration(13.5, 735):.1f} min.'"
]
},
{
@@ -197,7 +197,7 @@
"source": [
"# Segments\n",
"\n",
"The data I have so far helps me estimate the duration for a long ride over varying up-and-down terrain. But what if I just want to know how long it will take to climb the next hill? To answer that I'll go back to Strava and retrieve data from individual segments, some only a fraction of a mile long, some several miles long, but most with a relatively constant grade. I picked some representative climbing segments ([`bikesegments.csv`](bikesegments.csv)) with the segment length in miles and climb in feet, along with several of my times on the segment. (Strava shows my times for up to 10 rides on the segment; I picked the first, middle, and last of the rides shown.) "
"The data I have so far helps me estimate the duration for a long ride over varying up-and-down terrain. But what if I just want to know how long it will take to climb the next hill? To answer that I'll go back to Strava and retrieve data from individual segments, some only a fraction of a mile long, some several miles long, but most with a relatively constant grade. I picked some representative climbing segments ([`bikesegments.csv`](bikesegments.csv)) with the segment length in miles and climb in feet, along with several of my times on the segment. (Strava shows my times for up to 10 rides on each segment; I picked the first, middle, and last of the rides shown.) "
]
},
{
@@ -234,7 +234,7 @@
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAykAAAKSCAYAAADWEJRoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXt0nFW5/7+TTJI2adq0aUjSlg4BQqVc9YBoIREBWy4pBDWCIiJKUBDOQdCjB8PtELmJB5dwFCkiChQhWlJaLsKPc4SmgrZcLBfF9BAmaTKZJulcMjOdmczl90eckMvkTebN+zx79vB81mItTSaf7P2Z3aGb92bzer1JCIIgCIIgCIIgZAl5qgcgCIIgCIIgCIIwHtmkCIIgCIIgCIKQVcgmRRAEQRAEQRCErEI2KYIgCIIgCIIgZBWySREEQRAEQRAEIauQTYogCIIgCIIgCFmFbFIEQRAErTnqqKNw1FFHzfr1TqcTZWVluOyyywhHJQiCIMwF2aQIgiB8iNi8eTO++93v4owzzsCBBx6IsrIyfO1rX5v29X19fbjvvvvwhS98AccccwwqKyvhcDhw5plnYuPGjUgmpz5q67LLLkNZWZnhP2effTblNAVBEATNsasegCAIgsDHj370I7z11ltYsGABli1bhuHhYcPX33ffffjJT36CFStW4KSTTsKyZcvgcrmwdetWXH755Xjuuefw4IMPTviZs846CytXrkzre+yxx/D+++/jM5/5jFVTwpNPPmmZSxAEQcgObPLEeUEQhA8PL730EpYvX46DDz4YHR0dWL9+PT772c/igQceSPv6J598EmVlZairq4PNZhv7usvlwmmnnYbe3l785je/mdWREa/Xi8MPPxzxeBx/+9vfUF5ebtm8MsHpdOKYY47BF7/4Rfz85z9XMgZBEATBGDndSxAE4UNEfX09DjnkkAkbDiPOPvts1NfXT3l9dXX12Gli27Ztm5Xrsccew/79+7F+/fpZb1C2bds2dv1IZ2cnLrroIhxyyCFYvHgxdu3aBWD6a1KGh4dx7bXXYvXq1aisrMTxxx+Pe+65J+0painC4TDuvvtufOpTn8Ly5cuxbNkynHzyyXjggQfS/twzzzyDc845Bx/5yEdwwAEHYNWqVVi3bh1+/OMfz2p+giAIQnrkdC9BEATBFAUFBQAAu312/yr59a9/DQC46KKLMv5dXV1dOPXUU7Fq1Sqcd955GB4eRnFx8bSvj0QiOOecc/Daa69h9erVaGpqgt/vx5133ont27en/Znh4WE0Njbi1VdfxdFHH40vfelLAIAXXngBV199NXbs2DHhyMuDDz6Iq666CgcccADWrVuHiooKDA0N4d1338WvfvUrXHPNNRnPUxAEQRhFNimCIAhCxsRiMfz2t78FAJx22mkzvv4vf/kL3nnnHRx66KGor6/P+Pe98soruOaaa3DdddfN6vX33HMPXnvtNZx55pl4+OGHkZc3euLAt7/9bZx88slpf+baa6/Fq6++ihtvvBFXXXXV2NcjkQguvPBCPProozj77LNxxhlnAAB+9atfobCwEB0dHTjggAMmuIaGhjKeoyAIgvABcrqXIAiCkDEtLS145513sG7dOpx66qkzvj51cb2ZoygAcMABB+Df//3fZ/36Rx55BDabDTfddNPYBgUAVq5ciW984xtTXu/xePDoo4/i6KOPnrBBAYCioiJcf/31AEZPWRuP3W4fO6I0HlXX2wiCIOQKciRFEARByIj/+q//wr333ovDDz8cv/jFL2Z8vc/nQ3t7OwoLC8dOocqUI488EkVFRbN67fDwMN577z1UVVWhtrZ2yvdPPPHEKV979dVXEYvFkJeXh1tvvXXK92OxGADgH//4x9jXmpqa0NLSghNOOAHnnnsu1qxZgxNOOAFVVVWznZYgCIIwDbJJEQRBEGbNnXfeidbWVhxxxBHYvHkzysrKZvyZxx9/HKFQCJ/73OdMH2GYfDqVEX6/HwBQUVExa9e+ffsAAG+88QbeeOONad2BQGDsf19xxRWoqKjAAw88gPvvv39sw3b88cfj+uuvR11d3azHLAiCIExETvcSBEEQZkVraytaW1tx7LHHYuvWrVi6dOmsfi51wfxXv/pV0797tncjA4CFCxcCAAYGBtJ+f+/evdP+zKWXXgqv1zvtP6k7iqU477zz8Ic//AFdXV3YtGkTmpub8de//hVNTU3YvXv3rMcsCIIgTEQ2KYIgCMKMXHvttbjzzjtx/PHHY/PmzVi8ePGsfm7nzp146623cOihh7IdWSgtLcXBBx8Mt9uddqOQ7u5exx13HPLy8vDyyy+b+p0LFy7EKaecgh/96Ee44oorEA6H8fzzz5tyCYIgCLJJEQRB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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
@@ -253,11 +253,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"So I can cruise at 17 mph on a 1% grade, but only a bit over 6 mph at 6% grade, and around 5 mph on 8% grades.\n",
"So I can cruise at 16 or 17 mph on a 1% grade, but only about 8 mph at 5% grade, and around 5 mph on 8% grades.\n",
"\n",
"# VAM\n",
"\n",
"The number of vertical feet (or meters) climbed per hour (regardless of horizontal distance travelled) is known as [VAM](https://en.wikipedia.org/wiki/VAM_%28bicycling%29), which stands for *velocità ascensionale media* (for native Campagnolo speakers) or *mean ascent velocity* (for SRAM) or 平均上昇率 (for Shimano). Legend has it that at grades between about 6% to 12%, most of your power is going into lifting against gravity, so your VAM should be about constant no matter what the grade in that range. (I guess that below that grade, power is spent on wind and rolling resistance, and above it, power goes largely to cursing *sotto voce*, as they say in Italian.) Here's a plot of VAM versus grades (in percent):"
"The number of vertical feet (or meters) climbed per hour (regardless of horizontal distance travelled) is known as [VAM](https://en.wikipedia.org/wiki/VAM_%28bicycling%29), which stands for *velocità ascensionale media* (for native Campagnolo speakers) or *mean ascent velocity* (for SRAM) or 平均上昇率 (for Shimano). The theory is that for medium-steepish climbs, most of your power is going into lifting against gravity, so your VAM should be about constant no matter what the grade in that range. (For flatish rides power is spent on wind and rolling resistance, and for super-steep rides power goes largely to cursing *sotto voce*, as they say in Italian.) Here's a plot of my VAM versus grades (in percent):"
]
},
{
@@ -267,7 +267,7 @@
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
@@ -288,7 +288,7 @@
"source": [
"I don't see the flattening effect; I see a wide spread of VAM numbers; at about 8% I range from 1500 to 3000 VAM. Champions can do 6000. \n",
"\n",
"Another way to look at it: at what speed am I getting the most VAM (implicitly assuming I'm giving a similar level of effort at all times, which is not really true)? The curve says 5½ mph, but the data is pretty noisy.\n",
"Another way to look at it: at what speed am I getting the most VAM (implicitly assuming I'm giving a similar level of effort at all times, which is not really true)? The curve says 5 or 6 mph, but the data is pretty noisy.\n",
"\n"
]
},
@@ -299,7 +299,7 @@
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzoAAAKSCAYAAAAaia6DAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsvXt4VNW9//8OAQIESGgIuQiEoBQVsZxW8VusFgXvgPEoxUvVak+seDzWO1UjaDs9ilhra73iraf2tIjVKKi1toIVa0X0oV5QmnOMwyXJJBkymWTCzDAz+f3Bb+Yk5sKePfNZe6/F+/U8Pk8bxtd81mtWYhYzsycnEAh0gxBCCCGEEEIMYojTAxBCCCGEEEJItuFBhxBCCCGEEGIcPOgQQgghhBBCjIMHHUIIIYQQQohx8KBDCCGEEEIIMQ4edAghhBBCCCHGwYMOIYQQAmDmzJmYOXOm5dt7vV4UFhZi6dKlglMRQgixCw86hBBC0ubFF1/ETTfdhDPOOAOTJk1CYWEhLr/88gFv39DQgMceewzf+c538LWvfQ0lJSWoqKjAmWeeif/+7/9Gd3ffj3RbunQpCgsLB/1n0aJFksskhBCiMUOdHoAQQoh+rFq1Ch9//DFGjx6N8vJydHR0DHr7xx57DPfffz8mTpyIb33rWygvL0djYyPWr1+Pq666Cn/605/w9NNP9/p3zjrrLEyePLlf35o1a/DFF1/glFNOydaS8NJLL2XNRQghxHlyAoFA379GI4QQQgbhr3/9Kw455BBMnToVmzZtwsKFC/Gv//qvePLJJ/u9/UsvvYTCwkKccMIJyMnJSX29sbER8+fPx+7du/Ff//Vflp6hCQQCOOKIIxCPx/Hpp5+iqKgoa+tKB6/Xi6997Wu44IIL8PDDDzsyAyGEkIHhS9cIIYSkzYknnohDDz2016FlMBYtWoQTTzyxz+3LyspSL3l76623LLnWrFmDvXv3YuHChZYPOW+99Vbq/TR1dXW49NJLceihh2LcuHH48MMPAQz8Hp2Ojg7ceuutOPLII1FSUoJjjz0Wv/rVr/p9uV2ScDiMBx54AN/+9rdxyCGHoLy8HHPnzsWTTz7Z77/36quv4uyzz8bhhx+OCRMmYPr06TjttNPws5/9zNL6CCGE9IUvXSOEEOIow4YNAwAMHWrtP0m//vWvAQCXXnpp2vdVX1+PefPmYfr06ViyZAk6OjowatSoAW8fiURw9tln44MPPsCRRx6JxYsXIxgM4t5778Xbb7/d77/T0dGBqqoqvP/++zj66KNx4YUXAgD+8pe/4Prrr8d7773X6xmgp59+Gtdeey0mTJiA0047DcXFxfD7/di+fTueeuop3HDDDWmvkxBCCA86hBBCHCQWi+H3v/89AGD+/PkHvP3mzZuxbds2HHbYYTjxxBPTvr+///3vuOGGG3D77bdbuv2vfvUrfPDBBzjzzDPxzDPPYMiQ/S+EuO666zB37tx+/51bb70V77//Pu644w5ce+21qa9HIhFcfPHF+N3vfodFixbhjDPOAAA89dRTGD58ODZt2oQJEyb0cvn9/rTXSAghZD986RohhBDHqKmpwbZt23Daaadh3rx5B7x98oIFdp7NAYAJEybg5ptvtnz73/72t8jJycGdd96ZOuQAwOTJk/GDH/ygz+3b2trwu9/9DkcffXSvQw4A5OXlYfny5QD2v/yuJ0OHDk09s9UTp95/RAghJsBndAghhDjCfffdh0ceeQRHHHEEHn300QPevr29HbW1tRg+fHjq5WDpctRRRyEvL8/SbTs6OvD555+jtLQU06ZN6/Pnxx9/fJ+vvf/++4jFYhgyZAjuuuuuPn8ei8UAAP/85z9TX1u8eDFqampw3HHH4ZxzzsGcOXNw3HHHobS01OqyCCGE9AMPOoQQQpRz7733wuPxYMaMGXjxxRdRWFh4wH/n2WefRVdXF84991zbz3R8+aVhgxEMBgEAxcXFll179uwBAGzduhVbt24d0N3Z2Zn631dffTWKi4vx5JNP4vHHH08d+o499lgsX74cJ5xwguWZCSGE/B986RohhBCleDweeDwezJo1C+vXr8f48eMt/XvJixB873vfs33fVq8SBwBjx44FALS0tPT7583NzQP+O1dccQUCgcCA/ySv9JZkyZIleO2111BfX4/nn38e1dXV+Mc//oHFixfjf/7nfyzPTAgh5P/gQYcQQogybr31Vtx777049thj8eKLL2LcuHGW/r0tW7bg448/xmGHHabsGY4xY8Zg6tSp8Pl8/R42+rvq2jHHHIMhQ4bgnXfesXWfY8eOxcknn4xVq1bh6quvRjgcxuuvv27LRQghBzs86BBCCBGnu7sb119/PR566CHMmTMHL7zwAgoKCiz/+5lehMAuF110Ebq7u7F8+XIkEonU13fs2NHv+4rGjx+PJUuW4KOPPsJdd92Vek9OT3bv3t3rPTpvvvlmv5+t4/P5AGDQy18TQggZGL5HhxBCSNqsX78eL7/8MoD/ewnXli1bsHTp0tRten5WzMqVK/Hkk09i+PDhOOaYY/DAAw/0cU6ePBkXXXRRn68Hg0G88MILyMvLs30RArtcffXVePnll/HKK6/ghBNOwPz581PzfPOb38Srr77a59+555578Pnnn2PlypVYs2YN5syZg5KSktQzQ++99x5++tOf4qtf/SoA4OKLL0Z+fj6OOeYYTJ48GTk5OXj//ffxzjvvoLKyElVVVUrXTAghpsCDDiGEkLT56KOP8Lvf/a7X13bs2IEdO3ak/n/Pg47X6wUARKNR/PKXv+zXefzxx/d70Fm7di1CoVBGFyGwS15eHmpra3H33XfjhRdewCOPPILJkyfjhhtuwMKFC/s96IwZMwbr16/Hb37zG6xduxbr169HOBxGcXExKioqsGLFCpxzzjmp299xxx1444038NFHH+Evf/kLhg4diokTJ2LZsmX4wQ9+kNYzX4QQQv6PnEAg0Pf5ckIIIYQQQgjRGL5HhxBCCCGEEGIcPOgQQgghhBBCjIMHHUIIIYQQQohx8KBDCCGEEEIIMQ4edAghhBBCCCHGwYMOIYQQQgghxDh40CGEEEIIIYQYBw86FvH5fGLuuro6Mbfk3JJuaT+bq3Wzt3o/m6t1s7d6P5urdevaW9rP5u5286BjEdWfxp0tJOeWbsLm5rgl0bkJm5vjlkTnJmxujlsSnfchm7vbzYOORRKJhNMj2EJybukmbG6OWxKdm7C5OW5JdG7C5ua4JdF5H7K5u9086Fikvb3d6RFsITm3dBM2N8ctic5N2NwctyQ6N2Fzc9yS6LwP2dzdbscOOqtXr8acOXMwadIkTJo0Caeccgpee+211J8vXboUhYWFvf6ZP39+L0ckEsFNN92EqVOnory8HOeffz52797d6zY7d+7EkiVLUF5ejqlTp+Lmm29GNBpNe97i4mJ7C3UYybmlm7C5OW5JdG7C5ua4JdG5CZub45ZE533I5u52O3bQKS8vx5133ok333wTGzZswIknnoiLLroIH3/8ceo2c+fOxfbt21P/rF27tpfjlltuwbp16/DEE0/glVdeQUdHB5YsWYJ4PA4AiMfjWLJkCTo7O/HKK6/giSeewEsvvYTbbrst7Xl5YlfrVuGXQtfm7K3WrcIvha7N2VutW4VfCl2bs7d6P5u72z1UaI4DctZZZ/X6/7fffjueeOIJvPfeezjqqKMAAHl5eSgpKen3329vb8dvfvMbPPjggzjppJMAAI8++ihmzpyJjRs3Yt68eXjjjTfw6aef4qOPPsLEiRMBAHfeeSeuueYa3H777Rg7dqzleXNzc+0s03Ek55ZuwubmuCXRuQmbm+OWROcmbG6OWxKd9yGbu9vtivfoxONx/OEPf0AoFMLs2bNTX3/nnXdw2GGH4Rvf+AauueYatLS0pP5s69at2LdvH04++eTU1yZOnIjp06fj3XffBQBs3rwZ06dPTx1yAGDevHmIRCLYunVrWjOOHj3a7vIcRXJu6SZsbo5bEp2bsLk5bkl0bsLm5rgl0Xkfsrm73Y49owMAn3zyCU499VSEw2Hk5+fjmWeewYwZMwAA8+fPx8KFC1FRUYEdO3bA4/Fg0aJF2LhxI/Ly8tDc3Izc3Nw+l5krLi5Gc3MzAKC5ubnPa/mKioqQm5ubus1ASF673A33R9hcNeytHjZXC3urh83Vwt7qYfMDM23atAH/zNGDzrRp0/DWW28hGAzixRdfxNKlS7F+/XoceeSROPfcc1O3mzFjBmbNmoWZM2fitddew6JFi5TM1pN4PC72VFxdXd2gD1ImSM4t6Zb2s7laN3ur97O5Wjd7q/ezuVq3rr2l/WzubrejL10bPnw4pk6dilmzZmHFihWYOXMmHnrooX5vW1ZWhvLycnz++ecAgAkTJiAej8Pv9/e6XUtLCyZMmJC6Tc+XuwGA3+9HPB5P3cYqsVgsrdu7Bcm5pZuwuTluSXRuwubmuCXRuQmbm+OWROd9yObudrviPTpJEonEgJd+9vv9aGxsTF2cYNasWRg2bBg2bNiQus3u3buxfft2HHfccQCA2bNnY/v27b0uOb1hwwbk5eVh1qxZac3W0dGR7nJcgeTc0k3Y3By3JDo3YXNz3JLo3ITNzXFLovM+ZHN3ux176dodd9yBU089FYcccgg6Ozvx3HPPYdOmTXj22WfR2dmJu+++G4sWLUJJSQl27NiBH//4xyguLsaCBQsAAAUFBbj44ouxYsUKFBcXY9y4cbjtttswY8YMzJ07FwBw8skn44gjjsCVV14Jj8eDtrY2LF++HJdccklaV1wDgPHjx2c7gRIk55ZuwubmuCXRuQmbm+OWROcmbG6OWxKd9yGbu9vt2DM6Pp8PV1xxBY499licffbZ+OCDD/Dcc8/hlFNOQW5uLrZt24YLL7wQxxxzDJYuXYrDDjsMf/rTnzBmzJiU46677sJLine truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzoAAAKSCAYAAAAaia6DAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsvXt0lNW9//8OAQIESDD3CMaoKVbEw2kVTvELVbFeaoR4NIuqta3aqFiP9VqLxvu0ilTbntZb8VKPeiwNYgSq0otghVIRXVTUSqOGCeQymYyZXM2EzOT3B7+Zk5ALzzwzn/08e/t+reVabRhf89mv2QnZzswzKcFgsB+EEEIIIYQQYhBjnB6AEEIIIYQQQpINDzqEEEIIIYQQ4+BBhxBCCCGEEGIcPOgQQgghhBBCjIMHHUIIIYQQQohx8KBDCCGEEEIIMQ4edAghhBAAs2fPxuzZsy3f3uv1IjMzE8uWLROcihBCiF140CGEEBI3L7/8Mm6++WacffbZmDFjBjIzM3HZZZeNePv29nb8+Mc/xtlnn41jjz0WeXl5OOaYY3DaaafhkUceQVdXl6X7veaaa5CZmYnMzEz861//StZyCCGEGMhYpwcghBCiHytXrsT777+PyZMno7CwEB0dHaPevrW1Fc888wy+8pWv4IwzzkB2djba29vx17/+Fbfeeiv+53/+Bxs3bkRGRsaIjg0bNuC5557D5MmT0dnZmewlYd26dUl3EkIIcQ4edAghhMTNT3/6Uxx++OE46qijsGXLFpx77rmj3n769Omoq6vDuHHjhvzZFVdcgd///vd44okncOONNw777/t8Pvzwhz/E+eefj6amJmzdujUp6xhIcXFx0p2EEEKcgy9dI4QQEjcLFy7E0UcfjZSUFEu3T01NHfaQAwBLliwBAHzyyScj/vv/9V//hXHjxuFnP/tZ/MMCePPNN2Pvp6mpqcF3v/tdHH300Zg2bRree+89ACO/R6ejowO33norjjvuOOTl5eGkk07Cr3/9a/T39494fz09PfjVr36Fr3/96zj88MNRWFiIU045BU899dSw/96rr76KJUuW4Nhjj0Vubi5mzpyJM888Ew8++KCt9RJCCOEzOoQQQhzmtddeAwAcf/zxw/75U089hT/+8Y9YvXo1pk2bltB91dbWYtGiRZg5cyaWLl2Kjo4OTJo0acTbh0IhLFmyBO+++y6OO+44lJeXo729HT/72c9GfFapo6MDZWVleOedd3DCCSfgoosuAgD85S9/wQ033IC3334bjz76aOz2v/3tb3HdddchNzcXZ555JnJychAIBLB79248/fTTIz7LRQghZHR40CGEEKKMvr4+rFy5EsCB9+1s27YNu3btwsKFC4e9mMHHH3+MyspKfPvb38aZZ56Z8P3//e9/x4033ojbb7/d0u1//etf491338U3v/lNPPfccxgz5sALIa6//nqccsopw/47t956K9555x3cdddduO6662JfD4VCuOSSS/DCCy9g8eLFOPvsswEATz/9NMaPH48tW7YgNzd3kCsQCNhYJSGEEIAvXSOEEKKQvr4+rFixAitWrMBvfvMb7Nq1C9/61rfw/PPPY8KECUNue+WVVyIrKws//elPk3L/ubm5+NGPfmT59s8//zxSUlJw9913xw45AHDEEUfgyiuvHHL71tZWvPDCCzjhhBMGHXIAIC0tDXfccQcAYPXq1YP+bOzYscO+tC8rK8vyrIQQQgbDZ3QIIYQoY8KECQgGg+jv70dTUxM2b96Me+65B6eeeirWrFmDI488MnbbBx54AO+++y6qq6sxderUpNz/8ccfj7S0NEu37ejowKeffor8/HyUlJQM+fOTTz55yNfeeecd9PX1YcyYMbjvvvuG/HlfXx8ADLo0dnl5OSorKzFv3jycd955mD9/PubNm4f8/HyryyKEEDIMPOgQQghRTkpKCgoKCnDhhReipKQEp59+Om688Ua8+OKLAIB//OMfeOihh/D9738fX//615N2vwe/NGw02tvbAQA5OTmWXZ999hkAYOfOndi5c+eI7oGXx77mmmuQk5ODp556Ck888QQef/xxAMBJJ52EO+64AwsWLLA8MyGEkP+DL10jhBDiKCeeeCIyMjKwdevW2BXJ3n//ffT19WHVqlWxDwiN/hO9CMDcuXORmZmJDRs2WL4vq1eJAxB7Fsnv9w/7583NzSP+O1dccQWCweCI/0Sv9BZl6dKl2LhxI2pra7F27VpUVFTgH//4B8rLy/Hxxx9bnpkQQsj/wWd0CCGEOEpHRwc6OjowceLE2EHkmGOOwSWXXDLs7f/4xz/C5/NhyZIlmDp1Ko444giRuaZMmYKjjjoKtbW1+Pjjj3HMMccM+vPhrrp24oknYsyYMdi2bZut+5w6dSpOO+00nHbaaZgyZQoeeugh/OlPfxpy34QQQg4NDzqEEELE+eCDD3D00UcPueBAb28vbr75ZkQiEZxxxhmxr8+bNw/z5s0b1nXOOefA5/Phtttuw5e+9CXRuS+++GLce++9uOOOOwZdda2uri72ErOBZGdnY+nSpXjhhRdw33334eabb8bYsYP/qq2vr0dXV1ds9jfeeAMLFy4c8myTz+cDgFEvf00IIWRkeNAhhBASNxs2bMAf/vAHAP/3Eq4dO3Zg2bJlsdsM/KyYZ599Fv/7v/+LefPmYcaMGcjIyEBjYyM2bdoEn8+Ho48+Gj/5yU/ULsIC11xzDf7whz/glVdewYIFC3D66aejvb0dL730Er72ta/h1VdfHfLvPPDAA/j000+xYsUKrF69GvPnz0deXh58Ph8+/vhjvP322/jJT34SO+hccsklSE9Px4knnogjjjgCKSkpeOedd7Bt2zYUFxejrKxM9bIJIcQIeNAhhBASN7t27cILL7ww6Gt1dXWoq6uL/f+BB52ysjJ0dXXh7bffxvbt29HZ2YkpU6bg2GOPxQ9+8ANcfvnlSE9PVza/VdLS0lBdXY37778fL730Eh577DEcccQRuPHGG3HuuecOe9CZMmUKNmzYgGeffRZVVVXYsGEDenp6kJOTg6KiItx5550477zzYre/66678Prrr2PXrl34y1/+grFjx2L69Om45ZZbcOWVVyIjI0PlkgkhxBhSgsFgv9NDEEIIIYQQQkgy4VXXCCGEEEIIIcbBgw4hhBBCCCHEOHjQIYQQQgghhBgHDzqEEEIIIYQQ4+BBhxBCCCGEEGIcPOgQQgghhBBCjIMHHUIIIYQQQohx8KBjEZ/PJ+auqakRc0vOLemW9rO5Wjd7q/ezuVo3e6v3s7lat669pf1s7m43DzoWycrKcnoEW0jOLd2Ezc1xS6JzEzY3xy2Jzk3Y3By3JDrvQzZ3t5sHHYtEIhGnR7CF5NzSTdjcHLckOjdhc3PckujchM3NcUui8z5kc3e7edCxSFtbm9Mj2EJybukmbG6OWxKdm7C5OW5JdG7C5ua4JdF5H7K5u92OHXRWrVqF+fPnY8aMGZgxYwa+8Y1vYOPGjbE/X7ZsGTIzMwf9c/rppw9yhEIh3HzzzTjqqKNQWFiIb33rW6ivrx90m71792Lp0qUoLCzEUUcdhR/96Efo7e2Ne96cnBx7C3UYybmlm7C5OW5JdG7C5ua4JdG5CZub45ZE533I5u52O3bQKSwsxN1334033ngDmzZtwsKFC3HxxRfj/fffj93mlFNOwe7du2P/VFVVDXIsX74c69evx5NPPolXXnkFHR0dWLp0KcLhMAAgHA5j6dKl6OzsxCuvvIInn3wS69atw2233Rb3vDyxq3Wr8Euha3P2VutW4ZdC1+bsrdatwi+Frs3ZW72fzd3tHis0xyE555xzBv3/22+/HU8++STefvttHH/88QCAtLQ05OXlDfvvt7W14dlnn8XDDz+MU089FQDw+OOPY/bs2di8eTMWLVqE119/Hf/85z+xa9cuTJ8+HQBw991349prr8Xtt9+OqVOnWp43NTXVzjIdR3Ju6SZsbo5bEp2bsLk5bkl0bsLm5rgl0Xkfsrm73a54j044HMaLL76Irq4uzJ07N/b1bdu24ZhjjsFXv/pVXHvttfD7/bE/27lzJ/bv34/TTjst9rXp06dj5syZeOuttwAA27dvx8yZM2OHHABYtGgRQqEQdu7cGdeMkydPtrs8R5GcW7oJm5vjlkTnJmxujlsSnZuwuTluSXTeh2zubrdjz+gAwAcffIAzzjgDPT09SE9Px3PPPYdZs2YBAE4//XSce+65KCoqQl1dHTweDxYvXozNmzcjLS0Nzc3NSE1NHXKZuZycHDQ3NwMAmpubh7yWLysrC6mpqbHbjITktcvdcH+EzVXD3uphc7Wwt3rYXC3srR42PzQlJSUj/pmjB52SkhK8+eabaG9vx8svv4xly5Zhw4YNOO6443D++efHbjdr1izMmTMHs2fPxsaNG7F48WIlsw0kHA6LPRVXU1Mz6oOUCJJzS7ql/Wyu1s3e6v1srtbN3ur9bK7WrWtvaT+bu9vt6EvXxo8fj6OOOgpz5szBnXfeidmzZ+ORRx4Z9rYFBQUoLCzEp59+CgDIzc1FOBxGIBAYdDu/34/c3NzYbQa+3A0AAoEAwuFw7DZW6evri+v2bkFybukmbG6OWxKdm7C5OW5JdG7C5ua4JdF5H7K5u92ueI9OlEgkMuKlnwOBABobG2MXJ5gzZw7GjRuHTZs2xW5TX1+P3bt3Y968eQCAuXPnYvfu3YMuOb1p0yakpaVhzpw5cc3W0dER73JcgeTc0k3Y3By3JDo3YXNz3JLo3ITNzXFLovM+ZHN3ux176dpdd92FM844A4cffjg6OzuxZs0abNmyBb///e/R2dmJ+++/H4sXL0ZeXh7q6upwzz33ICcnB6WlpQCAjIwMXHLJJbjzzjuRk5ODadOm4bbbbsOsWbNwyimnAABOO+00fPnLX8ZVV10Fj8eD1tZW3HHLine truncated
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
@@ -332,7 +332,7 @@
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
@@ -342,18 +342,18 @@
}
],
"source": [
"points = [2, 6, 7]\n",
"points = range(2, 8)\n",
"show(pct2, mph2, xlabel='Grade (percent)') \n",
"plt.plot(points, points, 'gD-', lw=2);"
"plt.plot(points, points, 'gD:', lw=2);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"My guess is confirmed: the green line is where grade = speed, the red and blue lines are best-fit polynomials, and if I interpret \"regularly\" to mean \"about half the time,\" then at 6% grade the best-fit line and 4/8 rides are above the diamond at (6,6), but not so at 7%. \n",
"The green dotted line is where grade = speed, the red and blue lines are best-fit polynomials, and if I interpret \"regularly\" to mean \"around half the time,\" then both best-fit lines are above the diamond at 6%, but both are below the diamond for 7%, so my guess is confirmed: my hill-index is 6.\n",
"\n",
"Note that the original publication h-index is based on cumulative totals, so it can never decrease, but the Hill-index is based on an average so it can (and sadly, often does) decrease as you grow older."
"Note that the original h-index for publications is based on cumulative totals, so it can never decrease, but the Hill-index is based on an average so it can (and sadly, often does) decrease as you grow older."
]
},
{
@@ -364,7 +364,7 @@
"\n",
"# Eddington Number\n",
"\n",
"The British physicist Sir Arthur Eddington (1882-1944) was a pre-Strava bicyclist who favored this metric:\n",
"Speaking of h-numbers, the physicist Sir Arthur Eddington (1882-1944) was a pre-Strava bicyclist who favored this metric:\n",
"\n",
"> *Your [Eddington Number](https://www.triathlete.com/2011/04/training/measuring-bike-miles-eddington-number_301789) is the maximum integer**&nbsp;e** such that you have bicycled at least**&nbsp;e** miles on at least**&nbsp;e** days.*\n",
"\n",
@@ -379,7 +379,7 @@
{
"data": {
"text/plain": [
"54"
"56"
]
},
"execution_count": 12,
@@ -388,10 +388,11 @@
}
],
"source": [
"def Eddington(distances):\n",
" \"Eddington number: max integer e such that there are e or more distances >= e.\"\n",
" def at_least(e): return sum(d >= e for d in distances) >= e\n",
" return max(filter(at_least, range(len(distances) + 1)))\n",
"def Eddington(distances) -> int:\n",
" \"Eddington number: the maximum integer e such that you have bicycled at least e on at least e days.\"\n",
" return max(e for e in range(300) if days_at_least(e, distances) >= e)\n",
"\n",
"def days_at_least(e, distances) -> int: return sum(d >= e for d in distances)\n",
"\n",
"Eddington(mls)"
]
@@ -400,9 +401,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"My **Eddington Number is 54**: I've done at least 54 miles on at least 54 days. This is a bit above [the mean for Strava users](https://swinny.net/Cycling/-4687-Calculate-your-Eddington-Number). Eddington was about my age when he died with a number of **77**, and his available roads, bicycles, and navigation aids were not nearly as nice as mine, so good for him.\n",
"My **Eddington Number is 56**: I've done at least 56 miles on at least 56 days. This is a bit above [the mean for Strava users](https://swinny.net/Cycling/-4687-Calculate-your-Eddington-Number). Eddington was 62 years old when he died with a number of **77**, and his available roads, bicycles, and navigation aids were not nearly as nice as mine, so good for him.\n",
"\n",
"If I wanted a bigger number, I could use kilometers:"
"How many more rides would I need to improve my number? Obviously, for anyone to improve from, say, 56 to 60 they need at least 4 more rides. But if some of their past rides were, say, 58 or 59 miles, then those counted for an Eddington number of 55 but they wouldn't count for 60; thus more than 4 rides would be needed. Here is a table of the number of rides I would need&mdash;what I'll call the *gap*&mdash;for increasingly ambitious Eddington numbers:"
]
},
{
@@ -411,28 +412,48 @@
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"77"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
"name": "stdout",
"output_type": "stream",
"text": [
"Dist Days Gap\n",
"---- ---- ---\n",
" 56 56 0\n",
" 57 53 4\n",
" 58 50 8\n",
" 59 44 15\n",
" 60 43 17\n",
" 61 37 24\n",
" 62 35 27\n",
" 63 33 30\n",
" 64 31 33\n",
" 65 28 37\n",
" 66 26 40\n",
" 67 22 45\n",
" 68 21 47\n",
" 69 16 53\n",
" 70 16 54\n"
]
}
],
"source": [
"kms = [m * 5280 * 12 * 2.54 / 100000 for m in mls]\n",
"Eddington(kms)"
"def Egaps(distances, rows):\n",
" \"\"\"Print the number of days doing various distances, and the Eddington gap.\"\"\"\n",
" print('Dist Days Gap')\n",
" print('---- ---- ---')\n",
" for dist in rows:\n",
" days = days_at_least(dist, distances)\n",
" print(f'{dist:4} {days:4} {dist - days:3}')\n",
" \n",
"Egaps(mls, range(56, 71))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"My **metric Eddington Number is 77**.\n",
"I'd like to get my Eddington number to meet or beat my age. If I really concentrate on long rides and do one 70+ mile ride every 2.5 weeks in 2020 and 2021, I can just barely get to Eddington number 65 at age 65; after that I'll have to do no more than six 70+ mile rides each year up until age 70. That sounds tough, but doable.\n",
"\n",
"How many more rides would I need to improve my numbers? Obviously, for anyone to improve from 54 to 55 they need at least 1 more ride, but if some of their previous rides are between 54 and 55 miles, they won't count towards an Eddington number of 55, so more than one ride would be needed. Here is a table of the number of rides I would need to improve&mdash;what I'll call the *gap*&mdash;for increasingly ambitious numbers (measured in both miles and kilometers):"
"An easier way to get a bigger Eddington number is to use kilometers rather than miles:"
]
},
{
@@ -441,44 +462,19 @@
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mls Days Gap\n",
"--- ---- ---\n",
" 54 54 0\n",
" 55 52 3\n",
" 56 51 5\n",
" 57 48 9\n",
" 58 45 13\n",
" 59 40 19\n",
" 60 39 21\n",
" 61 33 28\n",
" 62 30 32\n",
" 63 28 35\n",
" 64 26 38\n",
" 65 24 41\n",
" 66 23 43\n"
]
"data": {
"text/plain": [
"80"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def Egaps(distances, rows, unit='Mls'):\n",
" \"\"\"Print the number of days doing various distances, and the Eddington gap.\"\"\"\n",
" print(f'{unit} Days Gap')\n",
" print(f'--- ---- ---')\n",
" for dist in rows:\n",
" days = sum(d >= dist for d in distances)\n",
" print(f'{dist:3} {days:3} {dist - days:2}')\n",
" \n",
"Egaps(mls, range(54, 67))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"OK, if I do one 65 mile ride every 3 weeks, I could have my Eddington number match my age before I turn 65."
"kms = [m * 5280 * 12 * 2.54 / 100 / 1000 for m in mls]\n",
"Eddington(kms)"
]
},
{
@@ -490,27 +486,41 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Kms Days Gap\n",
"--- ---- ---\n",
" 77 79 -2\n",
" 78 77 1\n",
" 79 76 3\n",
" 80 75 5\n",
" 81 72 9\n",
" 82 64 18\n",
" 83 63 20\n",
" 84 58 26\n",
" 85 57 28\n",
" 86 56 30\n",
" 87 54 33\n",
" 88 53 35\n",
" 89 52 37\n",
" 90 51 39\n"
"Dist Days Gap\n",
"---- ---- ---\n",
" 80 80 0\n",
" 81 77 4\n",
" 82 69 13\n",
" 83 68 15\n",
" 84 63 21\n",
" 85 62 23\n",
" 86 61 25\n",
" 87 59 28\n",
" 88 58 30\n",
" 89 57 32\n",
" 90 56 34\n",
" 91 54 37\n",
" 92 53 39\n",
" 93 50 43\n",
" 94 47 47\n",
" 95 44 51\n",
" 96 43 53\n",
" 97 40 57\n",
" 98 37 61\n",
" 99 35 64\n",
" 100 35 65\n"
]
}
],
"source": [
"Egaps(kms, range(77, 91), 'Kms')"
"Egaps(kms, range(80, 101))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"My **metric Eddington Number is 80**, and I should be able to get to 90 in two years, and 100 in four years, assuming one 100+ km ride every three weeks."
]
}
],
+19
View File
@@ -1,3 +1,22 @@
# 2020, Eddington rides only
Ride Sun, 1/26/2020 Los Gatos / Bay 5:09:15 58.15 mi 1,286 ft
# 2019, Eddington rides only
Ride Sun, 6/2/2019 The Sequoia 6:40:43 77.51 mi 6,467 ft
Ride Sat, 6/8/2019 Morning Ride 2:53:08 34.42 mi 1,824 ft
Ride Sat, 6/15/2019 Morning Ride 2:29:38 29.98 mi 1,785 ft
Ride Fri, 7/5/2019 Crystal Springs 4:30:55 64.05 mi 1,965 ft
Ride Sun, 8/18/2019 Afternoon Ride 2:06:52 27.14 mi 331 ft
Ride Sat, 8/24/2019 Tour de Fox 4:43:39 68.66 mi 2,097 ft
Ride Sat, 8/31/2019 San Gregorio via OLH 5:13:21 65.31 mi 4,026 ft
Ride Fri, 9/6/2019 San Mateo / Bay Trail 4:59:29 68.01 mi 1,158 ft
Ride Sat, 11/16/2019 Canada / Crystal Dam / Sawyer Camp / Bay Trail 5:18:46 66.08 mi 1,972 ft
# 2012 to 2018, rides over 25 miles
Ride Fri, 1/9/2012 Otago Rail Trail 8:00:00 101.00 mi 2,200 ft
Ride Thu, 6/14/2012 Coyote Creek Century with Juliet 8:08:15 100.07 mi 1,513 ft
Ride Sat, 5/13/2017 Morgan Hill iCare Classic 7:27:21 100.05 mi 4,596 ft
Ride Sat, 5/12/2018 ICare Classic, Morgan Hill 6:47:46 91.29 mi 4,160 ft
1 Ride # 2020, Eddington rides only Thu, 6/14/2012 Coyote Creek Century with Juliet 8:08:15 100.07 mi 1,513 ft
1 # 2020, Eddington rides only
2 Ride
3 # 2019, Eddington rides only
4 Ride
5 Ride
6 Ride
7 Ride
8 Ride
9 Ride
10 Ride
11 Ride
12 Ride
13 # 2012 to 2018, rides over 25 miles
14 Ride
15 Ride
16 Ride
17 Ride
18 Ride
19 Ride
20 Ride Thu, 6/14/2012 Coyote Creek Century with Juliet 8:08:15 100.07 mi 1,513 ft
21 Ride Sat, 5/13/2017 Morgan Hill iCare Classic 7:27:21 100.05 mi 4,596 ft
22 Ride Sat, 5/12/2018 ICare Classic, Morgan Hill 6:47:46 91.29 mi 4,160 ft
+56 -64
View File
@@ -1,64 +1,56 @@
Alma Mountain Charlie, 3.12, 875, 31:49
Alpine Westridge, 0.76, 99, 3:26, 3:29, 3:43
Alpine last kicker, 0.39, 114, 3:11, 3:36, 5:19
Arastradero, 1.19, 193, 6:41, 7:49, 7:55
Bring it On Home, 10.81, 237, 37:19
Cabrillo Hmy S, 0.46, 153, 4:31
Canada South Interval, 1.42, 54, 4:50, 5:08, 5:20
Canada to College, 1.37, 119, 5:55, 6:23, 6:35
Canon, 0.90, 295, 11:05, 11:56
Canon to No Cycling, 0.75, 198, 5:14, 5:41
El Camino, 0.50, 15, 2:11, 2:19, 2:22
Foothill Arastradero, 1.13, 37, 3:31, 3:44, 3:51
Foothill Homestead, 1.22, 126, 5:31, 6:36, 6:53
Foothill Magdalena, 1.66, 44, 5:51, 6:21, 6:29
Foothill Miramonte, 1.64, 39, 4:55, 5:29, 5:43
Haskins, 1.51, 566, 17:48, 18:43, 18:48
Highway 9, 0.56, 260, 8:33
Highway 9 Mantalvo, 0.45, 35, 1:36, 1:48, 1:53
Huddart, 0.92, 385, 10:15, 11:18, 12:55
Joaquin, 0.33, 253, 6:19, 7:27
Kaboom Portola Rd, 0.67, 102, 3:14, 3:26, 3:33
Kings half way, 2.89, 820, 27:26, 29:45, 32:43
Kings to Skeggs, 1.10, 273, 9:08, 10:39, 10:54
Limantour Spit, 0.47, 303, 5:20
Limantour steepest, 0.20, 159, 5:41
Lobitas Creek, 0.96, 430, 12:15, 12:07
Lower Redwood Gulch, 1.03, 474, 13:00
Mapache, 0.24, 111, 2:52, 2:56
Mt Eden climb, 1.02, 272, 8:32, 9:43, 11:59
Mt Eden to Archery, 0.54, 180, 5:20, 5:39, 6:12
Old La Honda, 2.98, 1255, 28:49, 34:04, 36:45
Old La Honda Mile 1, 0.99, 370, 8:02, 9:36, 9:51
Page Mill to Moody, 0.21, 112, 2:50, 2:55
Page Mill to Ventana, 0.47, 196, 4:54, 5:32, 6:05
Peach Hill, 0.60, 248, 7:30, 7:50
Pescadero Bean Hollow, 2.77, 51, 8:07, 10:48
Pomponio Creek, 0.38, 122, 2:47, 2:56, 3:16
Red Hill KOM, 0.34, 161, 4:15
Redwood Gulch hits, 0.18, 151, 3:36
Redwood Gulch wall, 0.43, 258, 6:39
Sand Gill Sharon-top, 0.85, 136, 4:04, 4:16, 4:24
Sand Hill 280 to horse, 0.49, 95, 2:34, 2:44, 2:51
Sand Hill Alpine to 280, 1.67, 180, 7:02, 7:40, 8:02
Stair Step, 0.32, 175, 5:25
Stanford Ave, 0.63, 85, 3:14, 3:32, 3:49
Stevens Canyon, 2.85, 127, 12:51, 13:46, 18:12
Stevens Country Park, 1.22, 112, 5:43, 5:59, 7:00
Stirrup Wall, 0.17, 125, 3:47, 4:33
Stirrup to Moon, 0.36, 159, 3:41, 6:07
Summit Rd Climb, 0.60, 275, 8:00
Tepa, 0.58, 248, 6:34, 7:14, 8:21
The Boneyard, 1.48, 135, 6:05, 6:36, 7:00
Try not to fall back, 0.71, 410, 12:45
Tunitas Knoll to Star, 1.55, 339, 12:28, 12:56, 13:51
Tunitas flattens, 0.42, 166, 3:16, 3:25, 3:51
Tunitas lower climb, 1.30, 421, 13:34, 16:00, 17:33
Tunitas steep, 1.20, 599, 16:16, 17:48, 20:44
Vickrey Fruitvale, 0.99, 68, 3:41, 3:58, 4:27
West Alpine switchback, 0.78, 322, 8:56, 10:52, 11:56
Westridge, 0.68, 385, 8:28, 9:52, 10:19
Westridge 3min, 0.37, 240, 4:41, 5:35, 6:31
Westridge Hill 1, 0.51, 104, 3:19, 3:58
Westridge Hill 2, 0.51, 166, 4:42, 5:10, 5:21
Woodside Climb, 1.71, 295, 8:05, 9:00, 9:35
Alma Mountain Charlie,          3.12,  875, 31:49
Alpine Westridge,               0.76,   99, 3:26, 3:29, 3:43
Alpine last kicker,             0.39,  114, 3:11, 3:36, 5:19
Arastradero,                    1.19,  193, 6:41, 7:49, 7:55
Cabrillo Hmy S,                 0.46,  153, 4:31
Canada to College,              1.37,  119, 5:55, 6:23, 6:35
Canon,                          0.90,  295, 11:04, 11:55
Canon to No Cycling,            0.75,  198, 5:14, 5:41
Foothill Homestead,             1.22,  126, 5:31, 6:36, 6:53
Haskins,                        1.51,  566, 17:47, 18:43, 18:47
Highway 9,                      0.56,  260, 8:33
Highway 9 Mantalvo,             0.45,   35, 1:36, 1:48, 1:53
Huddart,                        0.92,  385, 10:15, 11:18, 12:55
Joaquin,                        0.33,  253, 6:19, 7:27
Kaboom Portola Rd,              0.67,  102, 3:14, 3:26, 3:33
Kings half way,                 2.89,  820, 27:26, 29:45, 32:43
Kings to Skeggs,                1.10,  273, 9:07, 10:39, 10:53
Limantour Spit,                 0.47,  303, 5:19
Limantour steepest,             0.20,  159, 5:41
Lobitas Creek,                  0.96,  430, 12:15, 12:07
Lower Redwood Gulch,            1.03,  474, 13:00
Mapache,                        0.24,  111, 2:52, 2:55
Mt Eden climb,                  1.02,  272, 8:32, 9:43, 11:59
Mt Eden to Archery,             0.54,  180, 5:19, 5:39, 6:12
Old La Honda,                   2.98, 1255, 28:49, 34:03, 36:44
Old La Honda Mile 1,            0.99,  370, 8:02, 9:36, 9:51
Page Mill to Moody,             0.21,  112, 2:50, 2:55
Page Mill to Ventana,           0.47,  196, 4:54, 5:32, 6:05
Peach Hill,                     0.60,  248, 7:30, 7:50
Pomponio Creek,                 0.38,  122, 2:47, 2:55, 3:16
Red Hill KOM,                   0.34,  161, 4:15
Redwood Gulch hits,             0.18,  151, 3:36
Redwood Gulch wall,             0.43,  258, 6:39
Sand Gill Sharon-top,           0.85,  136, 4:03, 4:16, 4:24
Sand Hill 280 to horse,         0.49,   95, 2:34, 2:44, 2:51
Sand Hill Alpine to 280,        1.67,  180, 7:02, 7:39, 8:02
Stair Step,                     0.32,  175, 5:25
Stanford Ave,                   0.63,   85, 3:14, 3:32, 3:49
Stevens Country Park,           1.22,  112, 5:42, 5:58, 7:00
Stirrup Wall,                   0.17,  125, 3:47, 4:33
Stirrup to Moon,                0.36,  159, 3:41, 6:07
Summit Rd Climb,                0.60,  275, 8:00
Tepa,                           0.58,  248, 6:34, 7:14, 8:21
The Boneyard,                   1.48,  135, 6:05, 6:36, 7:00
Try not to fall back,           0.71,  410, 12:45
Tunitas Knoll to Star,          1.55,  339, 12:28, 12:56, 13:51
Tunitas flattens,               0.42,  166, 3:16, 3:25, 3:51
Tunitas lower climb,            1.30,  421, 13:34, 16:00, 17:33
Tunitas steep,                  1.20,  599, 16:15, 17:47, 20:44
Vickrey Fruitvale,              0.99,   68, 3:41, 3:58, 4:26
West Alpine switchback,         0.78,  322, 8:56, 10:52, 11:55
Westridge,                      0.68,  385, 8:28, 9:52, 10:18
Westridge 3min,                 0.37,  240, 4:41, 5:35, 6:31
Westridge Hill 1,               0.51,  104, 3:19, 3:58
Westridge Hill 2,               0.51,  166, 4:42, 5:10, 5:20
Woodside Climb,                 1.71,  295, 8:05, 9:00, 9:35
1 Alma Mountain Charlie, 3.12, 875, 31:49 Alma Mountain Charlie,          3.12,  875, 31:49
2 Alpine Westridge, 0.76, 99, 3:26, 3:29, 3:43 Alpine Westridge,               0.76,   99, 3:26, 3:29, 3:43
3 Alpine last kicker, 0.39, 114, 3:11, 3:36, 5:19 Alpine last kicker,             0.39,  114, 3:11, 3:36, 5:19
4 Arastradero, 1.19, 193, 6:41, 7:49, 7:55 Arastradero,                    1.19,  193, 6:41, 7:49, 7:55
5 Bring it On Home, 10.81, 237, 37:19 Cabrillo Hmy S,                 0.46,  153, 4:31
6 Cabrillo Hmy S, 0.46, 153, 4:31 Canada to College,              1.37,  119, 5:55, 6:23, 6:35
7 Canada South Interval, 1.42, 54, 4:50, 5:08, 5:20 Canon,                          0.90,  295, 11:04, 11:55
8 Canada to College, 1.37, 119, 5:55, 6:23, 6:35 Canon to No Cycling,            0.75,  198, 5:14, 5:41
9 Canon, 0.90, 295, 11:05, 11:56 Foothill Homestead,             1.22,  126, 5:31, 6:36, 6:53
10 Canon to No Cycling, 0.75, 198, 5:14, 5:41 Haskins,                        1.51,  566, 17:47, 18:43, 18:47
11 El Camino, 0.50, 15, 2:11, 2:19, 2:22 Highway 9,                      0.56,  260, 8:33
12 Foothill Arastradero, 1.13, 37, 3:31, 3:44, 3:51 Highway 9 Mantalvo,             0.45,   35, 1:36, 1:48, 1:53
13 Foothill Homestead, 1.22, 126, 5:31, 6:36, 6:53 Huddart,                        0.92,  385, 10:15, 11:18, 12:55
14 Foothill Magdalena, 1.66, 44, 5:51, 6:21, 6:29 Joaquin,                        0.33,  253, 6:19, 7:27
15 Foothill Miramonte, 1.64, 39, 4:55, 5:29, 5:43 Kaboom Portola Rd,              0.67,  102, 3:14, 3:26, 3:33
16 Haskins, 1.51, 566, 17:48, 18:43, 18:48 Kings half way,                 2.89,  820, 27:26, 29:45, 32:43
17 Highway 9, 0.56, 260, 8:33 Kings to Skeggs,                1.10,  273, 9:07, 10:39, 10:53
18 Highway 9 Mantalvo, 0.45, 35, 1:36, 1:48, 1:53 Limantour Spit,                 0.47,  303, 5:19
19 Huddart, 0.92, 385, 10:15, 11:18, 12:55 Limantour steepest,             0.20,  159, 5:41
20 Joaquin, 0.33, 253, 6:19, 7:27 Lobitas Creek,                  0.96,  430, 12:15, 12:07
21 Kaboom Portola Rd, 0.67, 102, 3:14, 3:26, 3:33 Lower Redwood Gulch,            1.03,  474, 13:00
22 Kings half way, 2.89, 820, 27:26, 29:45, 32:43 Mapache,                        0.24,  111, 2:52, 2:55
23 Kings to Skeggs, 1.10, 273, 9:08, 10:39, 10:54 Mt Eden climb,                  1.02,  272, 8:32, 9:43, 11:59
24 Limantour Spit, 0.47, 303, 5:20 Mt Eden to Archery,             0.54,  180, 5:19, 5:39, 6:12
25 Limantour steepest, 0.20, 159, 5:41 Old La Honda,                   2.98, 1255, 28:49, 34:03, 36:44
26 Lobitas Creek, 0.96, 430, 12:15, 12:07 Old La Honda Mile 1,            0.99,  370, 8:02, 9:36, 9:51
27 Lower Redwood Gulch, 1.03, 474, 13:00 Page Mill to Moody,             0.21,  112, 2:50, 2:55
28 Mapache, 0.24, 111, 2:52, 2:56 Page Mill to Ventana,           0.47,  196, 4:54, 5:32, 6:05
29 Mt Eden climb, 1.02, 272, 8:32, 9:43, 11:59 Peach Hill,                     0.60,  248, 7:30, 7:50
30 Mt Eden to Archery, 0.54, 180, 5:20, 5:39, 6:12 Pomponio Creek,                 0.38,  122, 2:47, 2:55, 3:16
31 Old La Honda, 2.98, 1255, 28:49, 34:04, 36:45 Red Hill KOM,                   0.34,  161, 4:15
32 Old La Honda Mile 1, 0.99, 370, 8:02, 9:36, 9:51 Redwood Gulch hits,             0.18,  151, 3:36
33 Page Mill to Moody, 0.21, 112, 2:50, 2:55 Redwood Gulch wall,             0.43,  258, 6:39
34 Page Mill to Ventana, 0.47, 196, 4:54, 5:32, 6:05 Sand Gill Sharon-top,           0.85,  136, 4:03, 4:16, 4:24
35 Peach Hill, 0.60, 248, 7:30, 7:50 Sand Hill 280 to horse,         0.49,   95, 2:34, 2:44, 2:51
36 Pescadero Bean Hollow, 2.77, 51, 8:07, 10:48 Sand Hill Alpine to 280,        1.67,  180, 7:02, 7:39, 8:02
37 Pomponio Creek, 0.38, 122, 2:47, 2:56, 3:16 Stair Step,                     0.32,  175, 5:25
38 Red Hill KOM, 0.34, 161, 4:15 Stanford Ave,                   0.63,   85, 3:14, 3:32, 3:49
39 Redwood Gulch hits, 0.18, 151, 3:36 Stevens Country Park,           1.22,  112, 5:42, 5:58, 7:00
40 Redwood Gulch wall, 0.43, 258, 6:39 Stirrup Wall,                   0.17,  125, 3:47, 4:33
41 Sand Gill Sharon-top, 0.85, 136, 4:04, 4:16, 4:24 Stirrup to Moon,                0.36,  159, 3:41, 6:07
42 Sand Hill 280 to horse, 0.49, 95, 2:34, 2:44, 2:51 Summit Rd Climb,                0.60,  275, 8:00
43 Sand Hill Alpine to 280, 1.67, 180, 7:02, 7:40, 8:02 Tepa,                           0.58,  248, 6:34, 7:14, 8:21
44 Stair Step, 0.32, 175, 5:25 The Boneyard,                   1.48,  135, 6:05, 6:36, 7:00
45 Stanford Ave, 0.63, 85, 3:14, 3:32, 3:49 Try not to fall back,           0.71,  410, 12:45
46 Stevens Canyon, 2.85, 127, 12:51, 13:46, 18:12 Tunitas Knoll to Star,          1.55,  339, 12:28, 12:56, 13:51
47 Stevens Country Park, 1.22, 112, 5:43, 5:59, 7:00 Tunitas flattens,               0.42,  166, 3:16, 3:25, 3:51
48 Stirrup Wall, 0.17, 125, 3:47, 4:33 Tunitas lower climb,            1.30,  421, 13:34, 16:00, 17:33
49 Stirrup to Moon, 0.36, 159, 3:41, 6:07 Tunitas steep,                  1.20,  599, 16:15, 17:47, 20:44
50 Summit Rd Climb, 0.60, 275, 8:00 Vickrey Fruitvale,              0.99,   68, 3:41, 3:58, 4:26
51 Tepa, 0.58, 248, 6:34, 7:14, 8:21 West Alpine switchback,         0.78,  322, 8:56, 10:52, 11:55
52 The Boneyard, 1.48, 135, 6:05, 6:36, 7:00 Westridge,                      0.68,  385, 8:28, 9:52, 10:18
53 Try not to fall back, 0.71, 410, 12:45 Westridge 3min,                 0.37,  240, 4:41, 5:35, 6:31
54 Tunitas Knoll to Star, 1.55, 339, 12:28, 12:56, 13:51 Westridge Hill 1,               0.51,  104, 3:19, 3:58
55 Tunitas flattens, 0.42, 166, 3:16, 3:25, 3:51 Westridge Hill 2,               0.51,  166, 4:42, 5:10, 5:20
56 Tunitas lower climb, 1.30, 421, 13:34, 16:00, 17:33 Woodside Climb,                 1.71,  295, 8:05, 9:00, 9:35
Tunitas steep, 1.20, 599, 16:16, 17:48, 20:44
Vickrey Fruitvale, 0.99, 68, 3:41, 3:58, 4:27
West Alpine switchback, 0.78, 322, 8:56, 10:52, 11:56
Westridge, 0.68, 385, 8:28, 9:52, 10:19
Westridge 3min, 0.37, 240, 4:41, 5:35, 6:31
Westridge Hill 1, 0.51, 104, 3:19, 3:58
Westridge Hill 2, 0.51, 166, 4:42, 5:10, 5:21
Woodside Climb, 1.71, 295, 8:05, 9:00, 9:35