Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
lazy-programmer-courses
/
linear-regression
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
0b5cb1c7
authored
Jul 30, 2018
by
Paktalin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
class 11 is done
parent
f42cc00d
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
273 additions
and
0 deletions
3_moores_law.ipynb
3_moores_law.ipynb
0 → 100644
View file @
0b5cb1c7
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"X = []\n",
"Y = []"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"non_decimal = re.compile(r'[^\\d]+')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"for line in open('../csv_files/moore.csv'):\n",
" r = line.split('\\t')\n",
" x = int(non_decimal.sub('', r[2].split('[')[0]))\n",
" y = int(non_decimal.sub('', r[1].split('[')[0]))\n",
" X.append(x)\n",
" Y.append(y)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"X = np.array(X)\n",
"Y = np.array(Y)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(X, Y, edgecolors='k')\n",
"plt.xlabel(\"Year\")\n",
"plt.ylabel(\"Transistor count\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"Y = np.log(Y)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(X, Y, edgecolors='k')\n",
"plt.xlabel(\"Year\")\n",
"plt.ylabel(\"Log of transistor count\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"denominator = X.dot(X) - X.mean() * X.sum()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.3510435733650199"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = ( X.dot(Y) - Y.mean() * X.sum() ) / denominator\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-685.000284381709"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b = ( X.dot(X) * Y.mean() - X.dot(Y) * X.mean() ) / denominator\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"Yhat = a*X + b"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xd4VFX6wPHvmxA6KJiAREhCE0EXC+iqWFh7+aksNiQqosiKoAKCZWUxlMWCgAVBWRTQBDsoYhcbiuJGV5ESiYBAEKR3CCnv7487CZMwM5kM05J5P89zn0zuzL333Eu4Z+457zmvqCrGGGNiV1ykC2CMMSayrCIwxpgYZxWBMcbEOKsIjDEmxllFYIwxMc4qAmOMiXFWERhjTIyzisAYY2KcVQTGGBPjakS6AP5ITEzUtLS0SBfDGGOqlB9++GGzqiZV9LkqURGkpaWRnZ0d6WIYY0yVIiKr/fmcNQ0ZY0yMs4rAGGNinFUExhgT46wiMMaYGGcVgTHGxDirCIwxJkKysmbSsu1xxMXH07LtcWRlzYxIOapE+KgxxlQ3WVkz6TdoKHXPH0CLbh3Yl7eUfoOGApCe3jOsZZGqkKqyc+fOauMIjDHVScu2x7Gvcy9qp3YsXbd/9SLqZM9gVW5OUI4hIj+oaueKPmdNQ8YYEwGrV+ZSq3mHMutqNe/A6pW5YS+LVQTGGBMBqa3akp+3tMy6/LylpLZqG/a+A6sIjDEmAkZnDGfnR0+xf/UitKiQ/asXsfOjp7j0ogvoN2go+zr3osXgWezr3It+g4aGtDKwisAYYyJECw+w5cNnWDOuO1s+fAYtPMCbs9+h7vkDaNTsWG7/YQ71WhxP3fMHMCxjZMjKYVFDxhgTAcMyRnLE5UMP6Sz+89WHuLEgnzEv9qfFjj/5NSmNr1I6svr10PUd2BOBMcaEkLf2fk+dxc0aH8PLEsfLb43gQHwC1/V8lPktTyntOwgVqwiMMcYPvjpwvb1XMlbAU3t/mc5iVa7+ZR7zpt7BdVrEo3Xrc975t7Mw+Tj2r17E3nkTGZ0xPGTnZk1DxhhTAV+DvwCv7w3LGEnd8weUNv/UTu0Irvb+0RnD6TdoKKmn3cATiz/l7NU/s7BGApsefYwWzZsTlzGS1W+NILVVW8ZNGBvSQWY2oMwYYyrga/AX4PW91StzaTF4FhJ/8Du3FhWydnx3ivPz+d9NN3Hca69RoMrYpCYcN24c6TfdGLRyR3xAmYi0EJHPRWSZiCwRkXtc68eKSI6ILBKR2SJyZKjKYIwxweBr8NfqFV7eW5FLYtNkj2MFzm+UCKeeysmvvsr8uvU4XoTMIxpBXGRa60N51ELgXlVtD5wO9BeRDsAnwAmq2hFYDjwYwjIYY8xh8zX4q0adeh7fq1GnHlpczOb3J5SOFYhbkc0Ds0bx4ZaN7P39d9IbNuLm/3uQuHtnh2W8gDchqwhUdb2q/uh6vQtYBhyjqh+raqHrY98BzUNVBmOMCYbRGcPZO29imcFfJR24Bft2s/mDsgPDNn/wFAX7drNl0waOPPsmtn76HO2f+DufzRrFwAP7mAqc3iiReZcNpXbaiUh8DWqndgz5eAFvwtJZLCJpwMnAwnJv3Qq8Fo4yGGNMoNLTe/LNggVMnf4IBXt3k1C3Pn1uuZn09J4MyxjJ1qST2PrpcxRsySPhqObU69CVxpt+AiDuzxU8s2szN6DkiHDJ8efxa/46p//gag9NSiEcL+BNyBukRKQ+8BYwUFV3uq1/CKf5KMvLdn1FJFtEsjdt2hTqYhpjjFdZWTOZ9vJMtGZ9EEFr1mfayzPJyprJ6Izh6G/zaXzBHaTcO4vGF9yB/jaf0Q//i4yU5nyfPYerC/J58ozruaj7cD79/X9cetEFPpubwk5VQ7YACcBHwOBy63sB3wJ1/dlPp06d1BhjwiEzM0vT2rRTiYvTtDbtNDMzSxObJmt8wyRt2mOMpgx5W5v2GKPxDZM0sWmyx23eHjde9fzzVUEXJqboBbc+q6n3z9XU++dq0x5jSvfbICm5zD4bJCVrZmZW0M4FyFY/7rEhCx8VEQFmAFtVdaDb+kuA8cC5qurXV30LHzXGBFNW1kyGZYxk9cpcUlu1ZXTGcNLTe5YZL1CreQfy85ayd95Edm/fRpOr/3VIiOjGt0ZRfGDvwR0XFMD48ZCRAQkJ3LlrN+/f+xbUqFn6ES0qZO247hQXF3ktR7D4Gz4ayj6CLsBNwC8i8pNr3T+Bp4FawCdOXcF3qnpHCMthjDGlfA0OG5YxEmlzdpn2/jptz0a/fd1jiKgW7D+4Ijsb+vSBn3+Gbt1g4kSmHtuexutyylQgJRFF4PQ9hDsbmSc2oMwYE1Natj2OrUknsS/3W7eb/Rk03vQTv69YTnzDJiReek/pE8HmD56ieO8Omlw9/JAnguIvJ7ExNwf+9S946ilo2hQmToTu3QGQuDji6yeSePmgg/t7bwJFuzejxcUhP9eIDygzxphQCySBy+8rlrNn6RdlOnf3LP2C31csJ6FOfRIvvYfaqR1LQzoTL70HiovZ/O7YsiGi745leKeT4PjjYcIEsuo3oNGGDbS8/5+l5Uhs0oziwvwyU00XF+aT2KRZwOUPBZtryBgTFSrbXh5o8veEOvVp7LrZA6U3+61zHqFw3x6PTUDExVOv40WlTUbJjZoxs04Drps7lx3JyVx3xFH8fOm9NGxethwSF0eTqx7w+CSRlTWTPv0GUBhfG1XI27yTPv0GVFj+ULCmIWNMxHnrpJ3sY7K1QJO/x8XF0+JeD/P/jOtOauu2Hvf556sPkTJkNhIXz9WLP2PYZ1Opd2AfjxQXMrN1W3ac2rvScw0dlXQ02/YVkHiZW7PR+xNoVCeBTRvWBXQdy7OmIWNMleE+S6e/o2wDTf6e2tpL/H7rtl5HECc1O4ajl80n87VhjHt/AiuOas4FF/dnept25K5a4bUcvsYKbNm6jcTLBpVthrpsEFu2bvPnkgWVNQ0ZYyJu9cpcWnSr3Cjb1FZt2Ze39JCInIoGZI3OGE6ffgPYEl+bwh1/UuOIptQo2s+4yRNLnz6GZYxk9evOjXz82Edo/8EHHPfaOA4A/YApm1YT//lUpk2dwrCMkV7L4etYN954Y8WRSGFiTwTGmIgLZJStr/l/KqJx8Rx1yV2k3DuLoy65C42LL30vPb0nq3JzKC4qYtUrmfScMJ6TX3uVD+MTOPfK+3l/yNskdR9GcXxNvlmwoMJySI2aZY4lrjEFSc2O8XjOSc2O8fu6BY0/o84ivdjIYmOqt0BH2XoaBVyRpGbNteEZ12tCYooicZqQmKINz7hek5o1L91nh1ZtdTxoIeieI4/U7gm1tWmPMaWjg0tGCMfXru+zHGlt2nncruQzdRo1LXPOdRo1rV4ji4PJOouNqf5CPcq2hEgc8UccOlagaMdGMjMzeav/XTxVUEyLvduZ3uavDNu2mnVb/nQ6i8t1+q554u+oeh8PEBcf7z0xTVH0jCy2piFjTFQo0ySTmxOyEEqpWdvjWIEmCbWod8cdzNqxlf11GnBN+mNkXP0vCi+8G6lZ22MzjtSsDXgfD1BRk1e4zrkiVhEYY6olbzdnPbC/bCetKunb17O0YD+X7t7F+DN7cPktT5Pd/HigpAO3gE3lBpRtencs9WvX9pmg/nD6McLJooaMMdWOr8Fm8bXrku+K8knd9gf//uhZzlr9M99IHA+3SGFxSkdq10go3Vd+3lISmzRhx44dbJz9bzR/L1KrLjUEJj8/xWeC+pLxDO5RSKFORB8IeyIwxkQ9b9/u7+w/gJr1GiISR816DbmzvzMy19e4hKL8vWyfO54+Hz7DRy8OoOMfOdxZqz5nazG9x/zb4zf4J8eNZdrUKaS2aI7ECaktmjNt6hTS03tWOJ4hWpp/fLEnAmNMVPP27X7ajOl8sSCbxCsfLO30nTJjLOB7XMKVx7Rg1NaddPz5I2YBgxsls+24s0nd9JPHcQTu3+A93cQDHc8QTSxqyBgT1bxNJbFp9miS/j7skPVb5zzCMcnJh2wT99t/eejTp+m9czsbRPjnmT35/PRr/JrOwpdApscIF4saMsZERLBn1PTW9FKcv8/j+oK9uw/ppO3y7Rt8MXs0t+3YRtwdd/D1c8/z5Yb/snZ8d+pkzzism3Z6ek8mTxhLnewZQdlfJFjTkDEmaAKdEdQXb00vcbXqlHb6uq9PqFu/9FgThg3n3t9XcAOwIzkZXn8dunThOuC62/sEfJ7lRUuCmUCF7IlARFqIyOciskxElojIPa71jUXkExHJdf1sFKoyGGPCK5DJ4yriLQTzb+d08ZgjoM8tNzshoQfyyd6xlRtq1oQRIzhi5Uro0iWIZ1t9hPKJoBC4V1V/FJEGwA8i8glwCzBPVR8VkQeAB4D7Q1gOY0yYBDJ5XEXS03vyzYIFTJ3+CAV7d5NQtz59brmZSc9O5M7+A8qs73vLzUwaNBAuuAA++wzOOgumTIH27Q/31Kq1kD0RqOp6Vf3R9XoXsAw4BrgKJ6k9rp/dQlUGY0x4BTJ5XEWysmaS+cZsGl/5IClDnJ+Zb8wmK2smk56dyIE9O1Et5sD2LUxq0Rz+8hcnf/Bzz8GXX1ol4IewRA2JSBrwFXACsEZVj3R7b5uqHtI8JCJ9gb4AKSkpnVavXh3ychpj/Odpnhwg6BE0vnIMlyag+f57uP12WLTIyRf8zDOQnBysU62y/I0aCvnMoUB94Aegu+v37eXe31bRPmz2UWOii6/ZQgOZEbRkn562Q0Tjjyg7S2f8EU0VEdVdu1QHDlSNi1NNTladPTuUp13lEA2zj4pIAjAX+EhVx7vW/Qp0VdX1ItIM+EJV2/naj40jMCa6BJom0htfsfi9+95B4ysfPORYp80exZymSbBmDfTrB488AkccEZTzqy4iPo5ARAR4AVhWUgm4zAF6uV73At4JVRmMMaERaJpIb3xFG5VPKJ+4ZxvP//QBc/L3Qf368PXXMGmSVQKHIZQDyroANwHnichPruUy4FHgQhHJBS50/W6MqUKC3Snsq2IpzTGsyrWLPuHTqf24ZPkCxjc+Cn780UJCgyBk4aOq+jUgXt4+P1THNcaE3uiM4c5AsXJNOeMmjA1of4lNkz0ODktsmszojOGMvXsQz9Soz9kbV/JdYioDivYy6OknoVatYJ1STLORxcaYSqtocrbK0uJiNr8/gcTLBh3MGvb+BJJq1yB9zWqu37WNvUWbuUOEj4+oxagRY6r0SN6oU1FvMvCYP+tCuVjUkDGREWgEUGX3JxKnR10+uEwe4Qu63KA/gSqodu+uum5dyMtX3eBn1JA/TwQXcujI30s9rDPGVCPBnjfI1/5q1KlHjQaJJN82iboH9jHkq5fpteBVNojArFnQ7dBxp6GY1yhWeQ0fFZF+wJ1AK2CF21sNgG9U9cbQF89h4aPGhF+wQ0R97e/3FcuR2g25LC6OZ/dsIxWYHF+TB4oOsMPLPSrY5auOghE+OhO4Aifc8wq3pVM4KwFjTGQEO0TU1/7aH9WEmQX7mLtnGwcaN+eK8//BXXUbULOpMzrY09TWwS5fLPPaNKSqO4AdwA0iEg80dX2+vojUV9U1YSqjMSYCgp15y2Nk0NolDGhwBCO2bKSuxDH+rHSe++s1HKiRQGJSKsVfTvLaBOQt0qgqZQaLFhWOIxCRAcCfwCfAe65lbojLZYyJMG/TP5fMKVRZJZFBJfs7evHnzHwzg6d3bGOxKpf1epKnu9zAAVfi+FrNO7D5zz+8DjbT4uKgli+W+dNZPBBop6pbQl0YY0z0CHaI6JZNG2h86UB2fjKZe7bkMRwoqJHghIS2asvefbuo7fb5km/33qa2XrtpAy+/9HLQyhfL/BlZvBanicgYE2PS03uyKjeH4qIiVuXmHNZNNrVVW049sI8f4uJ5BOWLY8/g7MsH81HrYxk14mGv3+59jWIOZvlimT9PBCuBL0TkPSC/ZKWWnT/IGGMAz9NTp191JR+0bsmxH01mQ52G3H7VA7xbp+EhU1R7+3YfzFHM5lAVzj4qIg97Wq+qI0JSIg8sfNSY6ONvPoKz3n+CGQlCva1bWX7++Vy98neW/L7yYCXhx7d4j5WLffuvkL/ho2FJTHO4rCIwJrp4mza6do044s69k9qpHUncs42HP53CFTnzWV6zJsd+/jmceWakix5TglYRiMjnwCEfUtXzAi9e5VhFYEx08TaY689XHyLl3llct/RzHvr8ReoU7Gfi6dfyzwWvkl9cHMESxyZ/KwJ/+giGuL2uDVyNk5jeGBOjvEXytK1RkxdfvpezNq5kYfPj+eclA1iyexvJrX+MUEmNPyqsCFT1h3KrvhGRL0NUHmNMFVB+sFmNokJu/WgSgwvz2b9pFUM6d+PNc29m/7oc69itAvwZUNbYbUkUkYuBo/3Y7kUR2Sgii93WnSQi37mS1GSLyGmHWX5jTAS4DzY7MW8pc/5zB//85WP+PO005j39DG9tX8aaCddQJ3vGYSWuN+HhTx/BKpw+AsFpEloFjFQn8Yyv7c4BdgMvqeoJrnUfAxNU9QNXtrL7VLVrRYW0PgJjos9rU19g75Ah9NqxnT/ja/Dr3XfTdfy4SBfLuAlaH4GqtgykAKr6lYiklV8NNHS9PgL4I5B9G2Mi7L33uH7kCNi5A/r3p9mYMTRr2LDi7UxU8qdpKEFE7haRN13LABFJCPB4A4GxIrIWeAJ4MMD9GGPCoPysn29Nmgw9esD//R/bVeme3IK4yZNp2ek0srJmRrq4JkD+RA1NBhKASa7fb3Kt6xPA8foBg1T1LRG5DngBuMDTB0WkL9AXICUlJYBDGWMOR5lZP69qT7f5L3PegP4Uxcez+OprOO/Lb0i44E5aNLekMFWdP30EP6vqiRWt87JtGjDXrY9gB3CkqqqICLBDVSt8nrQ+AmPCr2SswHENjmLMR89y5ppFfJuUxrA6sLJmrahICmMjjn0LRmKaEkUi0tptx62AogDL9Qdwruv1eYBlkDAmDDwldqnovXUrljM4bwkfvTiAE/5cwYMXD+CGm8fzed6aqEgKU/LEsq9zL1oMnsW+zr3oN2ioNVEFwJ+moaHA5yKyEidyKBXoXdFGIvIK0BVIFJE84GHgduApEakB7MfV9GOMCR1fuX0Bj+8d9dtvLEpI4Livs3ivXRdGnN+XjQ2OYv/qRaWJX4KZtCYQ7nkKAOfn+QMYljHSngoqya+5hkSkFtAOpyLIUdX8CjYJKmsaMiZwvnL7AmXeq5e/l4HvT+C25d+yv1EjehcJX142pMx8QpNdg8M8zTUUzjEDcfHxtBg8C4k/+H1WiwpZO747xUWBNlpUL0ELHxWR/kCWqi5y/d5IRG5T1UkVbGqMiQLepoNY/brTjFPy3nm/fc+ojyfTbNdmJgP9f/+dK9+dy/c+Er9EMilMsFNpxjJ/Oot/UtWTyq37n6qeHNKSubEnAmMCV9ETQf3juzPm16+5Imc+vyamMPiky1j6++dh7fQNhLcZUG0k80HBnHQuTkREXTWGK5F9zcMtoDEmPEZnDPec2GX847T+8kvavfAodSWOcV1u4Mnk9uz44rnS5p9oFuxUmjFNVX0uwFjgDeB8nEif14FxFW0XzKVTp05qjKlYZmaWprVppxIXp2lt2mlmZpbH9e+MfUK1a1dV0A3HHafnpbQ8ZJto4u28jG9Atvpxj/XnieB+nOiefjidxR8DU0NRKRljAucrOig9vafzTfnAARg7FoY9BLVrw5QpNL3tNubF+RNJHhkVnZc5fJahzJhqwldfwKrcHFi4EPr0gcWL4dpr4amnoFmzCJbYPxWel/EqmAPKjDFVwOoVngd5bfltOTkXX0zx6aezdvFi+jQ7hqyrulWJSgCIisFr1Z1VBMZUE3G16pKft7TMunMWzmIxyrEff8y0tqdzyV0zmXtu/yo1Aje1VdtDzsvCRIPLZ0UgIvEiEv3hA8YYivbvYfMHT7F/9SISd27i6ZkP8PL8l9iJcMUFdzCq+zD21G1I7dSO1HWNwK0K3JPgaFEh+1cvYu+8iYzOGB7polUbPjuLVbVIRDq5h48aY6KTJNSmXvtzuWruEzy6eyt1gVEtTmDU2sU0O+kSxO2z7gPKop2FiYaeP1FD/wPeEZE3gD0lK1V1VshKZYyptFMbNuDx/87m3KICvm1+PEM6XsTCrzOhdj3yq/gI3NKoJxMS/lQEjYEtOGMISihgFYEx0cAVErpg5zZ2FhXyjzpH8J+8pcTv3kqCFtL71lvIfGPioQPKqsCgMRMe/qSqrHCmUWNMhLiFhMZfey2fnduVj598GlbuonliQ0ZnPEF6ek+6nHmmNa0Yr/yZa6g58AzQBedJ4GvgHlXNC33xHDaOwJhydu2Chx6CiRPhmGNg0iS44opIl8pEmWCOI5gGzAGSgWOAd13rjDGRMHcuHH+8Uwn07w9LllglYA6LPxVBkqpOU9VC1zIdSApxuYwx5W3YANdd59z0GzaEb76BZ55xXhtzGPypCDaLyI2uMQXxInIjTuexTyLyoohsFJHF5dbfJSK/isgSEXk80IIbEzNUYepUaN8e3nkHRo2CH3+EM8445KO+UlIa440/FcGtwHXABmA9cA1+pKoEpgOXuK8Qkb8BVwEdVfV44InKFNaYWFFyQ28XF8d3devB7bfDiSfCokUwbBjUPHQmeMvhawLlT0XQQlWvVNUkVW2iqt2AFhVtpKpfAVvLre4HPKquVJequrHSJTammsvKmsndA4fQt04KP8fV4LgiZUD9I8i6rQ+0a+d1O/ccvhJfo8qNIDaR409F8Iyf6/xxLHC2iCwUkS9F5FRvHxSRviKSLSLZmzZtCvBwxlQ9bz7wIF/t2cuDv3zCnKIC/tLgKF7+yyUMGzka8N78Y5OzmUB5HUcgImcAZwJJIjLY7a2GQPxhHK8RcDpwKvC6iLTyNH2Fqk4BpoATPhrg8YypOnbtgn/+k7fy1rBO4rjp7Jv46q9XU5C3lD0fPMXOnRt9zs1vOXxNoHw9EdQE6uPcvBu4LTtx+gkCkQfMciXP+R4oBhID3Jcx1cecOdChAzz7LJNqJNC1+7+Yf+b1pU08iZfeQ0Kd+j6bf2xyNhMorxWBqn6pqiOA01V1hOv1KGCqqgb6rPk2rqkqRORYnMpmc4D7MibqVRjFs369kyTmqqvgyCNhwQLuLiqisOXJZT5Wq3kHCvft8dn8k57ek8kTxlInewZrx3enTvYMS+Ru/OLPXEOPiMgdQBHwA3CEiIxXVZ8TlYjIK0BXIFFE8oCHgReBF10hpQeAXjarqamufKZYvKEHvPACDB0K+/fD6NHO65o1SW3tpYmntdPE46v5xyZnM4HwZ4qJn1T1JBFJBzrh5DD+QVU7+twwiGyKCVMVeUuxePyC/zAvrQV89RWcey5MmQLHHlv6GfcKxH2SuMmuSeK8vWcVgCnP3ykm/HkiSBCRBKAbMFFVC0TEvsUbU4HVK3Np0e1gM05CUQF3rf2FAWtWwc5tfNfndm74/EtWt29Paqu2jM4YXuYbva9J4mwCORNM/jwR3I3zFPAzcDmQAmSq6tmhL57DnghMVeT+RHDKumU88uEztNu8hrn1G5D/6KP0HvFv+2ZvQsrfJ4IKKwIvO6+hqoUBlSwAVhGYqigrayb33XMvIxun0Tt3IevrNGRQQjxXTXqGYRkjPTYb1cmewarcnAiW2lQnhz37qGtOIURkcPkFuDuIZTWmWkpvUJ/c4nx6537HsygXN2vCVZOeIT29pw3+MlHF1ziCeq6fDbwsxsQUvyd0cwsJrdu8OXHffcddqixesby02Se1VVvy85aW2cwGf5lI8dpZrKrPu36OCF9xjIlOPkNBS9r0i4vLhoT++9/O64SEQ/Y3OmO4s72ljzRRwJ/O4seB0cA+4EPgRGCgqmaGvngO6yMwkeYtFLS0Tf/XX6FvXycktGtXeP75MiGhnmRlzXSif1bmlokaMiZYgpmh7CJV3Qn8H84UEccCQw+zfMZUKd7a9P9YsdzJD9CxozNF9NSp8NlnpZWAr+ak9PSerMrNobioiFW5OVYJmIjxaxyB6+dlwCuqulVEQlgkY6KPpwndTvjpQz5OSIDhw53MYU89BUcfXfq+X81JxkQBf54I3hWRHKAzME9EkoD9oS2WMdHFfUK3ent3MnzWaN799DmaN2gA774Lr71WphIAyw9gqo4KnwhU9QEReQzYqapFIrIHJ8uYMTGj5Bv8F0Pv4+H160gGll90Mce9+QY08BxEV35kMbhCRF+3EFETXfxpGgJoD6SJiPvnXwpBeYyJTuvXkz57Funr18Ff/gL/+Q/H/fWvPjex/ACmqqiwaUhEXsbJLXwWTjKZU3GaiYyp/oqLnUnh2reHuXOdkNAffoAKKgHA8gOYKsOfJ4LOQAebLtrEnJwc+Mc/nJDQv/3NCQlt6/+3eX8mjzMmGvhTESwGjgbWh7gsxkSHAwfgscecHAH16jmDxHr3hgCi5Sw/gKkK/IkaSgSWishHIjKnZKloIxF5UUQ2upLQlH9viIioiFiaShN2PqeK+PZbOOUUJyT073+HZcvg1lsDqgSMqSr8eSLICHDf04GJlOtUFpEWwIXAmgD3a0ypyo7O9RbbX2PvXq7/+SeYNAmaN3f6Ay6/PIxnYkzk+BM++mUgO1bVr0QkzcNbE4D7gHcC2a8xJQIZsOUe2w9QO7UjF7c7j3P69YPiIrjrLqdJyEtIqDHVkT9RQ6eLyH9FZLeIHBCRIhHZGcjBRORKYJ2q/hzI9sa4C2TAlvtUEUm7tzJp9hhmfJ3JpqJC+O47Z3SwVQImxvjTNDQR6AG8gRNBdDNQ6UBoEakLPARc5Ofn+wJ9AVJSUip7OBMDAhmwldqqLfvXLuaW7Rt48Itp1Co8wL87XsT0Pb+Te9ppoS6yMVHJrwFlqvqbiMSrahEwTUQWBHCs1kBL4GfXXEXNgR9F5DRV3eDhmFOAKeDMPhrA8Uw1F8iAraf79qHxQw/RpeAA37Y4gcEdL2LJ96+WJoY3Jhb5EzW0V0RqAj+JyOMiMoiDSWv8pqq/qGoTVU1T1TScmUxP8VQJGOOPSg3YOnAARo3iimEP0blmAvc1OZr/HmvJAAAXfklEQVQueUvY8Ot7lifYGFX1uQCpQG2gIfAwMB5o48d2r+CMPSjAuenfVu7934HEivajqnTq1EmN8SQzM0vT2rRTiYvTtDbtNDMz69APLVigevzxqqDao4fqhg3hL6gxEQBkqx/3WJ+JaUQkHpihqjeGqiLyhyWmMQHZuRMefBAmT3ZCQidPtpBQE1OCkphGnT6BJFfTkDFVxzvvQIcOzs3/7rth6VKrBIzxwp8+gt+Bb0TkXyIyuGQJcbmMCcz69XDNNdCtGzRu7ISEPvkk1K8f0sP6ndjemCjkT0XwBzDX9dkGriW0/6tMzDnsG2n5WULHjHFmCQ1DSGjJwLZ9nXvRYvAs9nXuRb9BQ60yMFWGP8nrr1XVNypaF0rWR1C9uY8QrtW8A/l5S9k7b6L/0Tw5OU7i+PnzA5ol9HBVmNjemAgJZvL6B/1cZ0xAAk7peOAAjBwJJ54IixfDiy/CvHlhrQTAe2L71SstE5mpGrwOKBORS3ES1h8jIk+7vdUQKAx1wUzsCCil44IFcPvtTidwjx5OP0DTpiEuqWeWicxUdb6eCP4AsnES1f/gtswBLg590UysSG3Vlvy8pWXWeb2R7twJ/fvDWWfB7t3w3nvwyisRqwTAMpGZqs/rE4E6E8P9LCIzVbUgjGUyMWZ0xnBn1tByfQTjyk/78M47TiXwxx9OSOjo0SGPBvKHZSIzVV2FncXRwDqLqz+feQVKbvxvvQUdO8J//hOWaCBjqrpgdhYbE3Lp6T1ZlZtDcVERq3JznEqguNiJAOrQ4WBIaHZ2mUrA4veNOXxeKwIRedn1857wFcdUB0G5OefkQNeucMcd0KkT/PKLM11EQkKZ41j8vjGHz9cTQScRSQVuFZFGItLYfQlXAU3Vctg3Zw8hoVm9b6XlZVccUrEEHHZqjCnDax+BiNwN9ANaAesA9+zdqqqtQl88h/URVB2HNbjKQ0ho1qfzvA42u+nmm2gxeBYSfzDmQYsKWTu+O8VFRaE6RWOqDH/7CPwZWTxZVfsFrWQBsIqg6oiLj6/8zXnHjoOzhKakOD8vuwzwXbEANqLXGB+C1lmsqv1E5EQRGeBaOla0jYldlRoTAPD2205n8PPPw8CBsGRJaSUAvkftWvy+McHhT/L6u4EsoIlryRKRu0JdMBPdvHUI+31z/uMPuPpq+PvfITHRmSV0woRDxgX4qljS03syecJY6mTPYO347tTJnmHZxowJREWZa4BFQD233+sBi/zY7kVgI7DYbd1YIMe1z9nAkf5kz7EMZdElMzNLGyQla9MeYzRlyNvatMcYbZCUXJodzGfWsKIi1eeeU23YULV2bdVHHlE9cMDrsfrd2V/j6zUqc6z4eo203539Q32axlR5BCNDGYCI/AKcqqr7Xb/XBv6rqn+pYLtzgN3AS6p6gmvdRcBnqlooIo+5KqL7K6qsrI8gugTcIZyT43QGf/01nHee0xzUpk2Fx9qadBL7cr+lYEseCUc1p07bM2i86SfrBzCmAv72EXidYsLNNGChiMx2/d4NeKGijVT1KxFJK7fuY7dfvwOu8eP4JspUepK4/Hx49FFnQFi9es4sobfcAiKeP3/IsR6j0Tk3la7TokJWjw/bLOjGVHv+dBaPB3oDW4FtQG9VfTIIx74V+CAI+zGHqbIDwCrVIfzNN3DyyZCR4fQJLFsGvXv7VQlU+ljGmID4NcWEqv6oqk+r6lOq+r/DPaiIPIQzlXWWj8/0FZFsEcnetGnT4R7SeBHIADC/OoR37IA773RmCd2zx5kldObMSs8SapFBxoSBPx0JgS5AGm6dxa51vYBvgbr+7sc6i0MnrU07bdpjjKbeP7d0adpjjKa1aedzO58dwrNnqyYnq8bFqQ4cqLpr12GV0eexTBl2rYw7gtVZfDhcfQRz9WBn8SXAeOBcVfX7a751FodOQAPAvPnjDxgwAGbPdmYJnToVTj01yCU23hx2yk9T7UR89lEReQXnm387EckTkduAiUAD4BMR+UlEngvV8Y1/gtIGX1wMzz3nJI7/4AOnYzg72yqBMLO5l0ygKowaEpFdQPnHhh042cvuVdWVnrZT1Rs8rK4w2siEl99JYbxZtsxJHF+JkFATGgGl/DQG/8JHx+OkrZyJM/FcD+Bo4FecQWNdQ1U4E3oBZ9cqHxI6bRr06uV3NJAJPsudbALlz4Cyhar613LrvlPV00XkZ1U9MaQlxPoIos433zgDw5YtgxtucBLHN2kS6VLFPOsjMOUFs4+gWESuE5E413Kd23vRn+eymoloRq4dO6Bfv4Mhoe+/74SEWiUQFWzuJRMof54IWgFPAWe4Vn0LDMLJUdBJVb8OaQmxJ4ISEf3GN3u2ExG0YQPcc4+TPCYKEscbY7wLWj6CaGAVgeOwkr4Eyj0k9MQTncTxFg1kTJUQtKYhEWkuIrNFZKOI/Ckib4lI8+AU01SGr7n5D4fH5iZPIaH//a9VAsZUQ/70EUwD5gDJwDHAu651JsxCMe+OpykmnrxrIBvbt3f6A0491ckdfP/9ZRLHG2OqD38qgiRVnaaqha5lOpAU4nIZD0Ix7477IKRaqjyw9he+2bGVhN9+g+nT4ZNPoHXr4J2EMSbq+DOOYLOI3Ai84vr9BmBL6IpkvAk45t+HkkFInfOW8MiHE2m7ZS1vtz+Hf+TM589evYJVdGNMFPMnaigFZ2qIM3DCRRcAd6vqmtAXz2GdxaHTsVVb7o1rTK8V35PXsAnDLrqTD2vUtATwxlQDwUxev0ZVr1TVJFVtoqrdgO5BKaWJrFmz+G7bZm5c8T3PtTuLC295ig9r1Kz20zxHdCyGMVEo0EnnBge1FCa81q1zksZffTV109L4eOQoHivaxK8T06v9IKRA8i8YU90FNI5ARNaqaosQlMcjaxoKkpKQ0AcegIICGDECBg0KazRQVtZMp49jpdPHMTpjeFgrnYiMxTAmQkI9DXX0j0Kr4rw1XwTcrLF0KZx9NvTvD6ed5oSE3ndf2CuBSH8bD9VYDGOqMq8VgYjsEpGdHpZdOGMKTIh4u2He2X9A5W+k+fnw8MNw0kmQkwMzZoQ8JNRbZRUN8+VbDmRjDuW1IlDVBqra0MPSQFX9yWPwoms08mK3dY1F5BMRyXX9bBSsE6lOvN0wp05/qXI30vnznQpg5Ei47jqnIrj55pBOFe3rW380fBu3HMjGHCpkGcqA6cAl5dY9AMxT1bbAPNfvphxvN8yCvbv9u5Fu3w7/+Aeccw7s2+dMEZGZCUmVGwcYSDOUr2/90fBt3GboNOZQIasIVPUrYGu51VcBM1yvZwDdQnX8qszbDTOhbv2Kb6SzZkGHDk6+4MGDYckSuKR8fVyxQNvzfX3rj5Zv4+npPVmVm0NxURGrcnOsEjAxL5RPBJ40VdX1AK6fNpG9B95umH1uudn7jdQtJJSmTWHhQhg3zskeFoBA2/N9feu3b+PGRCd/ppiICBHpC/QFSElJiXBpwsvXVBJdzjyz7Ppxj5G+Y7szS2hBATz2WFBCQgPNf1tRDuT09J524zcmyoQ0H4GIpAFzVfUE1++/Al1Vdb2INAO+UNV2Fe3HxhF4sXSpkzJywQK44AJnjECQooEOJ97+zv5Ox3bB3t0k1K1Pn1tuZtKzE4NSLmOM/0I9jiBQc4CSmcx6Ae+E+fjVg6eQ0I8/DmpIaKDt+VlZM8l8YzaNr3yQlCHOz8w3ZtvIXWOiWMieCETkFaArkAj8CTwMvA28DqQAa4BrVbV8h/Ih7InAzddfO08BOTmQng7jx4csZ3Ago4Bt5K4x0cNSVVY327c7U0M8/zykpTnNQBdfHOlSHSIuPp4Wg2ch8Qe7n7SokLXju1NcVBTBkhkTe6K1achUliq89ZYTEvqf/8C99zrTQ1SyEgjXjJvRMFbAGFM5VhFEs5KQ0GuugaOPhu+/hyeeqHRIaDjn+ImWsQLGGP9Z01A0cp8ltLDw4CyhNQKL9g13u32kZxg1xjisaaiqWrIEzjoL+vfn68IiWu/fT8spL5D12usB7zLcc/zYyF1jqharCCohkHZ2v7fJz4fhw+Hkk9n/yy/8o8GRXHPlQxTeO/uwm3Ks3d4Y44tVBH4KpJ3d723mz4cTT4RRo+D66+mS1JR3Lr+P2mknBmW6Zmu3N8b4Yn0Efgqknb3CbbZvh/vvhylTyoSEhiIE09rtjYk91kcQZIG0s3vdZsXygyGhU6ceEhIaiqYca7c3xnhjFYGfArk5JzZNPmSbRsu/5b2atXyGhFpTjjEmnKwi8FMgN2ctLmbz+xPYv3oRFB6gx6dT+GrO45ybnw+PP+5UAp06HbKdTddsjAkn6yOohMrOqhkXH0/jSwdyzDevMGn7eroAXySmcNuWtawoLg5fwY0xMcnfPoKozUcQbbKyZjL9lTdpfOWDpfPsT3/lKbqceabXb+ptW7bmH7//jwE7N7G7TkMGn3cbM+snUueHl8JcemOM8c6ahvw0aOj9NLz4njIZuxpefA+Dht7veYP58/l+724GL/mcd1qcwPm9n2FmgyT2fvastfUbY6KKVQR+2rR+nccIoE3r15X9oFvi+CNq1eKz++7nvoR9/Pxcb2vrN8ZEJWsa8pMk1CI/b2mZMQH5eUuRhFrOL6pO4vi77oI//4QhQyAjg/Pq1WPVY49GqNTGGFOxmHwiCGSqiDiR0gigkqihze9PIE6EWU8/w8cNGsI117B461Y+GDESxo4NOHG8McaEU0SeCERkENAHUOAXoLeq7g/HsUumfah7/gBadOvAvrylTrJ18NlkU1yQT+ML+7H10+co2JJHwlHNaXTWjVz3/gQuGHgPNeJqMOacXjx7dBt2PT2JyS1bWhOQMaZKCHv4qIgcA3wNdFDVfSLyOvC+qk73tk0ww0cDnZK5/HZtN61mzDuPceqWNXzRtA3/6vYAa4882u/9GWNMqEX7FBM1gDoiUgOoC/wRrgMHOiVzyYAyXfkDg758ifem302rrXncjNDrxrGllYC/+zPGmGgR9qYhVV0nIk/gJK/fB3ysqh+H6/iprdqyz0Onb0Xz+KSn96RJzjJaPfZvWhccYHaDhhQ99hjzxz9J/rplld6fMcZEi7A/EYhII+AqoCWQDNQTkRs9fK6viGSLSPamTZsqfRxvHcIBzeOzfTv07cuFo0fT+phk+PBD/r5zB9f0u8PmBTLGVH2qGtYFuBZ4we33m4FJvrbp1KmTVkZmZpY2SErWpj3GaMqQt7VpjzHaIClZMzOzSt9Pa9NOJS5O09q0K11/iOJi1TfeUD36aNW4ONUhQ1R37/Z4PL/2Z4wxYQRkqx/35Uh0Fv8VeBE4FadpaLqrsM9426ayncVBydG7di0MGABz5sDJJzvTRZ9yit9lMMaYSIvazmJVXQi8CfyIEzoaB0wJ5jEOK0dvURFMnOjkCvjkE2eK6O+/t0rAGFNtRWQcgao+DDwcqv0H2iHM4sVw++3w3Xdw0UVOxrCWLUNVTGOMiQrVcmRxpTtw9++HYcOcJqDffoOXX4YPP7RKwBgTE6rlXEMlI3qHZYxk9etOjt5x3iZ7+/JL6NsXli+Hm26C8eMhMTHMJTbGmMiJ3cQ027bBffc5ncAtW8Lzz8OFFwb3GMYYE0FR21kccarwxhvQvj1MmwZDhzp9A1YJGGNiVLVsGvJq7Vro3x/efdeJAnr/fYsGMsbEvNh4InAPCf30UyckdOFCqwSMMYZYeCKwkFBjjPGpej8RPP20860/N9dCQo0xxovqXRG0bg09ekBODtx4I4hEukTGGBN1qnfT0OWXO4sxxhivqvcTgTHGmApZRWCMMTHOKgJjjIlxVhEYY0yMs4rAGGNinFUExhgT46wiMMaYGGcVgTHGxLgqkY9ARDYBq318JBHYHKbiVAV2Pcqy63GQXYuyqvv1SFXVpIo+VCUqgoqISLY/yRdihV2Psux6HGTXoiy7Hg5rGjLGmBhnFYExxsS46lIRTIl0AaKMXY+y7HocZNeiLLseVJM+AmOMMYGrLk8ExhhjAhS1FYGIvCgiG0Vksdu6E0XkWxH5RUTeFZGGrvXpIvKT21IsIie53uvk+vxvIvK0SNXMTlPJ65EgIjNc65eJyINu21wiIr+6rscDkTiXw1XJa1FTRKa51v8sIl3dtqnyfxsi0kJEPnf9Oy8RkXtc6xuLyCcikuv62ci1Xlzn+puILBKRU9z21cv1+VwR6RWpczocAVyP41x/N/kiMqTcvqr8/xW/qWpULsA5wCnAYrd1/wXOdb2+FRjlYbu/ACvdfv8eOAMQ4APg0kifW6ivB9ATeNX1ui7wO5AGxAMrgFZATeBnoEOkzy3E16I/MM31ugnwAxBXXf42gGbAKa7XDYDlQAfgceAB1/oHgMdcry9znasApwMLXesbAytdPxu5XjeK9PmF4Xo0AU4F/g0McdtPtfi/4u8StU8EqvoVsLXc6nbAV67XnwBXe9j0BuAVABFpBjRU1W/V+dd9CegWmhKHViWvhwL1RKQGUAc4AOwETgN+U9WVqnoAeBW4KtRlD7ZKXosOwDzXdhuB7UDn6vK3oarrVfVH1+tdwDLgGJx/1xmuj83g4LldBbykju+AI13X4mLgE1XdqqrbcK7hJWE8laCo7PVQ1Y2q+l+goNyuqsX/FX9FbUXgxWLgStfra4EWHj5zPa6KAOcPIM/tvTzXuurC2/V4E9gDrAfWAE+o6lacc1/rtn11uh7ersXPwFUiUkNEWgKdXO9Vu78NEUkDTgYWAk1VdT04N0ecb77g/W+g2v1t+Hk9vKl218OXqlYR3Ar0F5EfcB77Dri/KSJ/Bfaqaknbsac23+oUJuXtepwGFAHJQEvgXhFpRfW+Ht6uxYs4/4mzgSeBBUAh1exaiEh94C1goKru9PVRD+vUx/oqqRLXw+suPKyrstejIlUqeb2q5gAXAYjIsUD5zPQ9OPg0AM4NoLnb782BP0JZxnDycT16Ah+qagGwUUS+ATrjfMNxf4qqNtfD27VQ1UJgUMnnRGQBkAtso5r8bYhIAs5NL0tVZ7lW/ykizVR1vavpZ6NrfR6e/wbygK7l1n8RynKHSiWvhzferlO1VKWeCESkietnHDAMeM7tvTicJoFXS9a5HgF3icjproiQm4F3wlroEPJxPdYA57kiROrhdArm4HSothWRliJSE6finBP+kgeft2shInVd1wARuRAoVNWl1eVvw1X2F4Blqjre7a05QEnkTy8Ontsc4GbX38bpwA7XtfgIuEhEGrkiai5yratSArge3lTb/yseRbq32tuC881+PU4nTh5wG3APThTAcuBRXAPiXJ/vCnznYT+dcdqPVwAT3bepSktlrgdQH3gDWAIsBYa67ecy1+dXAA9F+rzCcC3SgF9xOg0/xZmNsdr8bQBn4TRZLAJ+ci2XAUfhdJLnun42dn1egGdd5/wL0NltX7cCv7mW3pE+tzBdj6Ndf0M7cQIJ8nCCCKrF/xV/FxtZbIwxMa5KNQ0ZY4wJPqsIjDEmxllFYIwxMc4qAmOMiXFWERhjTIyzisCYclwx9l+LyKVu664TkQ8jWS5jQsXCR43xQEROwBmLcTLOTJQ/AZeo6orD2GcNdUY6GxNVrCIwxgsReRxn8r56wC5VHeWap78/ztTEC4ABqlosIlNwpsauA7ymqiNd+8gDnseZyfNJVX0jAqdijE9Vaq4hY8JsBPAjzgR2nV1PCX8HzlTVQtfNvwcwE2eu+62uqb8/F5E3VXWpaz97VLVLJE7AGH9YRWCMF6q6R0ReA3arar6IXICTxCTblcysDgenKr5BRG7D+T+VjJMHoaQieC28JTemcqwiMMa3YtcCzjw9L6rqv9w/ICJtceY6Ok1Vt4tIJlDb7SN7wlJSYwJkUUPG+O9T4DoRSQQQkaNEJAVoCOwCdrpl+zKmyrAnAmP8pKq/iMgI4FPXdNcFwB04SW+W4sxkuhL4JnKlNKbyLGrIGGNinDUNGWNMjLOKwBhjYpxVBMYYE+OsIjDGmBhnFYExxsQ4qwiMMSbGWUVgjDExzioCY4yJcf8PKB6bWhTy/x8AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(X, Y, edgecolors='k')\n",
"plt.plot(X, Yhat, color='red')\n",
"plt.xlabel(\"Year\")\n",
"plt.ylabel(\"Log of transistor count\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"R-squared is equal 0.952944285228576\n"
]
}
],
"source": [
"d1 = Y - Yhat\n",
"d2 = Y - Y.mean()\n",
"ssr = d1.dot(d1)\n",
"sst = d2.dot(d2)\n",
"r2 = 1 - ssr / sst\n",
"print('R-squared is equal', r2)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"time to double 1.9745331723797188 years\n"
]
}
],
"source": [
"# log(tc) = a*year + b\n",
"# tc = exp(a*year)*exp(b)\n",
"# 2tc = 2exp(a*year)*exp(b)\n",
"# 2tc = exp(ln(2))*exp(a*year)*exp(b)\n",
"# 2tc = exp(a*year + ln(2))*exp(b)\n",
"# exp(a*year2)*exp(b)=exp(a*year1 + ln(2))*exp(b)\n",
"# exp(a*year2)= exp(a*year1 + ln(2))\n",
"# a*year2 = a*year1 + ln(2)\n",
"# year2 = year1 + ln(2)/a\n",
"print('time to double', np.log(2)/a, 'years')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment