{ "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": "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\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": {} } ] }