Formatting and experiments.

Let this check in get away from me. Bunch of small formatting sttuf
in the various chapters, some experimental animations and code, etc.
Not a clearly delineated check in.
This commit is contained in:
Roger Labbe committed 2015-05-09 10:21:36 -07:00
1 parent a3cd023d3b
commit 752320ad01
11 files changed
+13069 -12640

No files matched your search

+2035 -2035
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 KiB

After

Width:  |  Height:  |  Size: 502 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 MiB

+349 -551
View File
@@ -1,551 +1,349 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<style>\n",
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
"@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
"@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
"\n",
" div.cell{\n",
" width: 850px;\n",
" margin-left: 0% !important;\n",
" margin-right: auto;\n",
" }\n",
" div.text_cell code {\n",
" background: transparent;\n",
" color: #000000;\n",
" font-weight: 600;\n",
" font-size: 11pt;\n",
" font-style: bold;\n",
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
" }\n",
" h1 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
"\t}\n",
"\t\n",
" div.input_area {\n",
" background: #F6F6F9;\n",
" border: 1px solid #586e75;\n",
" }\n",
"\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 30pt;\n",
" line-height: 100%;\n",
" color:#c76c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 1em;\n",
" display: block;\n",
" white-space: wrap;\n",
" } \n",
" h2 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h2 {\n",
" font-weight: 200;\n",
" font-size: 16pt;\n",
" font-style: italic;\n",
" line-height: 100%;\n",
" color:#c76c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 1.5em;\n",
" display: inline;\n",
" white-space: wrap;\n",
" } \n",
" h3 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h3 {\n",
" font-weight: 200;\n",
" font-size: 14pt;\n",
" line-height: 100%;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 2em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" h4 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h4 {\n",
" font-weight: 100;\n",
" font-size: 14pt;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" h5 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h5 {\n",
" font-weight: 200;\n",
" font-style: normal;\n",
" color: #1d3b84;\n",
" font-size: 16pt;\n",
" margin-bottom: 0em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" div.text_cell_render{\n",
" font-family: 'Arimo',verdana,arial,sans-serif;\n",
" line-height: 125%;\n",
" font-size: 120%;\n",
" width:740px;\n",
" margin-left:auto;\n",
" margin-right:auto;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
" div.output_subarea.output_text.output_pyout {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_subarea.output_stream.output_stdout.output_text {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_wrapper{\n",
" margin-top:0.2em;\n",
" margin-bottom:0.2em;\n",
"}\n",
"\n",
" code{\n",
" font-size: 70%;\n",
" }\n",
" .rendered_html code{\n",
" background-color: transparent;\n",
" }\n",
" ul{\n",
" margin: 2em;\n",
" }\n",
" ul li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.5em; \n",
" }\n",
" ul li li{\n",
" padding-left: 0.2em; \n",
" margin-bottom: 0.2em; \n",
" margin-top: 0.2em; \n",
" }\n",
" ol{\n",
" margin: 2em;\n",
" }\n",
" ol li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.5em; \n",
" }\n",
" ul li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.2em; \n",
" }\n",
" a:link{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" a:visited{\n",
" font-weight: bold;\n",
" color: #1d3b84;\n",
" }\n",
" a:hover{\n",
" font-weight: bold;\n",
" color: #1d3b84;\n",
" }\n",
" a:focus{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" a:active{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" .rendered_html :link {\n",
" text-decoration: underline; \n",
" }\n",
" .rendered_html :hover {\n",
" text-decoration: none; \n",
" }\n",
" .rendered_html :visited {\n",
" text-decoration: none;\n",
" }\n",
" .rendered_html :focus {\n",
" text-decoration: none;\n",
" }\n",
" .rendered_html :active {\n",
" text-decoration: none;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
" hr {\n",
" color: #f3f3f3;\n",
" background-color: #f3f3f3;\n",
" height: 1px;\n",
" }\n",
" blockquote{\n",
" display:block;\n",
" background: #fcfcfc;\n",
" border-left: 5px solid #c76c0c;\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" width:680px;\n",
" padding: 10px 10px 10px 10px;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
" blockquote p {\n",
" margin-bottom: 0;\n",
" line-height: 125%;\n",
" font-size: 100%;\n",
" }\n",
"</style>\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" scale:85,\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from __future__ import division, print_function\n",
"%matplotlib inline\n",
"import sys\n",
"sys.path.insert(0,'..') # allow us to format the book\n",
"sys.path.insert(0,'../code') \n",
"# use same formatting as rest of book so that the plots are\n",
"# consistant with that look and feel.\n",
"import book_format\n",
"book_format.load_style(directory='..')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": [
"iVBORw0KGgoAAAANSUhEUgAAAaIAAAEWCAYAAAAkUJMMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
"AAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtUlOedB/DvzHC/CsLAAMP9fhcQFfGSBElIjLUbNZet\n",
"rTa7adwmG5PN2ZSsbZLVJG3dYxtTNWmao0nabk36R9ImxKj1BoIRROQi90EuwgwXlZtcZ979w8qG\n",
"Og4YYR5gvp9zPCc8PM/M75HId973fd7nlUmSJIGIiEgQuegCiIjIsjGIiIhIKAYREREJxSAiIiKh\n",
"GERERCQUg4iIiIRiEBERkVATBtGpU6ewZs0a+Pn5QS6X44MPPpjwRcvKyrBixQo4ODjAz88P27dv\n",
"n5JiiYho7pkwiPr7+xEfH4+33noL9vb2kMlkJvv39PRg1apVUKlUKCoqwltvvYWdO3di165dU1Y0\n",
"ERHNHbI72VnB2dkZe/bswfe///3b9tm3bx+ys7Oh0+lga2sLAHj99dexb98+tLS03H3FREQ0p0z5\n",
"NaKCggIsW7ZsLIQAIDMzE62trWhsbJzqtyMiolluyoNIq9XCy8trXNvNr7Va7VS/HRERzXJWU/2C\n",
"E11D+qbu7u6pfnsiIpphXF1dTX5/yo+IvL29bzny0el0Y98jIiL6pikPoiVLliA3NxdDQ0NjbUeO\n",
"HIGvry8CAgKm+u2IiGiWm/DUXH9/P2prawEABoMBjY2NKCkpwfz586FWq5GdnY3CwkIcPXoUAPDE\n",
"E0/gtddew6ZNm7Bt2zZUV1fjF7/4BV599VWT7zPRodtcUlRUBABISUkRXIn5ce6WN3dLnTdg2XO/\n",
"k0svEx4RFRYWIikpCUlJSRgcHMQrr7yCpKQkvPLKKwBuLEDQaDRj/V1cXHDkyBG0trYiJSUFzz77\n",
"LF588UU8//zz32IqREQ01014RLRy5UoYDIbbfn///v23tMXGxuLkyZN3VxkREVkE7jVHRERCMYiI\n",
"iEgoBhEREQnFICIiIqEYREREJBSDiIiIhGIQERGRUAwiIiISikFERERCMYiIiEgoBhEREQnFICIi\n",
"IqEYREREJBSDiIiIhGIQERGRUAwiIiISikFERERCMYiIiEgoBhEREQnFICIiIqEYREREJBSDiIiI\n",
"hGIQERGRUAwiIiISikFERERCMYiIiEgoBhEREQnFICIiIqEYREREJBSDiIiIhGIQERGRUAwiIiIS\n",
"ikFERERCMYiIiEgoBhEREQnFICIiIqEYREREJNSkgmjv3r0ICgqCvb09UlJSkJeXZ7J/Tk4OFi9e\n",
"DBcXF3h6emLt2rWora2dkoKJiGhumTCIDh48iK1bt2Lbtm0oKSlBWloasrKy0NzcbLR/XV0d1q5d\n",
"i5UrV6KkpARHjx7F4OAgHnzwwSkvnoiIZr8Jg2jXrl3YvHkznnzySURERGD37t1QqVTYt2+f0f4l\n",
"JSUwGAx48803ERwcjISEBLz00kuor6/HlStXpnwCREQ0u5kMouHhYRQXFyMzM3Nce2ZmJvLz842O\n",
"Wbp0KZycnPDee+9Br9ejt7cXBw4cQGpqKtzd3aeuciIimhNMBlFnZyf0ej28vLzGtSuVSmi1WqNj\n",
"VCoVcnJysG3bNtjZ2WHevHmoqKjAX//616mrmoiI5gyrqX5BjUaDtWvXYvPmzXjiiSfQ09ODn/3s\n",
"Z9iwYQOOHTsGmUxmdFxRUdFUlzLjWeKcb+LcLY+lzhuwzLmHhYVNuq/JIPLw8IBCoYBOpxvXrtPp\n",
"oFKpjI559913oVar8Ytf/GKs7fe//z3UajUKCgqQlpY26eKIiGjuMxlENjY2SE5OxuHDh/HII4+M\n",
"tR85cgTr1683OkaSJMjl48/43fzaYDDc9r1SUlImXfRsd/PTkSXN+SbO3fLmbqnzBix77t3d3ZPu\n",
"O+GquRdeeAEHDhzA+++/j8rKSjz33HPQarV4+umnAQDZ2dnIyMgY679mzRoUFxdj+/btqK2tRXFx\n",
"MTZv3gx/f38kJyd/i+kQEdFcNuE1og0bNqCrqws7duxAW1sb4uLikJOTA7VaDQDQarXQaDRj/dPT\n",
"03Hw4EH8/Oc/xy9/+Us4ODhgyZIlOHToEOzt7advJkRENCtNarHCli1bsGXLFqPf279//y1t69at\n",
"w7p16+6uMiIisgjca46IiIRiEBERkVAMIiIiEopBREREQjGIiIhIKAYREREJxSAiIiKhGERERCQU\n",
"g4iIiIRiEBERkVAMIiIiEopBREREQjGIiIhIKAYREREJxSAiIiKhGERERCQUg4iIiIRiEBERkVAM\n",
"IiIiEopBREREQjGIiIhIKAYREREJxSAiIiKhGERERCQUg4iIiIRiEBERkVAMIiIiEopBREREQjGI\n",
"iIhIKAYREREJxSAiIiKhGERERCQUg4iIiIRiEBERkVAMIiIiEopBREREQjGIiIhIqEkF0d69exEU\n",
"FAR7e3ukpKQgLy9vwjG//vWvERkZCTs7O/j4+CA7O/uuiyUiornHaqIOBw8exNatW7Fv3z6kp6dj\n",
"z549yMrKwsWLF6FWq42OeeGFF/DFF1/gf/7nfxAXF4fu7m60tbVNefFERDT7TRhEu3btwubNm/Hk\n",
"k08CAHbv3o1Dhw5h3759eOONN27pX11djd/85jcoKytDRETEWHtCQsIUlk1ERHOFyVNzw8PDKC4u\n",
"RmZm5rj2zMxM5OfnGx3z2WefITg4GDk5OQgODkZQUBA2bdqEjo6OqauaiIjmDJNHRJ2dndDr9fDy\n",
"8hrXrlQqodVqjY7RaDRobGzExx9/jA8//BAA8OKLL+Lhhx9GQUEBZDKZ0XFFRUXfpv5ZzRLnfBPn\n",
"bnksdd6AZc49LCxs0n0nPDV3pwwGA4aGhvDRRx8hNDQUAPDRRx8hIiICRUVFWLhw4VS/JRERzWIm\n",
"g8jDwwMKhQI6nW5cu06ng0qlMjpGpVLByspqLIQAIDQ0FAqFAk1NTbcNopSUlDutfda6+enIkuZ8\n",
"E+dueXO31HkDlj337u7uSfc1eY3IxsYGycnJOHz48Lj2I0eOIC0tzeiY9PR0jI6OQqPRjLVpNBro\n",
"9XoEBARMujAiIrIME95H9MILL+DAgQN4//33UVlZieeeew5arRZPP/00ACA7OxsZGRlj/TMyMpCU\n",
"lIQf/vCHKCkpwfnz5/HDH/4QixcvtshPBUREZNqE14g2bNiArq4u7NixA21tbYiLi0NOTs7YPURa\n",
"rXbc0Y9MJsPnn3+Of//3f8fy5cthb2+PzMxM7Nq1a/pmQUREs9akFits2bIFW7ZsMfq9/fv339Lm\n",
"7e2Njz/++O4qIyIii8C95oiISCgGERERCcUgIiIioRhEREQkFIOIiIiEYhAREZFQDCIiIhKKQURE\n",
"REIxiIiISCgGERERCcUgIiIioRhEREQkFIOIiIiEYhAREZFQDCIiIhKKQUREREIxiIiISCgGERER\n",
"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\n",
"AAAASUVORK5CYII=\n"
],
"text/plain": [
"<matplotlib.figure.Figure at 0x7fc3f902ea58>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from gif_animate import animate\n",
"from stats import gaussian\n",
"import matplotlib.pylab as pylab\n",
"from matplotlib import animation\n",
"\n",
"\n",
"def plt_g (mu, variance):\n",
" xs = np.arange(2,8,0.05)\n",
" ys = [gaussian (x, mu, variance) for x in xs]\n",
" plt.plot (xs, ys)\n",
" plt.ylim((0,1))\n",
"\n",
"\n",
"mu = 2\n",
"sigma = 0.6\n",
"def ganimate(frame):\n",
" global mu, sigma\n",
" if frame < 25:\n",
" mu += .2\n",
" elif frame == 25:\n",
" mu = 5\n",
" elif frame < 37:\n",
" sigma -= 0.05\n",
" else:\n",
" sigma += 0.05\n",
"\n",
" plt.cla()\n",
" plt_g(mu,sigma)\n",
"\n",
"animate('04_gaussian_animate.gif', ganimate, \n",
" frames=80, interval=50, figsize=(6,4))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src='04_gaussian_animate.gif'>"
]
}
],
"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.4.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<style>\n",
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
"@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
"@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
"\n",
" div.cell{\n",
" width: 850px;\n",
" margin-left: 0% !important;\n",
" margin-right: auto;\n",
" }\n",
" div.text_cell code {\n",
" background: transparent;\n",
" color: #000000;\n",
" font-weight: 600;\n",
" font-size: 11pt;\n",
" font-style: bold;\n",
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
" }\n",
" h1 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
"\t}\n",
"\t\n",
" div.input_area {\n",
" background: #F6F6F9;\n",
" border: 1px solid #586e75;\n",
" }\n",
"\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 30pt;\n",
" line-height: 100%;\n",
" color:#c76c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 1em;\n",
" display: block;\n",
" white-space: wrap;\n",
" } \n",
" h2 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h2 {\n",
" font-weight: 200;\n",
" font-size: 16pt;\n",
" font-style: italic;\n",
" line-height: 100%;\n",
" color:#c76c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 1.5em;\n",
" display: inline;\n",
" white-space: wrap;\n",
" } \n",
" h3 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h3 {\n",
" font-weight: 200;\n",
" font-size: 14pt;\n",
" line-height: 100%;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 2em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" h4 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h4 {\n",
" font-weight: 100;\n",
" font-size: 14pt;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" h5 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h5 {\n",
" font-weight: 200;\n",
" font-style: normal;\n",
" color: #1d3b84;\n",
" font-size: 16pt;\n",
" margin-bottom: 0em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" div.text_cell_render{\n",
" font-family: 'Arimo',verdana,arial,sans-serif;\n",
" line-height: 125%;\n",
" font-size: 120%;\n",
" width:740px;\n",
" margin-left:auto;\n",
" margin-right:auto;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
" div.output_subarea.output_text.output_pyout {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_subarea.output_stream.output_stdout.output_text {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_wrapper{\n",
" margin-top:0.2em;\n",
" margin-bottom:0.2em;\n",
"}\n",
"\n",
" code{\n",
" font-size: 70%;\n",
" }\n",
" .rendered_html code{\n",
" background-color: transparent;\n",
" }\n",
" ul{\n",
" margin: 2em;\n",
" }\n",
" ul li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.5em; \n",
" }\n",
" ul li li{\n",
" padding-left: 0.2em; \n",
" margin-bottom: 0.2em; \n",
" margin-top: 0.2em; \n",
" }\n",
" ol{\n",
" margin: 2em;\n",
" }\n",
" ol li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.5em; \n",
" }\n",
" ul li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.2em; \n",
" }\n",
" a:link{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" a:visited{\n",
" font-weight: bold;\n",
" color: #1d3b84;\n",
" }\n",
" a:hover{\n",
" font-weight: bold;\n",
" color: #1d3b84;\n",
" }\n",
" a:focus{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" a:active{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" .rendered_html :link {\n",
" text-decoration: underline; \n",
" }\n",
" .rendered_html :hover {\n",
" text-decoration: none; \n",
" }\n",
" .rendered_html :visited {\n",
" text-decoration: none;\n",
" }\n",
" .rendered_html :focus {\n",
" text-decoration: none;\n",
" }\n",
" .rendered_html :active {\n",
" text-decoration: none;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
" hr {\n",
" color: #f3f3f3;\n",
" background-color: #f3f3f3;\n",
" height: 1px;\n",
" }\n",
" blockquote{\n",
" display:block;\n",
" background: #fcfcfc;\n",
" border-left: 5px solid #c76c0c;\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" width:680px;\n",
" padding: 10px 10px 10px 10px;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
" blockquote p {\n",
" margin-bottom: 0;\n",
" line-height: 125%;\n",
" font-size: 100%;\n",
" }\n",
"</style>\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" scale:85,\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from __future__ import division, print_function\n",
"%matplotlib inline\n",
"import sys\n",
"sys.path.insert(0,'..') # allow us to format the book\n",
"sys.path.insert(0,'../code') \n",
"# use same formatting as rest of book so that the plots are\n",
"# consistant with that look and feel.\n",
"import book_format\n",
"book_format.load_style(directory='..')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaIAAAEWCAYAAAAkUJMMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtUlOedB/DvzHC/CsLAAMP9fhcQFfGSBElIjLUbNZet\nrTa7adwmG5PN2ZSsbZLVJG3dYxtTNWmao0nabk36R9ImxKj1BoIRROQi90EuwgwXlZtcZ979w8qG\nOg4YYR5gvp9zPCc8PM/M75HId973fd7nlUmSJIGIiEgQuegCiIjIsjGIiIhIKAYREREJxSAiIiKh\nGERERCQUg4iIiIRiEBERkVATBtGpU6ewZs0a+Pn5QS6X44MPPpjwRcvKyrBixQo4ODjAz88P27dv\nn5JiiYho7pkwiPr7+xEfH4+33noL9vb2kMlkJvv39PRg1apVUKlUKCoqwltvvYWdO3di165dU1Y0\nERHNHbI72VnB2dkZe/bswfe///3b9tm3bx+ys7Oh0+lga2sLAHj99dexb98+tLS03H3FREQ0p0z5\nNaKCggIsW7ZsLIQAIDMzE62trWhsbJzqtyMiolluyoNIq9XCy8trXNvNr7Va7VS/HRERzXJWU/2C\nE11D+qbu7u6pfnsiIpphXF1dTX5/yo+IvL29bzny0el0Y98jIiL6pikPoiVLliA3NxdDQ0NjbUeO\nHIGvry8CAgKm+u2IiGiWm/DUXH9/P2prawEABoMBjY2NKCkpwfz586FWq5GdnY3CwkIcPXoUAPDE\nE0/gtddew6ZNm7Bt2zZUV1fjF7/4BV599VWT7zPRodtcUlRUBABISUkRXIn5ce6WN3dLnTdg2XO/\nk0svEx4RFRYWIikpCUlJSRgcHMQrr7yCpKQkvPLKKwBuLEDQaDRj/V1cXHDkyBG0trYiJSUFzz77\nLF588UU8//zz32IqREQ01014RLRy5UoYDIbbfn///v23tMXGxuLkyZN3VxkREVkE7jVHRERCMYiI\niEgoBhEREQnFICIiIqEYREREJBSDiIiIhGIQERGRUAwiIiISikFERERCMYiIiEgoBhEREQnFICIi\nIqEYREREJBSDiIiIhGIQERGRUAwiIiISikFERERCMYiIiEgoBhEREQnFICIiIqEYREREJBSDiIiI\nhGIQERGRUAwiIiISikFERERCMYiIiEgoBhEREQnFICIiIqEYREREJBSDiIiIhGIQERGRUAwiIiIS\nikFERERCMYiIiEgoBhEREQnFICIiIqEYREREJNSkgmjv3r0ICgqCvb09UlJSkJeXZ7J/Tk4OFi9e\nDBcXF3h6emLt2rWora2dkoKJiGhumTCIDh48iK1bt2Lbtm0oKSlBWloasrKy0NzcbLR/XV0d1q5d\ni5UrV6KkpARHjx7F4OAgHnzwwSkvnoiIZr8Jg2jXrl3YvHkznnzySURERGD37t1QqVTYt2+f0f4l\nJSUwGAx48803ERwcjISEBLz00kuor6/HlStXpnwCREQ0u5kMouHhYRQXFyMzM3Nce2ZmJvLz842O\nWbp0KZycnPDee+9Br9ejt7cXBw4cQGpqKtzd3aeuciIimhNMBlFnZyf0ej28vLzGtSuVSmi1WqNj\nVCoVcnJysG3bNtjZ2WHevHmoqKjAX//616mrmoiI5gyrqX5BjUaDtWvXYvPmzXjiiSfQ09ODn/3s\nZ9iwYQOOHTsGmUxmdFxRUdFUlzLjWeKcb+LcLY+lzhuwzLmHhYVNuq/JIPLw8IBCoYBOpxvXrtPp\noFKpjI559913oVar8Ytf/GKs7fe//z3UajUKCgqQlpY26eKIiGjuMxlENjY2SE5OxuHDh/HII4+M\ntR85cgTr1683OkaSJMjl48/43fzaYDDc9r1SUlImXfRsd/PTkSXN+SbO3fLmbqnzBix77t3d3ZPu\nO+GquRdeeAEHDhzA+++/j8rKSjz33HPQarV4+umnAQDZ2dnIyMgY679mzRoUFxdj+/btqK2tRXFx\nMTZv3gx/f38kJyd/i+kQEdFcNuE1og0bNqCrqws7duxAW1sb4uLikJOTA7VaDQDQarXQaDRj/dPT\n03Hw4EH8/Oc/xy9/+Us4ODhgyZIlOHToEOzt7advJkRENCtNarHCli1bsGXLFqPf279//y1t69at\nw7p16+6uMiIisgjca46IiIRiEBERkVAMIiIiEopBREREQjGIiIhIKAYREREJxSAiIiKhGERERCQU\ng4iIiIRiEBERkVAMIiIiEopBREREQjGIiIhIKAYREREJxSAiIiKhGERERCQUg4iIiIRiEBERkVAM\nIiIiEopBREREQjGIiIhIKAYREREJxSAiIiKhGERERCQUg4iIiIRiEBERkVAMIiIiEopBREREQjGI\niIhIKAYREREJxSAiIiKhGERERCQUg4iIiIRiEBERkVAMIiIiEopBREREQjGIiIhIqEkF0d69exEU\n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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x8474eb8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from gif_animate import animate\n",
"from stats import gaussian\n",
"import matplotlib.pylab as pylab\n",
"from matplotlib import animation\n",
"import matplotlib\n",
"\n",
"def plt_g (mu, variance):\n",
" xs = np.arange(2,8,0.05)\n",
" ys = [gaussian (x, mu, variance) for x in xs]\n",
" plt.plot (xs, ys)\n",
" plt.ylim((0,1))\n",
"\n",
"\n",
"mu = 2\n",
"sigma = 0.6\n",
"def ganimate(frame):\n",
" global mu, sigma\n",
" if frame < 25:\n",
" mu += .2\n",
" elif frame == 25:\n",
" mu = 5\n",
" elif frame < 37:\n",
" sigma -= 0.05\n",
" else:\n",
" sigma += 0.05\n",
"\n",
" plt.cla()\n",
" plt_g(mu,sigma)\n",
"\n",
"animate('04_gaussian_animate.gif', ganimate, \n",
" frames=80, interval=50, figsize=(6,4))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src='04_gaussian_animate.gif'>"
]
}
],
"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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
+342
View File
@@ -0,0 +1,342 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<style>\n",
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
"@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
"@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
"\n",
" div.cell{\n",
" width: 850px;\n",
" margin-left: 0% !important;\n",
" margin-right: auto;\n",
" }\n",
" div.text_cell code {\n",
" background: transparent;\n",
" color: #000000;\n",
" font-weight: 600;\n",
" font-size: 11pt;\n",
" font-style: bold;\n",
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
" }\n",
" h1 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
"\t}\n",
"\t\n",
" div.input_area {\n",
" background: #F6F6F9;\n",
" border: 1px solid #586e75;\n",
" }\n",
"\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 30pt;\n",
" line-height: 100%;\n",
" color:#c76c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 1em;\n",
" display: block;\n",
" white-space: wrap;\n",
" } \n",
" h2 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h2 {\n",
" font-weight: 200;\n",
" font-size: 16pt;\n",
" font-style: italic;\n",
" line-height: 100%;\n",
" color:#c76c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 1.5em;\n",
" display: inline;\n",
" white-space: wrap;\n",
" } \n",
" h3 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h3 {\n",
" font-weight: 200;\n",
" font-size: 14pt;\n",
" line-height: 100%;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 2em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" h4 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h4 {\n",
" font-weight: 100;\n",
" font-size: 14pt;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" h5 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h5 {\n",
" font-weight: 200;\n",
" font-style: normal;\n",
" color: #1d3b84;\n",
" font-size: 16pt;\n",
" margin-bottom: 0em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" div.text_cell_render{\n",
" font-family: 'Arimo',verdana,arial,sans-serif;\n",
" line-height: 125%;\n",
" font-size: 120%;\n",
" width:740px;\n",
" margin-left:auto;\n",
" margin-right:auto;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
" div.output_subarea.output_text.output_pyout {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_subarea.output_stream.output_stdout.output_text {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_wrapper{\n",
" margin-top:0.2em;\n",
" margin-bottom:0.2em;\n",
"}\n",
"\n",
" code{\n",
" font-size: 70%;\n",
" }\n",
" .rendered_html code{\n",
" background-color: transparent;\n",
" }\n",
" ul{\n",
" margin: 2em;\n",
" }\n",
" ul li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.5em; \n",
" }\n",
" ul li li{\n",
" padding-left: 0.2em; \n",
" margin-bottom: 0.2em; \n",
" margin-top: 0.2em; \n",
" }\n",
" ol{\n",
" margin: 2em;\n",
" }\n",
" ol li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.5em; \n",
" }\n",
" ul li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.2em; \n",
" }\n",
" a:link{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" a:visited{\n",
" font-weight: bold;\n",
" color: #1d3b84;\n",
" }\n",
" a:hover{\n",
" font-weight: bold;\n",
" color: #1d3b84;\n",
" }\n",
" a:focus{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" a:active{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" .rendered_html :link {\n",
" text-decoration: underline; \n",
" }\n",
" .rendered_html :hover {\n",
" text-decoration: none; \n",
" }\n",
" .rendered_html :visited {\n",
" text-decoration: none;\n",
" }\n",
" .rendered_html :focus {\n",
" text-decoration: none;\n",
" }\n",
" .rendered_html :active {\n",
" text-decoration: none;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
" hr {\n",
" color: #f3f3f3;\n",
" background-color: #f3f3f3;\n",
" height: 1px;\n",
" }\n",
" blockquote{\n",
" display:block;\n",
" background: #fcfcfc;\n",
" border-left: 5px solid #c76c0c;\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" width:680px;\n",
" padding: 10px 10px 10px 10px;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
" blockquote p {\n",
" margin-bottom: 0;\n",
" line-height: 125%;\n",
" font-size: 100%;\n",
" }\n",
"</style>\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" scale:85,\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from __future__ import division, print_function\n",
"%matplotlib inline\n",
"import sys\n",
"sys.path.insert(0,'..') # allow us to format the book\n",
"sys.path.insert(0,'../code') \n",
"# use same formatting as rest of book so that the plots are\n",
"# consistant with that look and feel.\n",
"import book_format\n",
"book_format.load_style(directory='..')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x5a2cda0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from random import uniform\n",
"import matplotlib.pylab as pylab\n",
"from matplotlib import animation\n",
"from gif_animate import animate\n",
"import matplotlib as mpl\n",
"from math import pi\n",
"\n",
"def make_particle():\n",
" return [uniform(0,100), uniform(0,100), uniform(0, 2), uniform(0, 2*pi)]\n",
"\n",
"\n",
"def move(particles, t=1.):\n",
" vx = particles[:, 2]*np.cos(particles[:, 3])\n",
" vy = particles[:, 2]*np.sin(particles[:, 3])\n",
" particles[:, 0] = (particles[:, 0] + vx*t) % 100\n",
" particles[:, 1] = (particles[:, 1] + vy*t) % 100\n",
" \n",
"particles = np.asarray([make_particle() for i in range(1000)])\n",
"\n",
"def panimate(frame):\n",
" move(particles, t=1.)\n",
"\n",
" plt.cla()\n",
" plt.scatter(particles[:, 0], particles[:, 1])\n",
" plt.xlim(0, 100)\n",
" plt.ylim(0, 100)\n",
" plt.gca().get_xaxis().set_ticks([])\n",
" plt.gca().get_yaxis().set_ticks([])\n",
"\n",
" \n",
"animate('13_particle_move.gif', panimate, \n",
" frames=500, interval=50, figsize=(4, 4))"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"<img src='13_particle_move.gif'>"
]
}
],
"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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
+78 -62
View File
@@ -1,62 +1,78 @@
# -*- coding: utf-8 -*-
"""
Created on Sun May 18 11:09:23 2014
@author: rlabbe
"""
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
def plot_transfer_func(data, f, lims, num_bins=1000):
ys = f(data)
h = np.histogram(ys, num_bins, density=False)
#plot output
plt.subplot(2,2,1)
plt.plot(h[0], h[1][1:], lw=4)
plt.ylim(lims)
plt.gca().xaxis.set_ticklabels([])
plt.title('output')
plt.axhline(np.mean(ys), ls='--', lw=2)
# plot transfer function
plt.subplot(2,2,2)
x = np.arange(lims[0], lims[1],0.1)
y = f(x)
plt.plot (x,y)
isct = f(0)
plt.plot([0,0,lims[0]],[lims[0],isct,isct],c='r')
plt.xlim(lims)
plt.ylim(lims)
plt.title('transfer function')
# plot input
h = np.histogram(data, num_bins, density=True)
plt.subplot(2,2,4)
plt.plot(h[1][1:], h[0], lw=4)
plt.xlim(lims)
plt.gca().yaxis.set_ticklabels([])
plt.title('input')
plt.show()
if __name__ == "__main__":
from numpy.random import normal
import numpy as np
data = normal(loc=0.0, scale=1, size=500000)
def g(x):
return (np.cos(4*(x/2+0.7)))*np.sin(0.3*x)-1.6*x
plot_transfer_func (data, g, lims=(-3,3), num_bins=100)
# -*- coding: utf-8 -*-
"""
Created on Sun May 18 11:09:23 2014
@author: rlabbe
"""
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
def plot_transfer_func(data, f, gaussian, num_bins=300):
ys = f(data)
x0 = gaussian[0]
in_std = np.sqrt(gaussian[1])
y = f(x0)
m = np.mean(ys)
std = np.std(ys)
in_lims = [x0-in_std*3, x0+in_std*3]
out_lims = [y-std*3, y+std*3]
#plot output
h = np.histogram(ys, num_bins, density=False)
plt.subplot(2,2,4)
plt.plot(h[0], h[1][1:], lw=4)
plt.ylim(out_lims[1], out_lims[0])
plt.gca().xaxis.set_ticklabels([])
plt.title('output')
plt.axhline(np.mean(ys), ls='--', lw=2)
plt.axhline(f(x0), lw=1)
# plot transfer function
plt.subplot(2,2,3)
x = np.arange(in_lims[0], in_lims[1], 0.1)
y = f(x)
plt.plot (x,y)
isct = f(x0)
plt.plot([x0, x0, in_lims[1]], [out_lims[1], isct, isct], color='r', lw=1)
plt.xlim(in_lims)
plt.ylim(out_lims)
#plt.axis('equal')
plt.title('function')
# plot input
h = np.histogram(data, num_bins, density=True)
plt.subplot(2,2,1)
plt.plot(h[1][1:], h[0], lw=4)
plt.xlim(in_lims)
plt.gca().yaxis.set_ticklabels([])
plt.title('input')
plt.show()
if __name__ == "__main__":
from numpy.random import normal
import numpy as np
x0 = (1, 1)
data = normal(loc=x0[0], scale=x0[1], size=500000)
def g(x):
return x*x
return (np.cos(3*(x/2+0.7)))*np.sin(0.7*x)-1.6*x
return -2*x
#plot_transfer_func (data, g, lims=(-3,3), num_bins=100)
plot_transfer_func (data, g, gaussian=x0,
num_bins=100)
+43 -46
View File
@@ -1,46 +1,43 @@
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 28 08:19:21 2015
@author: Roger
"""
from math import *
import numpy as np
import matplotlib.pyplot as plt
wheelbase = 100 #inches
vel = 20 *12 # fps to inches per sec
steering_angle = radians(1)
t = 1 # second
orientation = 0. # radians
pos = np.array([0., 0.])
for i in range(100):
#if abs(steering_angle) > 1.e-8:
dist = vel*t
turn_radius = tan(steering_angle)
radius = wheelbase / tan(steering_angle)
arc_len = dist / (2*pi*radius)
turn_angle = 2*pi * arc_len
cx = pos[0] - (sin(orientation) * radius)
cy = pos[1] + (cos(orientation) * radius)
orientation = (orientation + turn_angle) % (2.0 * pi)
pos[0] = cx + (sin(orientation) * radius)
pos[1] = cy - (cos(orientation) * radius)
plt.scatter(pos[0], pos[1])
plt.axis('equal')
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 28 08:19:21 2015
@author: Roger
"""
from math import *
import numpy as np
import matplotlib.pyplot as plt
wheelbase = 100 #inches
vel = 20 *12 # fps to inches per sec
steering_angle = radians(1)
t = 1 # second
orientation = 0. # radians
pos = np.array([0., 0.]
for i in range(100):
#if abs(steering_angle) > 1.e-8:
dist = vel*t
turn_radius = tan(steering_angle)
radius = wheelbase / tan(steering_angle)
arc_len = dist / (2*pi*radius)
turn_angle = 2*pi * arc_len
cx = pos[0] - (sin(orientation) * radius)
cy = pos[1] + (cos(orientation) * radius)
orientation = (orientation + turn_angle) % (2.0 * pi)
pos[0] = cx + (sin(orientation) * radius)
pos[1] = cy - (cos(orientation) * radius)
plt.scatter(pos[0], pos[1])
plt.axis('equal')