From: Sam Moore Date: Tue, 21 Jan 2014 13:21:27 +0000 (+0800) Subject: De'Casteljau and Splines X-Git-Url: https://git.ucc.asn.au/?p=matches%2FFYP2014.git;a=commitdiff_plain;h=HEAD;ds=sidebyside De'Casteljau and Splines Should have committed ages ago, but got distracted by other things happening. Performance test shows Goldman's algorithm is really slow. Because he is making a bigger matrix and then inverting it multiple times. Other than that it is the same as De'Casteljau anyway. Splines are a thing. Tried to work them out myself, ended up just copying the algorithm from wikipedia. Quad trees are a thing that I have seen before (Barnes Hut; efficient N-body simulations). In a graphics context they are a way to work out what parts of a scene to render? Maybe look at them more. TODO: Decide exactly on scope for project. All I can think of is implementing the "document viewer" on a mobile device. Not sure I want to do that... Design of document format / viewer should come before putting it on a mobile device anyway. Will waste some time by looking at PostScript some more for now. --- diff --git a/.gitignore b/.gitignore index 877fa0d..c9121d4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,6 @@ *.o *.test nogit/* +*.mp4 references/*.pdf ipython_notebooks/.ipynb_checkpoints diff --git a/ipython_notebooks/de_Casteljau.ipynb b/ipython_notebooks/de_Casteljau.ipynb index c7a2805..1ebf62e 100644 --- a/ipython_notebooks/de_Casteljau.ipynb +++ b/ipython_notebooks/de_Casteljau.ipynb @@ -500,6 +500,93 @@ } ], "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Approximating a Circle using Cubic Beziers" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "k = 4. * (2.**0.5 - 1.) / 3.\n", + "points = [(0,1), (k, 1), (1, k), (1,0)]\n", + "c = BezierCurve(points, 50) # This appears to be more accurate than using the de Casteljau algorithm :S\n", + "c += list(array([-1,1]) * c)\n", + "c += list(array([1,-1]) * c)\n", + "scatter([p[0] for p in c], [p[1] for p in c])" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 125, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 125 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "scatter([arctan2(p[0], p[1]) for p in c], [p[0]**2. + p[1]**2. for p in c])\n", + "title(\"$r$ vs Angle\")\n", + "xlabel(\"Angle (rad)\")\n", + "ylabel(\"$r$\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 126, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nKbNdVlaW1q8eR3Uw0Erge5rNXfjcc8/XakytWrXXvoCtqXYPLSXQjsHBLVhUVGTb7sKFC3R2rk+1\nNdCJQBaBA3R2DuEnn6zVXV5RUREDAiKpKC8T+InASgJNaTa354wZz5bZdvny5VrrawKBDALLCETT\nyanZLXUJ/drVq1dpNjsTWEXgLIFLBJrRaGzDESNGldn2X//6l1bbXkbgMtU+9xC6ujbi8ePHdZd5\n+PBhOjs3pNoltUb7PCyhg4Mnt2/fXmbbgQOH0GCI0xLGVQJnCLxLBwfXWu0K2bhxI52cmmsJLIlq\nq3IsTaZ6XLu27P/xuHGTaTZ3pVrzX03gJyrKs4yIuKtaCX358vfo7NyCQDrVcYy7CTxON7dGvH79\num27goIC+voGa5+95dpnJ5zAaLZv37PWzgFJTpjwJI3Gvtr7t1LtOuxIJyfPcl1wamXqQa3ik08g\nnA4OMZw8+ZlajckeJGn8BjRo4K99MSZT7Z7yoadnxbWzzZs3U1E8qQ6ADqHaDG5DR8f6PHToUK3E\n89FHH2txHKTaf6zG5OHRlCdOnCi3/ZYtW7Qa5tdUuxF+JjCbgwcP111mZmYmnZ39tJpbkXacVmzf\nvkuZJFXqmWeeo9odEqSdg0ME7mVwcAv+8ssvt/L2Sao13SFDHqM6O6YD1YkAOwm0Z9u2HSqM6S9/\neZHq4HBpTD/Q1XUgP/roI93lLl26lE5Oj1HtovTVLtSOfP318mNX165dY8uWbah2z2ylOpOrI4F6\nHDfuyVt6/6UuXLigXZTvI7CXaktXjWn+/NfKbX/9+nVaLG21c0aqExkO08HBk6dPn9ZdbrduA6h2\ny53VjpNCg6FRhZWCY8eO0dm5tBXuQeA5At9SUepz/fpPb+n9l/r+++9pNtfTklfpeMV2GgwN+c03\n35Tb/r///S9dXb34vzGvZwnso59fi1qJx54kadzhVq9eo3V/pGpfjtN0cEjg/PnzK91nyJDHaDS2\nozqecE2r9bzBVq3a33I858+f17paHqDaN11I4CAdHUNtXUQViYvrTrV1MFf7kvjR2bkR09PTqyzT\narVy+PCxVGcINSPQkkAmXVyace/evRXuU1JSwiZNgqh26V3XLuiN6ODQl88990LN3vwNNmzYQBeX\nyBsuWv8kEERn54aVthyKiopoMjkR+IrqDKJiAhGMjIzhlStXqizz/PnzDAqKoNoXbtXe1wY6O9er\n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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 126 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perfect circle $\\implies r = 1 \\forall \\theta$" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] } ], "metadata": {} diff --git a/ipython_notebooks/splines.ipynb b/ipython_notebooks/splines.ipynb new file mode 100644 index 0000000..41178de --- /dev/null +++ b/ipython_notebooks/splines.ipynb @@ -0,0 +1,268 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Splines\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Piecewise continuous curves. $S:[a,b]\\to \\Re$\n", + "\n", + "$S = P_i (t) \\quad t_{i-1} \\leq t \\lt t_i$ for $i=0,...k$\n", + "\n", + "$P_i$ are polynomials. Chosen to gaurantee smoothness of $S$. $P_i^{(j)} (t_i) = P_{i+1}^{(j)} (t_i)$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The spline is defined by $\\{q_0(x) ... q_n(x)\\}$ for $n$ points $x_i$.\n", + "\n", + "For cubic splines have: \n", + "\\begin{align}\n", + " q_i(x) &= a_i x^3 + b_i x^2 + c_i x + d_i \\\\\n", + " q_i(x_i) = y_i &= q_{i+1}(x_i) \\\\\n", + " &\\implies x_i^3 (a_{i} - a_{i+1}) + x_i^2 (b_{i} - b_{i+1}) + x_i (c_{i} - c_{i+1}) + (d_{i} - d_{i+1}) = 0 \\quad \\forall i\\\\\n", + " q'_i(x_i) &= q'_{i+1}(x_i) \\\\\n", + " &\\implies 3 x_i^2 (a_{i} - a_{i+1}) + 2 x_i (b_{i} - b_{i+1}) + (c_{i} - c_{i+1}) = 0 \\quad \\forall i\\\\\n", + " q''_i(x_i) &= q''_{i+1}(x_i) \\\\\n", + " &\\implies 6 x_i (a_{i} - a_{i+1}) + 2 (b_{i} - b_{i+1}) = 0 \\quad \\forall i\n", + "\\end{align}\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Not useful:** Summing:\n", + "\n", + "\\begin{align}\n", + " 0 &= a_0 (x_0^3 + 3 x_0^2 + 6 x_0) + b_0 (x_0^2 + 2x_0+2) + c_0 (x_0 + 1) + d_0 \\\\\n", + " &+ \\sum_{i=1}^{n} a_i \\left[ (x_i^3 - x_{i-1}^3) + 3(x_i^2 - x_{i-1}^2) + 6(x_i - x_{i-1})\\right]\n", + " + b_i\\left[(x_i^2 - x_{i-1}^2) + 2(x_i - x_{i-1})\\right] + c_i\\left[x_i - x_{i-1}\\right] \\\\\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$q_i(x) = a_i x^3 + b_i x^2 + c_i x + d_i$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$q_i'(x) = 3 a_i x^2 + 2 b_i x + c_i$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$q_i''(x) = 6 a_i x + 2 b_i$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$x_i^3 a_i + x_i^2 b_i + x_i c_i + d_i = y_i = x_i^3 a_{i+1} + x_i^2 b_{i+1} + x_i c_{i+1} + d_{i+1}$$" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def Spline(P):\n", + " \"\"\" Make a cubic spline that goes through the knots P \"\"\"\n", + " x = [1.*p[0] for p in P]\n", + " y = [1.*p[1] for p in P]\n", + " \n", + " n = len(P)-1\n", + " \n", + " A = zeros((n+1,)*2)\n", + " B = 3. * ones(n+1)\n", + " for i in xrange(1,n):\n", + " A[i, i-1:i+2] = [1./(x[i] - x[i-1]), 2.*(1./(x[i]-x[i-1]) + 1./(x[i+1]-x[i])), 1./(x[i+1]-x[i])]\n", + " \n", + " A[0,0:2] = [2./(x[1]-x[0]), 1./(x[1]-x[0])]\n", + " B[0] = 3. * ((y[1] - y[0]) / (x[1] - x[0])**2.)\n", + " A[n,n-1:] = [1./(x[n] - x[n-1]), 2./(x[n]-x[n-1])]\n", + " B[n] = 3. * ((y[n] - y[n-1]) / (x[n] - x[n-1])**2.)\n", + " \n", + " k = solve(A, B)[-1::-1]\n", + "\n", + " \n", + " def p(xx):\n", + " for i in xrange(n):\n", + " if xx >= x[i] and xx <= x[i+1]:\n", + " break\n", + " if (i >= n):\n", + " i = n-1\n", + " \n", + " t = (xx - x[i]) / (x[i+1] - x[i])\n", + " a = k[i]*(x[i+1] - x[i]) - (y[i+1] - y[i])\n", + " b = -k[i+1]*(x[i+1]-x[i]) - (y[i+1] - y[i])\n", + " return (1. - t)*y[i] + t*y[i+1] + t*(1.-t)*(a*(1.-t)+b*t)\n", + " \n", + " return p\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 216 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "points = [(-1,0),(0,-1),(1,0)]\n" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 245 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "p1 = Spline(points)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 246 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x = linspace(-1,1)\n", + "plot(x, map(p1, x))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 247, + "text": [ + "[]" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nQsz/AujsWu8WjpNbAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 247 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot(x[:-1], diff(map(p1, x)))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 248, + "text": [ + "[]" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAD9CAYAAABTJWtQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9c1FW+x/HXKJT5K2pVLIai+BGghRQu23YtStGVkrU0\npazItFuZutluZu1u6ZYubHVvGWvZbm3atkbuVlAqaSlpPxB3dWs3aKWC24BCJWKZJULf+8ep8Qeo\nODPwnR/v5+MxDxg4M/NhHOc955zvOV+HZVkWIiIiQDe7CxAREf+hUBARETeFgoiIuCkURETETaEg\nIiJuCgUREXHzOhRKSkpITEwkPj6e/Pz8dtvMnDmT+Ph4UlJS2LJli/vnTU1NjB8/nqSkJJKTkykr\nK/O2HBER8YJXodDa2sr06dMpKSmhoqKCZcuWUVlZeVCblStX8uGHH1JVVcUTTzzBLbfc4v7dz372\nM7KysqisrOS9994jKSnJm3JERMRLXoVCeXk5cXFxxMTEEB4eTk5ODkVFRQe1KS4uJjc3F4D09HSa\nmppoaGhg165dbNiwgRtuuAGAsLAwTjzxRG/KERERL4V5c+O6ujqio6Pd151OJxs3bjxqm9raWrp3\n707//v2ZPHky7777Lueddx6PPPIIPXv2dLd1OBzelCciErI83azCq55CR9+0Dy3O4XDQ0tLC5s2b\nmTZtGps3b6ZXr17k5eW1e1tdfHO59957ba8hmC56PvVc+uvFG16FQlRUFC6Xy33d5XLhdDqP2Ka2\ntpaoqCicTidOp5OhQ4cCMH78eDZv3uxNOSIi4iWvQiEtLY2qqipqampobm6msLCQ7Ozsg9pkZ2ez\ndOlSAMrKyoiIiCAyMpKBAwcSHR3N1q1bAXjttdcYNGiQN+WIiIiXvJpTCAsLo6CggFGjRtHa2sqU\nKVNISkpi8eLFANx0001kZWWxcuVK4uLi6NWrF3/605/ct3/00UeZNGkSzc3NxMbGHvQ78b2MjAy7\nSwgqej59R8+l/3BY3g5AdSKHw+H1+JiISKjx5r1TK5pFRMRNoSAiIm4KBRERcfNqollE/FtLC1RX\nQ2UlfPAB1NZCU5O57Ny5//umJtO+R4/2L6eeCmecATEx+7+efrr5nQQXTTSLBIldu2DDBigvNyFQ\nWQkffQQDB0JSkrlER8NJJ5lLRMT+y4knQrdu8M03bS979kBdnQmXmhpzqa4Glwv694e0NDj/fHNJ\nS4MDNiUQm3jz3qlQEAlQu3fDm2/CunXmUlEBP/whXHABJCebEEhI6Lw36dZW+OQTE0LvvGMu//63\nedzzz4dhw2DUKBM40rUUCiIhorYWCgvhhRfg3Xfh3HPh4ovhkksgPd3+4Zyvv4bNm01AlJbC+vUm\npC6/HH76U4iMtLe+UKFQEAliO3bAX/8Kf/kL/Otf5g12wgTzSdzfh2q+/BJWrYIXX4SSEhg0yNQ/\nfryZk5DOoVAQCTLNzfC3v8Gzz5p5gp/8BK6+2nw9/ni7q/PM3r2wdq3p5bz4IvzoR3DLLeZv6t7d\n7uqCi0JBJEjs2AGPPw6//72ZF7j+ejPs0qeP3ZX51p49Zhhs0SL4/HO4+Wa44QYzcS3e04pmkQD3\nwQfmjTEuDj7+GF59FV57Da65JvgCAcyw1+TJsGkTPP88/Oc/EB9v/t6//93u6kKbQkHERqWlcNll\ncNFFZhL2gw/gySfh7LPtrqzrDB0KTz1lwvDcc2HsWMjOhgNO5y5dSMNHIjbYsgXmzDHrCObMgUmT\n4IQT7K7KP3zzDTzxBOTlmXmHuXPhnHPsriqwaPhIJEBUV5sAyMoycwWVlTB1qgLhQD16wMyZJjCH\nDYORI83RVu+/b3dloUGhINIFPvsMbrvNDJWcdRZUVcG0aRAebndl/uuEE2DWLBMOQ4eatRhTp5rn\nUjqPQkGkE+3bZ4ZBkpLMCuCKCrjnHujd2+7KAkevXnDHHSZI+/Qxax0WLzbPp/ie5hREOsnGjeaT\nbXQ0LFxojiwS7733Htx6q5l7WLTI9CLkYJpTEPEjX35pxsTHjoVf/hJWrFAg+NI555jtM2bMMEcp\n3XyzWd8hvqFQEPGh4mIzvPHVV2ZiNCcHHA67qwo+Dgdcd52ZqA8PN8/588/bXVVw0PCRiA98/rnZ\nsuGf/zSHU158sd0VhZZNm+Daa81Q0qOPmu3AQ5mGj0RstmgRfPutGe9WIHS9oUPN7qwnnggpKWZR\noHhGoSDiA3V1MHy41hvYqWdPKCgwRyZNmgS/+IXZhE+OjUJBxAfq6+GUU+yuQsDsuvruu2ah4NCh\npvcmHed1KJSUlJCYmEh8fDz5+fnttpk5cybx8fGkpKSw5ZANTVpbW0lNTWXMmDHeliJim+3bFQr+\npF8/cw6K2283Pbgnn7S7osDhVSi0trYyffp0SkpKqKioYNmyZVRWVh7UZuXKlXz44YdUVVXxxBNP\ncMsttxz0+0ceeYTk5GQcOkRDAphCwf84HGbr8Q0b4IEHzKGrGk46ujBvblxeXk5cXBwxMTEA5OTk\nUFRURFJSkrtNcXExubm5AKSnp9PU1ERDQwORkZHU1taycuVKfvnLX/I///M/7T7G3Llz3d9nZGSQ\nkZHhTckiPvftt9DQAAMH2l2JtCcx0ZxHOjcXMjLMyYtOPdXuqnyrtLSUUh/NrnsVCnV1dURHR7uv\nO51ONm7ceNQ2dXV1REZGMmvWLB544AG++OKLwz7GgaEg4o8aG822FYF6RrRQ0LevCYPf/tbMMxQW\nwn/9l91V+c6hH5jnzZvn8X15NXzU0SGfQ4+XtSyLV155hQEDBpCamqq1CBLQNHQUGLp1MyvM//hH\nGDfOnN1Obz1teRUKUVFRuFwu93WXy4XT6Txim9raWqKionj77bcpLi7mjDPO4KqrrmLt2rVcd911\n3pQjYguFQmAZPRreftscunrDDeZ82LKfV6GQlpZGVVUVNTU1NDc3U1hYSHZ29kFtsrOzWbp0KQBl\nZWVEREQwcOBAFixYgMvlorq6mueee45LLrnE3U4kkCgUAk9sLLzzDuzcCZdeCkcYwQ45XoVCWFgY\nBQUFjBo1iuTkZCZOnEhSUhKLFy9m8eLFAGRlZXHmmWcSFxfHTTfdxKJFi9q9Lx19JIGqvl6TzIGo\nVy8zzxAfDxdeCNu22V2Rf9DeRyJeuu02OO00c0y8BB7LMhPQTzwBq1aZc18EOu19JGIjDR8FNocD\n7r4b5s0zh6y++abdFdlLoSDiJYVCcMjNhWeegSuugBdesLsa+3i1TqErWJb2oxf/pjmF4DFyJLz6\nKlx2mfl3nTbN7oq6nt/3FC6/3O4KRI5MPYXgkppqhpAefBAOs9FCUPP7nsK6deYEJv362V2JSFu7\nd5sTyPfta3cl4ktnnGHOyXDJJdDSArNn211R1/H7nsJPfhLa43vi377vJWiIM/icdhq88YZZAb1g\ngd3VdB2/D4WcHLNPiYg/0nxCcIuKMsHwzDPwm9/YXU3X8PtQGD3anGZv+3a7KxFpS/MJwe+UU8ww\ndmEh3HNP8O+X5Peh0KMHjBljTpgh4m8UCqFh4EATDC++aDbVC+Zg8PtQAA0hif9SKISOAQNMMKxc\naYIhWAVEKIwYAR98AJ98YnclIgfTnEJo6dcPXnvN9BgefNDuajpHQITCcceZ9QrPP293JSIHU08h\n9PTrB6tXQ0EBPPWU3dX4XkCEAmgISfyTQiE0RUebYPjVr4LvkPmACYWLLgKXCz780O5KRParr1co\nhKqEBHjlFbj5ZjOkFCwCJhTCwmD8ePUWxH/s22dO0qLV9qHr3HNh+XK46iooL7e7Gt8ImFAADSGJ\nf2logP79oXt3uysRO110kZlbyM6Gigq7q/FeQIXCj39sPpm9/77dlYhoPkH2GzPGHI00ahT83//Z\nXY13AioUunWDCRPUWxD/oPkEOdA115iz7116KezaZXc1nguoUAAzhPTcc8G9olACg3oKcqjbbjPD\nSRMnmt1VA1HAhUJamtmq+J//tLsSCXXbt2vhmhzM4YBHHjFfZ84MzA+vARcKDodJ4eees7sSCXXq\nKUh7wsLMEPeGDbBwod3VHLuACwXYfxRSIKawBA/NKcjh9O1r1jDk58PLL9tdzbHxOhRKSkpITEwk\nPj6e/Pz8dtvMnDmT+Ph4UlJS2LJlCwAul4uLL76YQYMGMXjwYBYeQ6SefTb07AkbN3pbvYjn1FOQ\nIzn9dLNH0g03wHdve4HB8kJLS4sVGxtrVVdXW83NzVZKSopVUVFxUJsVK1ZYo0ePtizLssrKyqz0\n9HTLsixr+/bt1pYtWyzLsqwvv/zSSkhIaHPbI5U3b55lzZjhTfUi3omOtqzqarurEH/3/POW5XRa\nVm1t1z2mN2/tXvUUysvLiYuLIyYmhvDwcHJycigqKjqoTXFxMbm5uQCkp6fT1NREQ0MDAwcOZMiQ\nIQD07t2bpKQktm3b1uHHnjTJDCHt2+fNXyDiGcsyi9c00SxHc+WVMG2aWcvw1Vd2V3N0Yd7cuK6u\njujoaPd1p9PJxkPGdNprU1tbS2RkpPtnNTU1bNmyhfT09DaPMXfuXPf3GRkZZGRkABAbC/Hx8Oqr\ncNll3vwVIseusRF69TIngRI5mjlzoLISbrwRnn3W9+f0Li0tpbS01Cf35VUoODr4l1mHzAgfeLvd\nu3czfvx4HnnkEXr37t3mtgeGwqGuvRaWLlUoSNfTfIIcC4cDFi82uzIsXAg/+5lv7//AD8wA8+bN\n8/i+vBo+ioqKwuVyua+7XC6cTucR29TW1hIVFQXAvn37GDduHNdccw1jx4495sefMMH0FHbu9PAP\nEPGQ1ijIsTrhBLPN9oIF8MYbdldzeF6FQlpaGlVVVdTU1NDc3ExhYSHZ2dkHtcnOzmbp0qUAlJWV\nERERQWRkJJZlMWXKFJKTk7nttts8evyTToKRI80uhSJdST0F8cQZZ8Azz5hdVevq7K6mfV6FQlhY\nGAUFBYwaNYrk5GQmTpxIUlISixcvZvHixQBkZWVx5plnEhcXx0033cSiRYsAeOutt/jzn//MunXr\nSE1NJTU1lZKSkmOu4brrzJMs0pW0RkE8NXIkTJ9uTgWwd6/d1bTlsA4d8PcjDoejzXzEofbtg6go\neOcdM/ks0hVmzTJn37r9drsrkUD07bcwbpz5YPHd52Sf6sh75+EE5IrmA4WHmxXOf/6z3ZVIKNGc\ngnijWzdYsgRefx2eftruag4W8KEAZghp6VJteyFdR3MK4q2+fc2K59mzYfNmu6vZLyhC4bzz4Pjj\n4e237a5EQoXmFMQXkpPhscfMUFJjo93VGEERCg6HJpyla6mnIL4ybhyMHQtTp/rHaEfATzR/z+WC\nIUPMYV5aZSqd6auvoF8/2LPH9ytTJTTt3WsWtk2ZYrbE8FZITzR/LzrahMIrr9hdiQS773sJCgTx\nleOPN+eIufdeeO89e2sJmlCA/RPOIp1J8wnSGeLj4X//15xEzM6N84IqFK64Atavh88+s7sSCWaa\nT5DOcs018MMfmlN52iWoQqFPH7M9rU7VKZ1JaxSkM/3+9/Dmm7BsmT2PH1ShABpCks6nnoJ0pt69\nzQfbmTPho4+6/vGDLhQuuQS2bYOKCrsrkWClOQXpbKmp8Otfm90ampu79rGDLhS6dzfnWfjTn+yu\nRIKVegrSFWbMMK+zu+/u2scNulAAc6zv0qVdn7ASGhQK0hUcDvPhdtkyWLeu6x43KEMhPt4sHy8u\ntrsSCUaaaJau8oMfwB/+AJMnwxdfdM1jBs2K5kM9+6zpLbz6qo+LkpC2b585N/PXX5uhSpGu8N//\nDa2t8OSTHWuvFc3tGDcO/vEPqKmxuxIJJp9+ara4UCBIV3roITOE9PLLnf9YQRsKPXrApEkdT1aR\njtB8gtihTx9z/oWbboLPP+/cxwraUAC48UYzUdPSYnclEiw0nyB2GTYMrr4abr65c3dTDepQGDzY\nbJS3apXdlUiw0BoFsdP990NlJfzlL533GEEdCmB6C3/8o91VSLDQ8JHYqUcPc96YWbOgtrZzHiPo\nQ2HCBNiwwaxyFvGWQkHsdu65ZmHblCmdM4wU9KHQuzdceaVWOItvaE5B/MFdd8HOnfD4476/76AP\nBTBDSE8+Cd9+a3clEug0pyD+ICzMrMPyy55CSUkJiYmJxMfHk5+f326bmTNnEh8fT0pKClu2bDmm\n2/rCeefBiSfC66932kNIiNDwkfiLxETfnLqzDcsLLS0tVmxsrFVdXW01NzdbKSkpVkVFxUFtVqxY\nYY0ePdqyLMsqKyuz0tPTO3xbL8s7yO9/b1lXXumzu5MQ9O23lnXccZb19dd2VyJyZN68d3rVUygv\nLycuLo6YmBjCw8PJycmhqKjooDbFxcXk5uYCkJ6eTlNTE/X19R26rS9dfTWsXq2zsonndu6Enj3N\nESAiwSrMmxvX1dURHR3tvu50Otm4ceNR29TV1bFt27aj3hZg7ty57u8zMjLIyMjwqNaICPjpT804\n3M9/7tFdSIjT0JH4q9LSUkpLS31yX16FgsPh6FA7y4vZkANDwVs33ghTp8Ltt5ttaUWOhUJB/NWh\nH5jnzZvn8X15NXwUFRWFy+VyX3e5XDidziO2qa2txel0dui2vnbBBdCtG6xf36kPI0Gqvl6Ho0rw\n8yoU0tLSqKqqoqamhubmZgoLC8nOzj6oTXZ2Nku/O2lyWVkZERERREZGdui2vuZwmNn6goJOfRgJ\nUg0NCgUJfl4NH4WFhVFQUMCoUaNobW1lypQpJCUlsXjxYgBuuukmsrKyWLlyJXFxcfTq1Ys/fbeK\n7HC37Wy5uXDPPeBymX2RRDqqvh4iI+2uQqRzBe1Jdo5k5kyz0nnBAp/ftQSx666DESPMVxF/ppPs\nHKPp080med98Y3clEkjUU5BQEJKhkJBgNpV67jm7K5FAojkFCQUhGQpgdhl89NHOPVmFBBf1FCQU\nhGwojB4Nu3bBO+/YXYkEgpYWaGyE/v3trkSkc4VsKHTrBrfeanoLIkfz+edw8snQvbvdlYh0rpAN\nBYDJk6GkRCfgkaPTwjUJFSEdChERcNVV8N2yCpHDamjQfIKEhpAOBTCHpz7xBDQ3212J+DP1FCRU\nhHwoJCfDoEGwfLndlYg/U09BQkXIhwLsPzxV5HDUU5BQoVAALrvMfBLctMnuSsRfqacgoUKhgDnM\ncNo09Rbk8NRTkFDh1S6pwWTKFIiN1X9+aZ+2uJBQoZ7Cd04+GSZNgkcesbsS8Ufa4kJCRUhunX04\n1dUwdCh8/DH07dtlDyt+bt8+6NXL7KrbTR+jJABo62wfOeMMyMw06xZEvvfpp9CvnwJBQoNe5oeY\nPRsefliL2WQ/zSdIKFEoHCI11Sxoe/ZZuysRf6H5BAklCoV23Hkn/O538O23dlci/kBHpEkoUSi0\n45JLzMTiK6/YXYn4Ay1ck1CiUGiHw2HmFvLz7a5E/IF6ChJKFAqHMW6ceTN46y27KxG7qacgoUSh\ncBjdu8MvfqHegqinIKHF41BobGwkMzOThIQERo4cSVNTU7vtSkpKSExMJD4+nvwD3mHvuOMOkpKS\nSElJ4YorrmDXrl2eltJprr8eysvh/fftrkTspJ6ChBKPQyEvL4/MzEy2bt3K8OHDycvLa9OmtbWV\n6dOnU1JSQkVFBcuWLaOyshKAkSNH8v777/Puu++SkJDAb3/7W8//ik5ywglmW+0HH7S7ErGTegoS\nSjwOheLiYnJzcwHIzc3lpZdeatOmvLycuLg4YmJiCA8PJycnh6KiIgAyMzPp9t0S0fT0dGpraz0t\npVPdcgsUFYGfliedbO9e2LMHTjrJ7kpEuobHu6Q2NDQQ+V2fOjIykoaGhjZt6urqiI6Odl93Op1s\n3LixTbunnnqKq666qt3HmTt3rvv7jIwMMjIyPC3ZIyefbIaRHn5YPYZQ1NAAAwaYI9JE/FVpaSml\npaU+ua8jhkJmZib19fVtfj5//vyDrjscDhzt/K9p72ft3ddxxx3H1Vdf3e7vDwwFu8yaBUOGmEVt\n/fvbXY10Jc0nSCA49APzvHnzPL6vI4bCmjVrDvu7yMhI6uvrGThwINu3b2fAgAFt2kRFReFyudzX\nXS4XTqfTff3pp59m5cqVvP76657U3mWio2HiRHjgAbPSWUKH5hMk1Hg8p5Cdnc2SJUsAWLJkCWPH\njm3TJi0tjaqqKmpqamhubqawsJDs7GzAHJX0wAMPUFRURI8ePTwto8vcfTf88Y/mk6OEDvUUJNR4\nHApz5sxhzZo1JCQksHbtWubMmQPAtm3buPTSSwEICwujoKCAUaNGkZyczMSJE0lKSgJgxowZ7N69\nm8zMTFJTU5k2bZoP/pzO43TCtddq3UKoUU9BQo1OsnMMtm+HQYPg3/+GU0+1uxrpCjNmQEKC+SoS\nKHSSnS5yyikweTK0syRDgpS2zZZQo1A4RrNnm3MtaN1CaNDwkYQahcIxioyEqVNhwQK7K5GuoIlm\nCTWaU/DA55/DWWfB5s1w+ul2VyOdqW9fcLngxBPtrkSk4zSn0MX69YObb4b777e7EulMe/aYc3X3\n7Wt3JSJdR6HgoZ//HF54AT76yO5KpLM0NJj5BG1xIaFEoeChk0+G6dPVWwhmmk+QUOTxhnhi9kSK\ni4OqKoiPt7sa8TUdeSShSD0FL0REwM9+Bn6wZ590AvUUJBQpFLw0axasWwebNtldifiaegoSihQK\nXurdG+67D26/Hfzw6FnxgnoKEooUCj5w/fXwxRfmaCQJHuopSChSKPhA9+7w0ENmC4y9e+2uRnxF\nPQUJRQoFHxkxApKToaDA7krEV9RTkFCkbS586IMPYNgwqKw0q54lsPXubbZL79PH7kpEjo03750K\nBR/7ft/9Rx+1tw7xzu7dZuho926taJbAo72P/Mi998Jzz5legwSu7+cTFAgSahQKPtavH8yZA3fc\nYXcl4g3NJ0ioUih0gunToaICXnvN7krEUwoFCVUKhU5w/PHwu9+ZnVRbW+2uRjyhw1ElVCkUOskV\nV5h9+J96yu5KxBPqKUioUih0EocDFi6EX/0KPv3U7mrkWKmnIKFKodCJUlPh2mvNvkgSWNRTkFDl\ncSg0NjaSmZlJQkICI0eOpKmpqd12JSUlJCYmEh8fT35+fpvfP/TQQ3Tr1o3GxkZPS/Fr8+bBW2/B\n6tV2VyLHQj0FCVUeh0JeXh6ZmZls3bqV4cOHk5eX16ZNa2sr06dPp6SkhIqKCpYtW0ZlZaX79y6X\nizVr1nD66ad7Wobf69ULFi0y53Tes8fuaqSj1FOQUOVxKBQXF5ObmwtAbm4uL730Ups25eXlxMXF\nERMTQ3h4ODk5ORQVFbl/f/vtt/O73/3O0xICxujRkJ4Ov/mN3ZVIR1iWegoSujw+HWdDQwOR3/2v\niYyMpKGhoU2buro6oqOj3dedTicbN24EoKioCKfTyTnnnHPEx5l7wGnNMjIyyMjI8LRkWz38MJx9\nNlx9NRzlTxabffEFhIdDz552VyLSMaWlpZSWlvrkvo4YCpmZmdTX17f5+fz58w+67nA4cLSzH0B7\nPwP4+uuvWbBgAWvWrHH/7HD7dMwNknNdRkbC/Plw443w9ttmu23xT+olSKA59APzvHnzPL6vI4bC\ngW/ah4qMjKS+vp6BAweyfft2BgwY0KZNVFQULpfLfd3lcuF0Ovnoo4+oqakhJSUFgNraWs477zzK\ny8vbvZ9gMWUKPPMMPPaYWfUs/knzCRLKPJ5TyM7OZsmSJQAsWbKEsWPHtmmTlpZGVVUVNTU1NDc3\nU1hYSHZ2NoMHD6ahoYHq6mqqq6txOp1s3rw5qAMBoFs3WLwY5s6F2lq7q5HDUU9BQpnHoTBnzhzW\nrFlDQkICa9euZc6cOQBs27aNSy+9FICwsDAKCgoYNWoUycnJTJw4kaSkpDb3dbhhpmCUlAS33rp/\ni23xP+opSCjT+RRs8M03MGQI3H8/jB9vdzVyqF/9yuxf9etf212JiGd0PoUA06MHPP206TFoGMn/\nqKcgoUyhYJMf/cgMIV13nXZS9Tf19ZpTkNClULDRXXdBSws8+KDdlciBGhrUU5DQpVCwUffu8Oc/\nw0MPwd//bnc18j31FCSUKRRsdtppUFBgVjrv3m13NWJZZqtzhYKEKh195CcmTzbrGJ580u5KQltj\nI8TGws6ddlci4jkdfRQEFi6E9eth+XK7KwltixdDWprdVYjYRz0FP7JpE1x6qZlfOO00u6sJPatX\nw/XXm3+HqCi7qxHxnHoKQWLoUJg1y5ytTYepdq2aGnN48LJlCgQJbQoFPzN7NoSFwd13211J6Pj6\na7jiCpgzBy66yO5qROyl4SM/tGOHOSnPPfeYT6/SeSzLTPLv3Qt/+QuE0DZcEsS8ee/0+CQ70nl+\n8AMoLoaMDIiLgx//2O6Kgtfjj8M//gFlZQoEEVBPwa+tXAlTp5o3LE08+94778BPf2pOehQXZ3c1\nIr6jieYglZUFv/gFZGdrYZuv1dfDhAnw1FMKBJEDqafg5yzLnLGtqQn++lezwE28s3cvZGbCJZeY\nEx6JBBtv3jsVCgFg714YMcLMMdx3n93VBLaWFpg40YRrYaFCVoKTJpqD3PHHw9/+Zo5ISk6Gq66y\nu6LAZFlw883w5Zfw8ssKBJH2KBQCxIABUFRkegwDBsDw4XZXFFgsy6wBef99WLPGBK2ItKXPSgHk\nnHPMvMJVV8Ebb9hdTWDJz4dVq2DFCujd2+5qRPyXQiHAXHihGQu/8krYsMHuagLDE0+Yy+rVcPLJ\ndlcj4t800RygXnvNnIPhxRfhggvsrsZ/LV8Ot91melY69FRChY4+ClGvvmo2zysuNud8loOtXm2e\nnzVrzNCbSKjQ4rUQNWoUPP20Wdy2aZPd1fiXF16ASZPMVwWCSMd5HAqNjY1kZmaSkJDAyJEjaWpq\narddSUkJiYmJxMfHk5+ff9DvHn30UZKSkhg8eDB33nmnp6WEtKwsc7a2yy4ze/iIOb3pjBmmJ6Wh\nNZFjZHnojjvusPLz8y3Lsqy8vDzrzjvvbNOmpaXFio2Ntaqrq63m5mYrJSXFqqiosCzLstauXWuN\nGDHCam6HYkjzAAAKb0lEQVRutizLsj799NM2t/eivJDz0kuW1b+/Zb36qt2V2Ke11bJmz7ass86y\nrOpqu6sRsY83750e9xSKi4vJzc0FIDc3l5deeqlNm/LycuLi4oiJiSE8PJycnByKiooAeOyxx7jr\nrrsIDw8HoH///p6WIpiN3f76V7PV9iOPmOPyQ0lzs/nbN2yAt96CmBi7KxIJTB4vXmtoaCAyMhKA\nyMhIGhoa2rSpq6sjOjrafd3pdLJx40YAqqqqWL9+PXfffTc9evTgwQcfJK2dk+POPWBzmoyMDDIy\nMjwtOehdeKHZUTU7G/71L1i0CI47zu6qOt8XX5iT5PTpA6+/DiecYHdFIl2rtLSU0tJSn9zXEUMh\nMzOT+vr6Nj+fP3/+QdcdDgeOdjajb+9n32tpaWHnzp2UlZWxadMmJkyYwMcff9ym3VztWHZMYmLM\nVtDXXGNWPf/tb2YFdLDats3Mq1xwASxcCN27212RSNc79APzvHnzPL6vI4bCmjVrDvu7yMhI6uvr\nGThwINu3b2dAO+88UVFRuFwu93WXy4XT6QRMr+GKK64AYOjQoXTr1o0dO3bwgx/8wKM/RPbr3dsc\ndXPPPWa/pKKi4DwCZ8UKuPFGmDkT7rxTJ8kR8QWP5xSys7NZsmQJAEuWLGHs2LFt2qSlpVFVVUVN\nTQ3Nzc0UFhaSnZ0NwNixY1m7di0AW7dupbm5WYHgQ926wf33w29/a/ZLWr7c7op856uvzMZ206fD\nc8+ZcysrEER8xNMZ6h07dljDhw+34uPjrczMTGvnzp2WZVlWXV2dlZWV5W63cuVKKyEhwYqNjbUW\nLFjg/nlzc7N1zTXXWIMHD7bOPfdca926dW0ew4vy5ACbNllWQoJljRtnWXV1dlfjnbIyy4qLs6zc\nXMtqarK7GhH/5M17p1Y0h4hvvoH58805ie+/3wy7BNLW0fv2mfofe8xMoI8bZ3dFIv5L21xIh/37\n3yYQunc3m8QlJ9td0dG9/z7ccAOcdJI5feapp9pdkYh/0zYX0mGDB8Obb5rtty+8EO6915zZzR99\n8IHZ9O+SSyA312x9rUAQ6VwKhRDUvTvceiv885/w3nsQG2vON7Bzp92VGR9+aBaiDRsGZ59trk+b\npslkka6gUAhhTqfZevvll80QzZlnmiN6qqrsqefjj80w0Y9+BPHxJgzuusssShORrqFQEFJTYelS\nEwwnngg//jGMHQvr13f+dhmff27mCcaMgaFDITrahMGvf21qEZGupYlmaeOrr0xIPPww7NkDGRlm\nXP/ii32zp9Ann5geyosvwpYtkJlptqm49FIFgYgv6Ogj6RSWZYaS1q3bf+nZ04RERoYJiIgIcznp\nJLOS+vvDXFtboa4Oqquhpmb/1/feM6EwZgxcfrkJBO1VJOJbCgXpEpYFlZUmHDZsgO3bzeR0U5O5\n7NkDffua4PjsM+jXD844w4RHTIz5PiEBzj8fwjzeilFEjkahIH6hpQV27YLduyEyEnr0sLsikdCk\nUBARETctXhMREZ9QKIiIiJtCQURE3BQKIiLiplAQERE3hYKIiLgpFERExE2hICIibgoFERFxUyiI\niIibQkFERNwUCiIi4qZQCCGlpaV2lxBU9Hz6jp5L/+FxKDQ2NpKZmUlCQgIjR46kqamp3XYlJSUk\nJiYSHx9Pfn6+++fl5eX88Ic/JDU1laFDh7Jp0yZPS5EO0n8839Lz6Tt6Lv2Hx6GQl5dHZmYmW7du\nZfjw4eTl5bVp09rayvTp0ykpKaGiooJly5ZRWVkJwOzZs7nvvvvYsmULv/nNb5g9e7bnf4WIiPiE\nx6FQXFxMbm4uALm5ubz00ktt2pSXlxMXF0dMTAzh4eHk5ORQVFQEwCmnnMKuXbsAaGpqIioqytNS\nRETEVywPRUREuL//9ttvD7r+veXLl1tTp051X3/mmWes6dOnW5ZlWTU1NZbT6bSio6OtqKgo65NP\nPmlze0AXXXTRRRcPLp464plyMzMzqa+vb/Pz+fPnH3Td4XDgcDjatGvvZ9+bMmUKCxcu5PLLL2f5\n8uXccMMNrFmz5qA2ls66JiLSpY4YCoe+SR8oMjKS+vp6Bg4cyPbt2xkwYECbNlFRUbhcLvd1l8uF\n0+kEzNDSa6+9BsD48eOZOnWqR3+AiIj4jsdzCtnZ2SxZsgSAJUuWMHbs2DZt0tLSqKqqoqamhubm\nZgoLC8nOzgYgLi6ON954A4C1a9eSkJDgaSkiIuIjDsvDMZrGxkYmTJjAJ598QkxMDM8//zwRERFs\n27aNG2+8kRUrVgCwatUqbrvtNlpbW5kyZQp33XUXAH//+9+59dZb2bt3LyeccAKLFi0iNTXVd3+Z\niIgcO49nIzrB888/byUnJ1vdunWz/vGPfxy23apVq6yzzjrLiouLs/Ly8rqwwsCyY8cOa8SIEVZ8\nfLyVmZlp7dy5s912p59+unX22WdbQ4YMsYYOHdrFVfq/jrzeZsyYYcXFxVnnnHOOtXnz5i6uMLAc\n7flct26d1bdvX2vIkCHWkCFDrPvuu8+GKv3f5MmTrQEDBliDBw8+bBtPXpd+FQqVlZXWf/7zHysj\nI+OwodDS0mLFxsZa1dXVVnNzs5WSkmJVVFR0caWB4Y477rDy8/Mty7KsvLw8684772y3XUxMjLVj\nx46uLC1gdOT1tmLFCmv06NGWZVlWWVmZlZ6ebkepAaEjz+e6deusMWPG2FRh4Fi/fr21efPmw4aC\np69Lv9rmIjEx8ahzC0da+yAH68haku9ZOtKrXR15vR34PKenp9PU1ERDQ4Md5fq9jv7/1evx6IYN\nG8ZJJ5102N97+rr0q1DoiLq6OqKjo93XnU4ndXV1NlbkvxoaGoiMjATM0WKHe0E4HA5GjBhBWloa\nf/jDH7qyRL/Xkddbe21qa2u7rMZA0pHn0+Fw8Pbbb5OSkkJWVhYVFRVdXWZQ8PR1ecRDUjvD4dY+\nLFiwgDFjxhz19kda+xCKvF1LAvDWW29xyimn8Nlnn5GZmUliYiLDhg3rlHoDTUdfb4d+stXrtH0d\neV7OPfdcXC4XPXv2ZNWqVYwdO5atW7d2QXXBx5PXZZeHwpHWPnTEkdY+hCJv15KA2XIEoH///lx+\n+eWUl5crFL7TkdfboW1qa2u1bcthdOT57NOnj/v70aNHM23aNBobGzn55JO7rM5g4Onr0m+Hjw43\npniktQ9ysI6sJdmzZw9ffvklAF999RWrV6/m7LPP7tI6/VlHXm/Z2dksXboUgLKyMiIiItzDdnKw\njjyfDQ0N7v//5eXlWJalQPCAx69L7+fAfeeFF16wnE6n1aNHDysyMtL6yU9+YlmWZdXV1VlZWVnu\nditXrrQSEhKs2NhYa8GCBXaV6/d27NhhDR8+vM0hqQc+nx999JGVkpJipaSkWIMGDdLz2Y72Xm+P\nP/649fjjj7vb3HrrrVZsbKx1zjnnHPFwajn681lQUGANGjTISklJsc4//3zrnXfesbNcv5WTk2Od\ncsopVnh4uOV0Oq0nn3zSJ69LjxeviYhI8PHb4SMREel6CgUREXFTKIiIiJtCQURE3BQKIiLiplAQ\nERG3/wce7YPlUEmtNAAAAABJRU5ErkJggg==\n", + "text": [ + "" + ] + } + ], + "prompt_number": 248 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot(x[:-2], diff(diff(map(p1, x))))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 249, + "text": [ + "[]" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 249 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 249 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file