Skip to content

Instantly share code, notes, and snippets.

@rjleveque
Created February 4, 2014 05:06
Show Gist options
  • Save rjleveque/8798427 to your computer and use it in GitHub Desktop.
Save rjleveque/8798427 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "hw0python"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Homework 0: Interpolation examples (Python version)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Developed by Randy LeVeque for a course on Approximation Theory and Spectral Methods at the University of Washington.\n",
"\n",
"See <http://faculty.washington.edu/rjl/classes/am590a2013/codes.html> for more IPython Notebook examples."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a demonstration of using an IPython notebook to combine code with\n",
"descriptions.\n",
"\n",
"It also demonstrates how to use pychebfun from within the notebook.\n",
"\n",
"## Sample problem\n",
"\n",
"Determine the quadratic polynomial $p(x)$ that interpolates the data\n",
"$$\n",
"(-1,3),~~(0,-1),~~(1,2)\n",
"$$\n",
"first using the Vandermonde matrix and then using the Lagrange form of\n",
"interpolating polynomial.\n",
"\n",
"Note that if the notebook is started with --pylab option then numpy and matplotlib are already imported."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Interpolation data for all the examples:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"xj = array([-1., 0., 1.])\n",
"yj = array([3., -1., 2.])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Using monomials"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For a quadratic interpolation we use basis functions $1,~x,$ and $x^2$.\n",
"\n",
"Define the Vandermonde matrix: The columns are the basis functions evaluated at the interpolation points."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A = vstack((xj**0, xj, xj**2)).T\n",
"print A"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[[ 1. -1. 1.]\n",
" [ 1. 0. 0.]\n",
" [ 1. 1. 1.]]\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solve the system for the monomial coefficients:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from numpy.linalg import solve\n",
"c = solve(A,yj)\n",
"print c"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[-1. -0.5 3.5]\n"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the resulting polynomial on a fine grid:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = linspace(-1, 1, 1001)\n",
"p = c[0] + c[1]*x + c[2]*x**2\n",
"plot(x,p)\n",
"hold(True)\n",
"plot(xj,yj,'b.',markersize=10)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 4,
"text": [
"[<matplotlib.lines.Line2D at 0x10f0b0850>]"
]
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD9CAYAAAC7iRw+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtYVOXaP/DvcCiVTDRzQGBLaSoCI5AIPxUbLU1RxkMn\nfM1QCWnbcbc1tdoJechSIzNTO6jgrrZ5SnzFStMBzYDSPKSSUpoDCK+k7HC3ldP6/fEkiYAOs2Zm\nzcz6fq6LSwcWa93XON7zzL2e5340kiRJICIi1XBTOgAiIrIvJn4iIpVh4iciUhkmfiIilWHiJyJS\nGSZ+IiKVkZX4L126hKioKISFhSE6OhppaWlNHjdr1izodDpER0ejoKBAziWJiEgmDzm/3KpVK+ze\nvRtt2rTB5cuXcffddyMuLg7dunWrPyYrKwuHDh3C4cOHkZeXh4kTJyI3N1d24EREZBnZpZ42bdoA\nAC5evIiamhrcfPPNDX6emZmJhIQEAEBUVBQqKipQVlYm97JERGQhWSN+AKirq0N4eDiOHj2Kt956\nCwEBAQ1+Xlxc3OB7/v7+KCoqglarrf+eRqORGwYRkSpZ0nxB9ojfzc0Nhw4dQmFhId599118//33\nNwys6UQvoWNHCcuXS5Akfln6NXv2bMVjcKUvPp98Ph35y+K8bfFvXiMwMBCxsbHIzs5u8H0/Pz+Y\nTKb6x0VFRfDz82v0+xoNEB0NPPGEtSIiIqKmyEr85eXlqKioAAD8+uuv2L59O0JDQxscYzAYkJGR\nAQDIzc2Ft7d3gzLPFcOGAU28HxARkZXJqvGfPXsWCQkJqK2thY+PD55//nnce++9WLlyJQAgOTkZ\nsbGxyMnJQWhoKLy8vLB69eomz7VmDdCjB5CaCjTxvkBm0uv1SofgUvh8WhefT8egkeQUiqwVhEYD\nSZLwxBPA7bcDc+YoHRERkeO7kjtb/HuOlPhPngT69QNOnQJuuUXpqIiIHJulid+hWjbcdRcwcCCw\napXSkRARuS6HGvEDQG4uMG4ccPIk4CF7lQERketyiRE/IKZ0BgQAGzYoHQkRkWtyuMQPANOnA2+8\nASj/WYSIyPU4ZOIfMQK4dAnYtUvpSIiIXI9DJn43N2DaNGDhQqUjISJyPQ53c/eKy5eBO+4Atm8H\nevdWKDAiIgfmMjd3r7j5ZuDZZ4FFi5SOhIjItTjsiB8AKiqArl2B/fuBwED7x0VE5MhcbsQPAN7e\nwJQpHPUTEVmTQ4/4AaCsDAgKAo4dA3x87BwYEZEDc8kRPyA6dY4fD7z1ltKREBG5Bocf8QPAL78A\nERFAYSHQvr0dAyMicmAuO+IHgC5dAIMBWLZM6UiIiJyfU4z4AaCgQHTuPHUK8PKyU2BERA5MkRG/\nyWTCoEGDEBwcDL1ejzVr1jQ6xmg0ol27dggPD0d4eDjmzp1r0bV69gTuuQd4/305ERMRkawRf2lp\nKUpLSxEWFoby8nKEhIRg9+7dCAoKqj/GaDTizTffRGZmZvNBmPmudeCAKPn89JNY4EVEpGaWjvhl\ndbz38fGBzx9zLDt27IjIyEiUlJQ0SPwAzAosJSWl/u96vb7JvTkjIoDQUGDtWuDxx+VETkTkfIxG\nI4xGo+zzWK3GX1hYiKFDh+LIkSPwuqoIn52djbFjx8LHxwddunTBokWL0KtXr4ZBtOBda88eYNIk\nUfPnRi1EpGaKzuq5ePEi4uPjkZaW1iDpA0BERARMJhMOHjyIsWPHwmAwyLpWTAzg68uNWoiILCV7\nxF9dXY2RI0di+PDheO655657rCRJ6NixI06ePIkOHTr8GUQL37W2bwdmzAAOHQI0GotDJyJyaoqM\n+CVJQmJiIoKDg5tN+mVlZfWBbd26Fa1bt26Q9C0xbBjg7g5s3SrrNEREqiRrxL93714MHDgQOp0O\nmj+G3vPnz8eZM2cAAMnJyVi2bBmWL18ODw8P6HQ6PPvss7j77rsbBmHBu9amTcD8+cC333LUT0Tq\nZOmI32kWcF2rrk5s0PL660BsrI0CIyJyYC7dsqEpbm7AK68AqanclJ2IqCWcNvEDwAMPABcvAl98\noXQkRETOw6kTv5sb8I9/cNRPRNQSTp34AeChh8QWjTt3Kh0JEZFzcPrE7+7OUT8RUUs4feIHgEce\nAc6dA3btUjoSIiLH5xKJ390dePll4NVXlY6EiMjxuUTiB4Bx44CSEsAKjeuIiFyayyR+Dw/gpZdE\nrZ+IiJrnMokfAMaPB86cAXJylI6EiMhxuVTi9/QUo/6r9nQhIqJruFTiB4AJEwCTiTN8iIia43KJ\n39MTmD1bzO3nvH4iosZcLvEDYobPhQvA558rHQkRkeNxycTv7i7m9HPUT0TUmKzEbzKZMGjQIAQH\nB0Ov12PNmjVNHjdr1izodDpER0ejoKBAziXNNnYsUFsLbNlil8sRETkNDzm/7OnpibS0NISFhaG8\nvBwhISGIiopCUFBQ/TFZWVk4dOgQDh8+jLy8PEycOBG5ubmyA78RNzcx6n/xRcBgEI+JiFzBlCnA\niROW/76sdOjj44OwsDAAQMeOHREZGYmSkpIGx2RmZiIhIQEAEBUVhYqKCpSVlcm5rNlGjgTatAE+\n/dQulyMisosTJ4DsbMt/X9aI/2qFhYU4evQooqOjG3y/uLgYAQEB9Y/9/f1RVFQErVbb4LiUqybf\n6/V66PV62TFpNMDcucDTTwMPPihW9xIROSuj0Qij0YjTp+Wdxyqp8OLFi4iPj0daWhq8vLwa/fza\nPSE1TeyOnmKjVVf33QdotcBHHwF/fPAgInJKVwbFRiPwyy8AYFmPGtmV7+rqajzwwAN49NFHMWrU\nqEY/9/Pzg8lkqn9cVFQEPz8/uZc1m0YDzJkjevhUVdntskRENtOli7wKhqzEL0kSEhMTERwcjOee\ne67JYwwGAzIyMgAAubm58Pb2blTmsbWBA4Fu3YDVq+16WSIim5gwAWjf3vLf10jX1mFaYO/evRg4\ncCB0Ol19+Wb+/Pk4c+YMACA5ORkAMHPmTGzbtg1eXl5YvXp1g1k/gCj9yAjDLHl5os5/4gTQurVN\nL0VEZDOSBERFAX//OxAfb1nulJX4rcUeiR8ARo8GBgwApk2z+aWIiGxi0yZRvt6/H3B3Z+K/oWPH\nAL1ejPq9vW1+OSIiq6qtBUJDgcWLgeHDLc+dqlrW1KsXEBcHvP660pEQEbXc2rVAx47AsGHyzqOq\nET8gWjaHhQFHjgCdO9vlkkREsl2+DHTvDnz8MdC/v/geR/xmCggAEhO5RSMROZcVKwCd7s+kL4fq\nRvwAcP480KMHsHev+JOIyJFVVgJ33QV8+aVI/ldwxN8CHTqImT0vvaR0JEREN7ZwITB0aMOkL4cq\nR/wA8N//inrZhg1iTiwRkSMqKREzeQ4cECt2r2Zp7lRt4geADz4QPXx27RKtHYiIHM2UKWKVblOz\nEZn4LVBTI95J09LkT48iIrK2G609Yo3fAh4ewPz5wMyZQF2d0tEQETU0YwYwa5b1F5yqOvEDoo1D\n69ai5ENE5CiMRuCHH4CpU61/blWXeq74+mtg3Djgxx/ZwI2IlFdXJyadPP+8yE3NYalHhv79xZOc\nlqZ0JEREwPr14s9HHrHN+Tni/8NPP4nk/8MPgI+PoqEQkYpdviz6in3wATBo0PWP5Yhfpq5dxdaM\ns2crHQkRqdny5UBQ0I2Tvhwc8V/lwgXRwmHXLiAkROloiEhtWpqDFBnxT548GVqtFqGhoU3+3Gg0\nol27dggPD0d4eDjmzp0r53I217498PLLwPTpSkdCRGo0Zw4wdqztB56yRvx79uzBLbfcgsceewxH\njhxp9HOj0Yg333wTmZmZ1w/CQUb8gNiQPSQEWLoUuP9+paMhIrU4cUJMNDl6FOjUybzfUWTEHxMT\ng/Y32PHXURK6uW66CXjjDdHErbZW6WiISC2mTRMLtsxN+nJ42PLkGo0G+/btQ3BwMLp06YJFixah\nV69eTR6bkpJS/3e9Xg+9Xm/L0K5r1CgxtXPVKiApSbEwiEglduwQ7RmuTONsjtFohNFolH092Td3\nT58+jbi4uCZLPZWVlXB3d4enpyfS09OxYMECFBYWNg7CgUo9V+zfD4wcKT5+tW2rdDRE5KpqasSu\ngHPnik4CLeGQ0znbtm2LNm3awNPTE4mJibhw4QLOnz9vy0tazd13i/7Xr72mdCRE5Mref1+Ud0aN\nst81bZr4y8rK6t+Ntm7ditatW6NDhw62vKRVvfYa8N57YnEXEZG1VVQAKSmitGzP1vCyavzjxo1D\ndnY2ysvLERAQgNTUVFRXVwMAkpOTsWHDBixfvhweHh7Q6XTYsmWLVYK2l86dxQ2X558HnCx0InIC\nc+aI8k7v3va9Lhdw3cDly0BwMLBsGad3EpH1nDgB9OsnbupaOpPHIWv8ruDmm8XHsGefFXP8iYis\nwZ7TN6/FxG+GkSOBO+4A3nlH6UiIyBV88YUY6T/zjDLXZ6nHTD/+CAwYILp3arVKR0NEzury5T+3\nfB0xQt65WOqxsR49RPfOF19UOhIicmZpaUDPnvKTvhwc8bfAb7+Jf7AtW4DISKWjISJnYzIB4eFA\nfj5w553yz8cRvx3ceiswb56oy3FzdiJqqWnTgCeftE7Sl4OJv4USEkTztrVrlY6EiJzJV1+Jkf7M\nmUpHwlKPRb79FoiLA44fFz38iYiup6pK9OOZP7/l/Xiuh6UeO4qMFJsl8EYvEZlj6VKgSxf79uO5\nHo74LXThgtgQecsWoG9fpaMhIkdVUgLodMA33wB33WXdc3PEb2ft24sNW/76V27YQkTNe+EFYMoU\n6yd9OZj4ZXj0UdGrf8UKpSMhIkdkNAJ79gAvvaR0JA2x1CPTsWPAPfcAR44APj5KR0NEjuLyZVHi\nWbgQMBhscw2WehTSqxeQmCjm5xIRXbFggcgPtkr6cnDEbwX/+Y/4B16zBhg0SOloiEhpJ04A/fsD\nBw4AAQG2uw5H/Ary8gLefhuYOpWtm4nUTpLEpI+XXrJt0pdDVuKfPHkytFotQkNDmz1m1qxZ0Ol0\niI6ORkFBgZzLOTSDAejWTdTziEi9/vlPsaXiU08pHUnzZCX+SZMm4fPPP2/251lZWTh06BAOHz6M\nJUuWYOLEiXIu59A0GrFLV1qaaOFMROrz66/A9OnAypWAh6yNbW1LVuKPiYlB++v0LMjMzERCQgIA\nICoqChUVFSgrK5NzSYf2l78Ar7wi5uyyiRuR+syYATzyCNCnj9KRXJ9N35OKi4sRcFWRy9/fH0VF\nRdA2sZNJSkpK/d/1ej30er0tQ7OZJ58EPv4Y+PBDIClJ6WiIyF5ycsTOWkeP2u4aRqMRRqNR9nls\n/mHk2jvOGo2myeOuTvzOzN0deP99YPBgsdFC585KR0REtnbpEpCcDLz1lmjfbivXDopTU1MtOo9N\nZ/X4+fnBZDLVPy4qKoKfn58tL+kQQkOBJ54Ann5a6UiIyB7mzAGCgkTzRmdg08RvMBiQkZEBAMjN\nzYW3t3eTZR5X9NJL4iPf5s1KR0JEtnTwoPiUv2yZmOThDGSVesaNG4fs7GyUl5cjICAAqampqK6u\nBgAkJycjNjYWOTk5CA0NhZeXF1avXm2VoJ1Bq1bAe+8B//M/YlGXt7fSERGRtVVXA5Mni4aNvr5K\nR2M+rty1seRkMQpgIzci1/Paa0B2NrB9uzKjfUtzJxO/jVVUACEhYlGHk05UIqImFBQAMTHAd9+J\nTVaUwJYNDsrbW4z2J08GLl5UOhoisobaWtGcMSVFuaQvBxO/HYwcKUYGM2YoHQkRWcOyZWLq9l//\nqnQklmGpx04uXBDTPDMyxBx/InJOp06J7Va//hro3l3ZWFjqcXDt24tZPomJLPkQOau6OlG2feEF\n5ZO+HBzx29mkSUDr1sC77yodCRG11JIlwPr1YiaPu7vS0XBWj9OoqBAlnzVrgHvvVToaIjJXQQEw\nYACQmytasDsClnqchLf3nyWfykqloyEic9TUAAkJwKuvOk7Sl4MjfoUkJop+3StXKh0JEd3I3Ll/\ndt90pLYMLPU4mX//G+jdW0wLGzFC6WiIqDnffw/cf7/YP9ffX+loGmKpx8m0ayemdiYlAf/3f0pH\nQ0RNuXwZeOwxYPFix0v6cnDEr7BZs0QXzy1bHOsjJBGJRZcnTwIbNzrm/0+WepxUVRUQHS3690+Z\nonQ0RHTFnj3Aww8Dhw4BnTopHU3TmPid2LFjwD33APv2AXfdpXQ0RHThAhAWJu7BjRypdDTNY+J3\ncu+8A6xdC+zdC3h6Kh0NkXpJEhAfL0b5S5cqHc318eauk3vySaBDBzFtjIiUk54uPoW/8YbSkdiO\n7MSfk5ODiIgI6HQ6LG3i7dFoNKJdu3YIDw9HeHg45jKzNUmjAVatEvP69+1TOhoidTp5Epg+Hfj4\nY9FaxVXJ2nqxtrYWkydPxs6dO+Hn54fIyEjcd999CAoKanDcPffcg8zMTFmBqoGvr0j848eLOcPt\n2ysdEZF6VFWJrVJfeUW0VXFlskb8+fn56NatGwIDA+Hp6Yn4+Hhs2bKl0XFqr9+3xKhR4mbS44+L\nWiMR2cfs2aKu/9RTSkdie7JG/MXFxQgICKh/7O/vj7y8vAbHaDQa7Nu3D8HBwejSpQsWLVqEXr16\nNTpXSkpK/d/1ej30Kt6ncOFCoF8/YPlyYOpUpaMhcn27d4va/sGDjjlf/wqj0Qij0Sj7PLISv8aM\nZygiIgImkwmenp5IT0+HwWBAYWFho+OuTvxq16oVsG6dSP79+olpZURkG2VlwKOPio65jjpf/4pr\nB8WpqakWnUdWqcfPzw8mk6n+sclkgv8165rbtm2LNm3awNPTE4mJibhw4QLOnz8v57KqcNddwFtv\nAY88wo1biGyltlYk/UmTgKFDlY7GfmQl/j59+uDkyZM4ffo0qqqqsG7dOhgMhgbHlJWV1df4t27d\nitatW6NDhw5yLqsa48cD/fuz3ENkK/PmAdXVYtN0NZFV6vHw8MCqVaswZswY1NTUICkpCUFBQVj5\nR6/h5ORkbNiwAcuXL4eHhwd0Ol2TN3+peUuXApGRov6YkKB0NESuY9cucR9t/37RIl1NuHLXCfzw\nAzBokOgHfs1MWSKyQGkpEBEhBlRDhigdjeW4cteFhYQAr78OjB3LXbuI5KqtFfP1H3/cuZO+HBzx\nO5GkJLFn76efOvaUMyJHNnu2+PS8c6djbJguB0f8KrB0KXDqFJCWpnQkRM4pKwv44APRksHZk74c\nHPE7mV9+AaKixKh/4ECloyFyHoWFYl3M5s1itpwr4IhfJbp0ETekxo0Dzp5VOhoi5/Cf/4h7ZCkp\nrpP05eCI30m9+irw5ZdiqTn79xM1T5LEQKlVK2D1ate6P8aNWFSmrg6IiwO6dQOWLFE6GiLH9eab\nwEcfiU2OXK3VMks9KuPmJl7Mn38OfPih0tEQOabdu0XTw02bXC/py8ERv5P78UcgJsa1blgRWcOZ\nM2IixEcfAYMHKx2NbXDEr1I9eoibvQ89JF7oRCQaG8bFAS+84LpJXw6O+F3E4sXAP/8p6pheXkpH\nQ6ScujpgzBhAqxU72rnSzdxr8eauykkSMHEi8N//il7+rvxiJ7qeGTOAvDwx6+2mm5SOxrZY6lE5\njUaMbkwmgPvZk1qtWQNs3Ci+XD3py6GyZqSurVUrMXshKkps5BIfr3RERPazd6+o6WdnA7fdpnQ0\njo2J38X4+gL/+7/AffcB/v7AgAFKR0Rke6dOiQkOa9eydbk5ZJd6cnJyEBERAZ1Oh6VLlzZ5zKxZ\ns6DT6RAdHY2CggK5l6Qb0OnEFLYHHwROnFA6GiLbOn8eGDECePFF4P77lY7GOchK/LW1tZg8eTI2\nbdqE/fv348MPP8Tx48cbHJOVlYVDhw7h8OHDWLJkCSZOnCjnkmSmIUPEtnKxscC5c0pHQ2Qbly4B\no0cDw4cDTz+tdDTOQ1biz8/PR7du3RAYGAhPT0/Ex8c32loxMzMTCX/sGRgVFYWKigqUlZXJuSyZ\nKTFR1PkNBjHbh8iV1NUBjz0mypsLFyodjXORVeMvLi5GQEBA/WN/f3/k5eXd8JiioiJotdoGx6Vc\ntduxXq+HXq+XExr9Yc4cUf+cMEG0cnbjPC5yEdOmAWVlwBdfqOd1bTQaYTQaZZ9HVuLXmDlZ/Np5\npk39Xoratrm3E40GWLUKGDoUeO450dCNc/zJ2aWliYS/d6+YzaYW1w6KU1NTLTqPrPdJPz8/mEym\n+scmkwn+/v7XPaaoqAh+fn5yLkstdPPNwJYtYrs5zvEnZ/fpp2Kl+vbtQPv2SkfjnGQl/j59+uDk\nyZM4ffo0qqqqsG7dOhgMhgbHGAwGZGRkAAByc3Ph7e3dqMxDtuftLTp5pqcDy5crHQ2RZb74Anjq\nKWDbNuAvf1E6Guclq9Tj4eGBVatWYcyYMaipqUFSUhKCgoKwcuVKAEBycjJiY2ORk5OD0NBQeHl5\nYfXq1VYJnFrOx0csY4+JEQtcHn5Y6YiIzPf118CjjwKffQb07q10NM6NvXpU6PBhMd1z7VpR+ydy\ndAcPijn6GRmcq3819uohs+l0opfJ+PHAN98oHQ3R9Z04IdajLFvGpG8tTPwqNWCAGD2NGgV8953S\n0RA1zWQSn0rnzhUr0ck6mPhVbPhw4IMPxHL3gweVjoaooeJi4N57gWeeASZPVjoa18ImbSpnMADV\n1eJNYMcOICRE6YiIgJISsXNWYiLw/PNKR+N6mPgJDzwAVFWJj9RffcXuhqSss2dF0p84UWyqQtbH\nxE8AgHHjxMh/yBBg1y6ge3elIyI1Ki0VSX/CBGDWLKWjcV1M/FTvsceA2lpg0CCxUIZlH7KnsjKR\n9MePB156SeloXBsTPzUwaZLofTJkCJCVBYSHKx0RqUFRkXjNjRsHvPyy0tG4PiZ+amTcONHfZ9gw\n0eMnOlrpiMiV/fSTSPpPPCG2TiTbY+KnJo0dK5J/XJxY7DVwoNIRkSs6elQsynr5ZZH4yT44j5+a\nNWIE8K9/iVk/n3+udDTkavbvF/P0X3+dSd/emPjpuu69VzTFSkgQvX2IrGHPHrF2ZOVKcTOX7Iul\nHrqh/v3FFM/hw8V0u2nTuJkLWW7jRjHC/+QT4L77lI5Gndidk8xWVCRu+A4dCixapJ7t7sh63n5b\nlHa2bgUiIpSOxvlZmjuZ+KlFLlwQbR4CAoA1a4CbblI6InIGdXVixs62bWLnrMBApSNyDWzLTHbR\nvr3YzOXSJTHy//VXpSMiR3fpkpginJcnNlNh0leexYm/srISo0ePhk6nw5gxY3Dx4sUmjwsMDIRO\np0N4eDj69u1rcaDkOFq3BtavB/r2BaKigIICpSMiR3XunJijX1cnmgB26KB0RATISPxz5sxBv379\ncPjwYURHR2NuM7t4azQaGI1GfP/998jPz7c4UHIs7u7AG2+IpfUDB4pPAURXO3QIiIwE7rkHWLdO\nrAgnx2Bx4s/MzERCQgIAICEhAZ999lmzx7J+77omTQI2bBB9fpYtUzoachSbNokZOwsWiE1UOBHA\nsVg8nbOsrAxarRYAoNVqUVZW1uRxGo0GgwcPhpubG6ZOnYqkpKQmj0tJSan/u16vh16vtzQ0srOB\nA0XtNi5O7Of79tti1S+pjyQBc+aIDX62bwf69FE6ItdiNBphNBpln+e6s3qGDBmC0tLSRt+fN28e\nEhIScOHChfrvdejQAefPn2907NmzZ+Hr64vjx48jNjYWGRkZiImJaRgEZ/W4hN9+E58ATCbxKeAv\nf1E6IrKnigrx73/2LLB5M+Drq3RErs/S3HndEf+OHTua/ZlWq0VpaSl8fHxw9uxZdOrUqcnjfP/4\n1w8KCsKYMWOQn5/fKPGTa7j1VpHwFy0SN34zMsTMH3J9338PPPSQWOT3r3/xE5+js7jyZjAYkJ6e\nDgBIT0/H6NGjGx3z+++/o7KyEgBw7tw5ZGVlITQ01NJLkhPQaIDp08V//okTRX23rk7pqMhWJAl4\n/33xBj9vHrB0KZO+M7B4AVdlZSUmTJiAn3/+GV27dsXatWtxyy23oKSkBElJSdi2bRt+/vlnjB07\nFgBw22234eGHH0ZycnLjIFjqcUnFxUB8vEgEGRlA585KR0TWdPEi8OSTotnahg1Az55KR6Q+XLlL\nDqmmRowEly8XI8O4OKUjImvIzxfN1WJixCjfy0vpiNSJiZ8c2tdfi0QxciSwcKFYBEbOp6YGeO01\n4J13xPTdBx9UOiJ1Y8sGcmj9+wMHDwLl5WKK37ffKh0RtdSpU2IxVnY2cOAAk74zY+Inu/H2Fq14\n//EPMfKfNUv0cSHHVlcnyjmRkWJTni+/BPz8lI6K5GCphxRRViZuDB47BqxeLXr+kOM5fhx4/HEx\nW+uDD3gD19Gw1ENORasVM0FSU4FRo4C//U0sACPHUF0tbsrHxIh7Mzk5TPquhImfFPXQQ8APP4ik\nHxQEfPyxmBtOytm1CwgLA/buFVM1p05lrx1Xw1IPOYxvvhFJpn17MWukVy+lI1KXM2eAv/8d+O47\n4M03gdGjucWmo2Oph5ze//t/YrbP2LFi9sjTT4t+7mRbv/8uVliHhwMhIeK+y5gxTPqujImfHIqH\nB/DUUyL5uLmJ8s/8+SI5kXXV1ADvvQd07y6m2u7fD8yezTUWasDETw7p9tuBJUuA3FyxoUf37mLl\nb3W10pE5P0kSN9aDg0VPpU2bxGNuiagerPGTU8jLE7t9FRYCM2eK9r9sBtYytbUiyc+fL8o4CxaI\nbRFZ0nFebNlAqvDNN2KjjyNHgBdeABITgTZtlI7KsVVXi9lSCxYA7dqJN9CRI5nwXQETP6nKt9+K\nkevevSL5P/kkEBCgdFSO5fx5sejq3XeBO+8UCX/wYCZ8V8JZPaQqkZFil6fcXNH2oXdv0QJ6zx6u\nAzh8GEhKArp2BY4eFfX7XbuAe+9l0ieBI35yCb/9BqxaJWap1NQAkyeLDeDVsgfA+fPiRm16utgH\n4YkngClTgGY2xiMXwVIPEcRoPy9PvAls2ABERwMPPwwYDECHDkpHZ12//y4apn30kfhz+HCx69l9\n94lpseQrte38AAAITklEQVT67F7qWb9+PYKDg+Hu7o4DBw40e1xOTg4iIiKg0+mwdOlSSy9HZBaN\nRiT7994Tm75PmABs3QrccQcwbJioeZ89q3SUlquoEIn+gQfEZuZLl4pE/8svYsQ/bBiTPt2YxSP+\ngoICuLm5ITk5GYsXL0ZERESjY2pra9GjRw/s3LkTfn5+iIyMxCeffIKgoKCGQXDETzZ28SKQlQVs\n3Ajs2AH4+wP33y/2ih0woPGipSlTgBMn/nzcpYsoo9hbVZW4j7FzJ/DVV6J+P3iwWFkbFwfcdpv9\nYyLHYWnutHhs0NOMVn35+fno1q0bAv9YGRIfH48tW7Y0SvxEtnbLLaLk8/DDYj77t9+K8khKili1\nGhwsPilER4sW0SdOiA1HrujYEVixQtTObUWSxKeU/HwRX36+WE3bo4cY1b/6KtCvH1fWknw2/VBY\nXFyMgKvm2Pn7+yMvL6/JY1NSUur/rtfrodfrbRkaqZi7+59J/pVXRK38wAGxRmDjRmDGDKCkpOHv\nlJeL+wYGg2gp7e5u2bXr6sS5iouBoiLxBnP8OFBQIL7c3cUbT9++YqOayEjRtI4IAIxGI4xGo+zz\nXDfxDxkyBKWlpY2+P3/+fMSZsWu2pgVzx65O/ET21KaNKPcMGPDn92JixBqBK266SWweExEhZtDc\nfrtYDHXlq21bUVvXaP78unwZqKwUZabKSuDCBaC0VBzfubPYxap7d7EV5YQJYmSv1XLKJTXv2kFx\namqqRee5buLfsWOHRSe9ws/PDyaTqf6xyWSCv7+/rHMS2cOdd4oReHm5KPMMGSJWvwIioZ87B/z7\n339+/fabGM3X1YmSjSSJlhJt24oyU9u2YutJX1+2miDlWaXU09zNhT59+uDkyZM4ffo0OnfujHXr\n1uGTTz6xxiWJbCo9XdT0N24UM2iuru3ffLO4OcwxDDkri2f1bN68Gc888wzKy8vRrl07hIeHY/v2\n7SgpKUFSUhK2bdsGAMjOzsZzzz2HmpoaJCUl4ZlnnmkcBGf1EBG1GBdwERGpDHv1EBGRWZj4iYhU\nhomfiEhlmPiJiFSGiZ+ISGWY+ImIVIaJn4hIZZj4iYhUhomfiEhlmPiJiFSGiZ+ISGWY+ImIVIaJ\nn4hIZZj4iYhUhomfiEhlmPhdjDU2YqY/8fm0Lj6fjsHixL9+/XoEBwfD3d0dBw4caPa4wMBA6HQ6\nhIeHo2/fvpZejszE/1jWxefTuvh8OgaL99wNDQ3F5s2bkZycfN3jNBoNjEYjOnToYOmliIjIiixO\n/D179jT7WG6rSETkOGTvuTto0CAsXrwYERERTf78zjvvRNu2beHm5oapU6ciKSmpcRAajZwQiIhU\ny5IUft0R/5AhQ1BaWtro+/Pnz0dcXJxZF/j666/h6+uL48ePIzY2Fj179kRMTEyDY/iJgIjIfq6b\n+Hfs2CH7Ar6+vgCAoKAgjBkzBvn5+Y0SPxER2Y9VpnM2N2L//fffUVlZCQA4d+4csrKyEBoaao1L\nEhGRhSxO/Js3b0ZAQAByc3MxYsQIDB8+HABQUlKCESNGAABKS0sRExODsLAwxMfH429/+xuGDh1q\nnciJiMgykgI+/fRTqVevXpKbm5u0f//+Zo/Lzs6WwsPDpdDQUOntt9+2Y4TO5bfffpNGjRolhYaG\nSqNHj5YqKyubPK5Lly5SaGioFBYWJkVGRto5Ssdmzmtt5syZUmhoqBQVFSUdP37czhE6lxs9n7t3\n75ZuvfVWKSwsTAoLC5PmzJmjQJTOYdKkSVKnTp2kkJCQZo9p6WtTkcR//Phx6ccff5T0en2zib+m\npkbq2rWrdOrUKamqqkrq3bu3dOzYMTtH6hymT58uvf7665IkSdKCBQukGTNmNHlcYGCg9Ouvv9oz\nNKdgzmtt27Zt0vDhwyVJkqTc3FwpKipKiVCdgjnP5+7du6W4uDiFInQuOTk50oEDB5pN/Ja8NhVp\n2dCzZ0907979usfk5+ejW7duCAwMhKenJ+Lj47FlyxY7RehcMjMzkZCQAABISEjAZ5991uyxEmdQ\nNWLOa+3q5zgqKgoVFRUoKytTIlyHZ+7/Xb4WzRMTE4P27ds3+3NLXpsO26unuLgYAQEB9Y/9/f1R\nXFysYESOq6ysDFqtFgCg1Wqb/UfXaDQYPHgwwsPD8f7779szRIdmzmutqWOKiorsFqMzMef51Gg0\n2LdvH4KDgxEbG4tjx47ZO0yXYclr0+KVuzcidw0AF3U11NzzOW/evAaPNRpNs8+dOWsq1Mjc19q1\nI1S+RptmzvMSEREBk8kET09PpKenw2AwoLCw0A7RuaaWvjZtlvjlrgHw8/ODyWSqf2wymeDv7y83\nLKd1vedTq9WitLQUPj4+OHv2LDp16tTkcVxT0TRzXmvXHlNUVAQ/Pz+7xehMzHk+27ZtW//3xMRE\nzJgxA+fPn2dPLwtY8tpUvNTTXJ2vT58+OHnyJE6fPo2qqiqsW7cOBoPBztE5B4PBgPT0dABAeno6\nRo8e3egYrqlonjmvNYPBgIyMDABAbm4uvL2968tr1JA5z2dZWVn9//2tW7eidevWTPoWsui1aaUb\nzy2yadMmyd/fX2rVqpWk1WqlYcOGSZIkScXFxVJsbGz9cUajUQoLC5NCQkKkJUuWKBGqU2huOufV\nz+dPP/0k9e7dW+rdu7c0ePBgacWKFUqG7HCaeq2tWLGiwfM0Y8YMKSQkRIqKiuIMsxu40fP5zjvv\nSMHBwVLv3r2lCRMmSN99952S4Tq0+Ph4ydfXV/L09JT8/f2lDz/8UPZrU3aTNiIici6Kl3qIiMi+\nmPiJiFSGiZ+ISGWY+ImIVIaJn4hIZZj4iYhU5v8DNVeGj5WpoUIAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lagrange form\n",
"\n",
"Evaluate the Lagrange basis functions on the fine grid for plotting:\n",
"\n",
"\\begin{align}\n",
"L_1(x) &= \\frac{(x-x_2)(x-x_3)}{(x_1-x_2)(x_1-x_3)},\\\\\\\\\n",
"L_2(x) &= \\frac{(x-x_1)(x-x_3)}{(x_2-x_1)(x_2-x_3)},\\\\\\\\\n",
"L_3(x) &= \\frac{(x-x_1)(x-x_2)}{(x_3-x_1)(x_3-x_2)}\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Evaluate the Lagrange basis functions on the fine grid for plotting:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"L1 = (x-xj[1])*(x-xj[2]) / ((xj[0]-xj[1])*(xj[0]-xj[2]))\n",
"L2 = (x-xj[0])*(x-xj[2]) / ((xj[1]-xj[0])*(xj[1]-xj[2]))\n",
"L3 = (x-xj[0])*(x-xj[1]) / ((xj[2]-xj[0])*(xj[2]-xj[1]))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this form, the data values are the coefficients"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p = yj[0]*L1 + yj[1]*L2 + yj[2]*L3"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot this version (should look the same as before!)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"clf()\n",
"plot(x,p)\n",
"hold(True)\n",
"plot(xj,yj,'b.',markersize=10)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 7,
"text": [
"[<matplotlib.lines.Line2D at 0x10f14ed90>]"
]
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using pychebfun\n",
"\n",
"To use pychebfun, you must download or clone from https://github.com/olivierverdier/pychebfun and add the location to the python path. See the README file at the bottom of the github page."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pychebfun as P"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Use pychebfun to plot the function\n",
"$f(x) = \\left(\\frac{1}{1 + 25x^2}\\right)^{10}$\n",
"and the function\n",
"$g(x) = 5 \\int_0^x f(s)\\, ds.$\n",
"\n",
"What degree polynomial approximation is used for each?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = P.Chebfun.identity()\n",
"f = (1/(1+25*x**2))**10;"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"f.plot()\n",
"\n",
"g = 5 * f.integrate()\n",
"g = g - g(-1.) # because f.integrate gives integral from 0 rather than from -1.\n",
"g.plot()\n",
"\n",
"legend(['f','g'])\n",
"print \"The degree of f is %i \" % (len(f.chebyshev_coefficients()) - 1)\n",
"print \"The degree of g is %i \" % (len(g.chebyshev_coefficients()) - 1)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The degree of f is 234 \n",
"The degree of g is 201 \n"
]
},
{
"output_type": "display_data",
"png": "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\npDD/H7JecMZU0SttAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"See <http://nbviewer.ipython.org/6724986> for more pychebfun examples."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment