{"metadata": {"signature": "sha256:ce563bbacf59eaa05e7e7aead76cb069a11712d0e76215359d73083f81ee3104", "name": ""}, "nbformat_minor": 0, "worksheets": [{"metadata": {}, "cells": [{"metadata": {}, "source": ["# Interpolation with Generalized Vandermonde Matrices"], "cell_type": "markdown"}, {"input": ["import numpy as np\n", "import numpy.linalg as la\n", "import matplotlib.pyplot as pt"], "language": "python", "cell_type": "code", "outputs": [], "metadata": {}, "collapsed": false, "prompt_number": 1}, {"input": ["if True:\n", " def f(x):\n", " return np.exp(1.5*x)\n", " def df(x):\n", " return 1.5*np.exp(1.5*x)\n", "else:\n", " def f(x):\n", " return np.sin(4*x)\n", " def df(x):\n", " return 4*np.cos(4*x)"], "language": "python", "cell_type": "code", "outputs": [], "metadata": {}, "collapsed": false, "prompt_number": 54}, {"input": ["x = np.linspace(0, 1, 1000)\n", "pt.plot(x, f(x))"], "language": "python", "cell_type": "code", "outputs": [{"metadata": {}, "output_type": "pyout", "text": ["[]"], "prompt_number": 55}, {"metadata": {}, "png": "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\n", "output_type": "display_data", "text": [""]}], "metadata": {}, "collapsed": false, "prompt_number": 55}, {"metadata": {}, "source": ["Fix some parameters:"], "cell_type": "markdown"}, {"input": ["degree = 2\n", "h = 1\n", "\n", "nodes = np.linspace(0, h, degree+1)\n", "nodes"], "language": "python", "cell_type": "code", "outputs": [{"metadata": {}, "output_type": "pyout", "text": ["array([ 0. , 0.5, 1. ])"], "prompt_number": 80}], "metadata": {}, "collapsed": false, "prompt_number": 80}, {"metadata": {}, "source": ["Build the Vandermonde matrix:"], "cell_type": "markdown"}, {"input": ["V = np.array([\n", " nodes**i\n", " for i in range(degree+1)\n", "]).T"], "language": "python", "cell_type": "code", "outputs": [], "metadata": {}, "collapsed": false, "prompt_number": 81}, {"input": ["V"], "language": "python", "cell_type": "code", "outputs": [{"metadata": {}, "output_type": "pyout", "text": ["array([[ 1. , 0. , 0. ],\n", " [ 1. , 0.5 , 0.25],\n", " [ 1. , 1. , 1. ]])"], "prompt_number": 82}], "metadata": {}, "collapsed": false, "prompt_number": 82}, {"metadata": {}, "source": ["Now find the interpolation coefficients as `coeffs`:"], "cell_type": "markdown"}, {"input": ["coeffs = la.solve(V, f(nodes))"], "language": "python", "cell_type": "code", "outputs": [], "metadata": {}, "collapsed": false, "prompt_number": 83}, {"input": ["interp = 0*x\n", "for i in range(degree+1):\n", " interp += coeffs[i] * x**i"], "language": "python", "cell_type": "code", "outputs": [], "metadata": {}, "collapsed": false, "prompt_number": 84}, {"input": ["pt.plot(x, f(x), \"--\", color=\"gray\", label=\"$f$\")\n", "pt.plot(x, interp, color=\"red\", label=\"Interpolant\")\n", "pt.plot(nodes, f(nodes), \"o\")\n", "pt.legend(loc=\"best\")"], "language": "python", "cell_type": "code", "outputs": [{"metadata": {}, "output_type": "pyout", "text": [""], "prompt_number": 85}, {"metadata": {}, "png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEACAYAAABI5zaHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VFW29/HvSmSSOQQDhFFkEhlFZptSLihjo4IGZZSr\ntDaC7dve67W1RVvbeQBbRUAUBQFBpcM8F4NiRAigHQIGFRkjgwIJkHG9f5zIEAKpJFU5lWR9nqce\nKlWbkx8nycpmn733EVXFGGNM8RLidgBjjDH+Z8XdGGOKISvuxhhTDFlxN8aYYsiKuzHGFENW3I0x\nphjyqbiLSKiIxIrIghze84jI8az3Y0XkCf/HNMYYkxdX+NhuHBAHVLzE+2tVtb9/IhljjCmoXHvu\nIlIb6A1MBeRSzfwZyhhjTMH4MizzOvAokHmJ9xXoLCLbRGSxiFzrt3TGGGPy5bLFXUT6Ar+oaiyX\n7p1vAeqoaivgTWC+fyMaY4zJK7nc3jIi8k9gKJAOlAUqAZ+q6rDL/J0fgetV9Vi2120TG2OMyQdV\nzfPQ92V77qr6uKrWUdUGQBSwOnthF5EIEZGs5+1xfmEcy+FwqKo9VHnqqadczxAsDzsXdi7sXFz8\n6NbtKZwR7/z3iX2dLXO2PmcV8dFZxfpdYCDwgIikA6dwfgkYY4zJpzKHfyrwMXwu7qq6Flib9fzd\n815/C3irwEmMMcbA4sWMPbCa3XUfZffPL+f7MHntuRs/8Hg8bkcIGnYuzrFzcU6JPRfffAMjRtBn\n6QI4ksKbbz7JsmX5O9RlL6j6k4hoYX0uY4wpcn74Ae3aFZk0CfqfWxMqImg+Lqi63nPPuhZrihD7\nJW2Mnx05wpmbb+bHgQNp1t8/i/1d77ln/VYqlAym4OzrZYyfJSeT2rUrm8PCaDRnDuHh4Re8nd+e\nu+0KaYwxbklLI/3229lVujRV//Wviwp7QVhxN8YYN6iSOWoUBxMTOfzsszRt1syvh7fibowxbnjs\nMZJiY/li7Fi6de/u98O7fkHVGGNKnDfegAULKLd6NbdVrUpIiP/72VbcjTGmMM2aBa+9Bhs2UKpG\njYB9GivuefD6669z5MgR6taty+jRo92OY4wpalasgIcfhlWroG7dgH4qK+4+On78OJ988gkTJkyg\nfPnybscxxhQ1mzfD3XfDZ5/BddcF/NNZcfdRTEwMrVu3pn379m5HMcYUNQkJaL9+xD/yCA07dKB0\nIXzKoC/uXq+XtWvXXvR6t27dctx/Iqf2l2rrq5iYGCZMmECtWrX4/PPPue222/J9LGNMCXPoENxy\nCzujotgYEUGjAFw8zYmtUPXRwIEDefrpp2nevLnbUVxVVL5exgSFEyfA4yGxUydmNWrEfffdl+dh\nXVuhGmA7duzg2mvt9rDGGB+lpMDtt5N83XV8WK8eUVFRhXq9LuiHZYJBYmIi4eHhtsmZMcY36elw\n992kV6rElFat6NOrFzUCOO0xJ1bcfRATE0OXLl3cjmGMKQpUYfRoOHkSmT+f3vv20bhx40KPYcX9\nMjZv3syUKVMICwvjrrvucjuOMSbYqcKjj0JcHKxYQeiVV7pS2MGK+2WFhoZSu3ZtrrzySlq1auV2\nHGNMsHvhBVi2DNauhQoVXI1is2VMntjXy5hLePddeOklWL8eatXy22GL7J2YjDGmyJszB555hkOf\nfELlqlUp53YebCqkMcYUzNKlMHYsv378MTM2buSXX35xOxFgPXdjjMm/L76AoUM5PXs2H23bRvfu\n3alXr57bqQAfe+4iEioisSKy4BLvTxSR70Vkm4i08W9EY4wJQtu3w+23kzF9OrP27KF58+a0aRM8\n5c/XYZlxQBxw0ZU0EekNXKOqjYD7gXf8F88YY4JQQgL06oVOmMC/z5yhYsWK3HzzzW6nukCuxV1E\nagO9galATlds+wPTAVQ1BqgiIhH+DGmMMUHjwAHo2RP+/nf0zjupWbMmAwYMCLoV7L703F8HHgUy\nL/F+JLD3vI/3AbULmMsYY4LP4cPQowfcfz+MHk1ISAidOnWiVKlSbie7yGUvqIpIX+AXVY0VEc/l\nmmb7OMeJ0OPHjz/73OPxFGgbXuPweDwMHTqUUaNGuR3FmOLtt9/glltgwAB47LGAfRqv14vX6y34\ngVT1kg/gnzi98h+Bg0Ay8GG2NpOAqPM+jgcicjiW5uRSr7utXr16unLlylzbdevWTadOnVoIiXLm\n8Xj0vffeK/Bx1qxZo7Vr1861XbB+vYwJqJMnVTt2VB03TjUzs1A/ddbP3GVrdU6Pyw7LqOrjqlpH\nVRsAUcBqVR2WrVk0MAxARDoCv6lqYsF/7bhLRHwaQyvoOFtm5qVGu4wxQeH0aejfH667jl///neS\nkpPdTuSTvC5iUgARGS0iowFUdTHwg4gkAO8CD/o3ontUlQ8++ICuXbvy6KOPEhYWxtVXX83SpUsB\n+Nvf/sb69esZM2YMFStWZOzYsQDEx8fTo0cPqlWrRtOmTZk7d+7ZY44YMYIHHniA3r17U6FCBdas\nWcOIESP405/+RM+ePalUqRIej4eff/757N/58ssvueGGG6hSpQrt27dn48aNOebdvXs3N998M+Hh\n4VSvXp0hQ4Zw/Pjxs+/Xr1+fV199lVatWlGlShWioqJISUkhOTmZXr16ceDAASpWrEilSpU4dOhQ\nIE6pMUVLairccQfUrMmp115jxsyZJCQkuJ3KN/np7ufnQREblqlfv76uWrVK33//fS1VqpROnTpV\nMzMz9Z133tFatWqdbZd9WCQpKUlr166tH3zwgWZkZGhsbKyGh4drXFycqqoOHz5cK1eurF9++aWq\nqp45c0aHDx+uFStW1PXr12tKSoqOGzdOu3btqqqqR48e1SpVquiMGTM0IyNDZ82apVWrVtVjx45d\n9PkTEhJ05cqVmpqaqocPH9Y//OEP+vDDD1/wb+rQoYMePHhQjx07ps2aNdNJkyapqqrX67VhGWPO\nl5amescdqgMGaGpysk6dOtWnoVp/IxDDMkFBxD+PAqhXrx6jRo1CRBg2bBgHDx68YImxnreR1sKF\nC2nQoAHDhw8nJCSE1q1bc/vtt1/Qex8wYACdOnUCoEyZMgD07duXrl27Urp0aZ577jk2btzIvn37\nWLRoEU2aNOGee+4hJCSEqKgomjZtSnR09EU5GzZsSPfu3SlVqhTh4eH85S9/ueh+smPHjqVGjRpU\nrVqVfv36sXXr1ov+DcaUeJmZMHIkJCWR+fHHfBodTVhYWNDNZb+c4N9+IAiKzvl3ULnyyisBSEpK\n4qqrrgIuHHffs2cPMTExVK1a9exr6enpDBs27Gzb2rUvnCma/bXy5csTFhbGgQMHOHjwIHXr1r2g\nfb169Thw4MBFORMTExk3bhwbNmzg5MmTZGZmEhYWdsl/S7ly5XI8jjElmio8+CD8/DO6eDFLVq8m\nNTWVQYMGBd1c9ssJ/p57kMv+xa5bty7dunXj119/Pfs4efIkb7311iWPoars3XtuqUBSUhLHjh0j\nMjKSWrVqsWfPngva79mzh8jIyIuO8/jjjxMaGsp3333H8ePH+eijj3y+YFuUvmmNCRhV+H//D7Zu\nhYUL4corCQ8P58477yQ0NNTtdHlixf0yfBmqiIiIYPfu3Wc/7tu3L7t27WLGjBmkpaWRlpbGpk2b\niI+Pv+wxFy9ezBdffEFqaipPPvkknTp1IjIykl69erFr1y5mzZpFeno6c+bMIT4+nr59+150jKSk\nJMqXL0+lSpXYv38/L7/8ss//1oiICI4ePcqJEyd8/jvGFDtPPQWrV8OSJVCxIiJChw4dKFu2rNvJ\n8syK+2X8Ph0ye6/2/I/HjRvHvHnzCAsL4+GHH6ZChQosX76c2bNnExkZSc2aNfm///s/UlNTLzhm\n9uPdfffdPP3001SrVo3Y2FhmzJgBQLVq1Vi4cCGvvvoq4eHhvPLKKyxcuPCi4RaAp556ii1btlC5\ncmX69evHHXfccdke+flZmjZtyuDBg7n66qsJCwuz2TKm5HnxRZg7F5Yvh/OGVYsquxNTEBg5ciS1\na9fmH//4h9tRcmVfL1MsTZwIEybAunWQw5Cnm/J7JybruQcBK5bGuOjtt+H112H1ag6Fhl6wNqQo\ns+IeBHxdDWuM8bPJk53hmFWrOFqhAjNnziw2Q5I2LGPyxL5eptiYNs25gLpmDScjIpg2bRpdu3bl\n+uuvdzvZBWxYxhhjfDV9Ovz977BqFacjI5kxYwZt27YNusJeEFbcjTEly8yZ8PjjsHIlGQ0bMmvW\nLBo0aEDXrl3dTuZXNixj8sS+XqZImzMHHn4YVq6E5s1RVXbt2kXjxo2D9rpXfodlgqK4m6LFirsp\nkubNgzFjYMUKaNHC7TQ+y29xd31vGSsUxpiAmz/fKexLlxapwl4Qrhd3Y4wJqAULYPRoZ0uB1q3d\nTlNo7IKqMab4WrIERo2ChQvRNm3YsGEDx44dcztVobDibowpnhYtguHDIToabriBdevW8e233xbJ\nTcDyw4q7Mab4iY6Ge+91hmQ6dmTjxo1s376doUOHnr0nQ3Fnxd0YU7zMnw/33ef03Dt0YPPmzcTE\nxDBs2DAqVKjgdrpCY8XdGFN8fPrpuYun7dpx+PBh1q5dy7Bhw6hcubLb6QqV6/PcjTHGL+bOhYce\ncgp7mzZnXz59+jTlypVzMVjBFNlFTMYYU2CzZzsrT5ctg1at3E7jV7ZxmDGmZJo5Ex55xFl5WswK\ne0HkWtxFpKyIxIjIVhGJE5Hnc2jjEZHjIhKb9XgiMHGNMeY8H30Ejz56dkuB9PR0txMFjVyLu6qe\nAW5S1dZAS+AmEclp+7S1qtom6/Gsv4MaY8wFPvgAHnsMVq2C5s3ZtWsXU6dOJTMz0+1kQcGnYRlV\nPZX1tDQQCuS0xMt2ADPGFI733oMnnoDVq6FZMxISEvj3v/9N3759CQmx0WbwsbiLSIiIbAUSgTWq\nGpetiQKdRWSbiCwWkWv9HdQYYwDnnqfjxzuFvUkTdu/ezeeff05UVBS1a9d2O13Q8GnjMFXNBFqL\nSGVgmYh4VNV7XpMtQB1VPSUivYD5QOPsxxk/fvzZ5x6PB4/Hk//kxpiS55VXnOK+bh00aMAPP/zA\nZ599xl133UWdOnXcTucXXq8Xr9db4OPkeSqkiDwJnFbVVy7T5kfgelU9dt5rNhXSGJM/qvCPfzgz\nY1atgqwe+jfffEP16tWpV6+eywEDJ2D7uYtIOJCuqr+JSDmgB/B0tjYRwC+qqiLSHueXRsnYes0Y\nE1iqzoXTxYudHntExNm32rVr52Kw4ObLsExNYLqIhOCM0X+kqqtEZDSAqr4LDAQeEJF04BQQFajA\nxpgSJDMTxo2DjRvB64Vq1dxOVGTYClVjTHDKyHA2ANu1y9kErITtDfM7W6FqjCk+0tJgyBDYs8fZ\nUqByZeLi4khMTHQ7WZFhxd0YE1xSUmDQIDhxAhYuhPLl2b59O0uWLHE7WZFixd0YEzxOnYI//hGu\nuAI+/xzKlSM2NpaVK1cybNgwIs67mGouz4q7MSY4nDwJvXtD9erOLo+lS7N582a8Xi/Dhw+nevXq\nbicsUqy4G2Pcd/QodO8OTZrA9OlwxRUcPnyYDRs2MHz4cKrZLJk8s9kyxhh37d8PPXtCv37w/PMg\n5yaGpKamUrp0aRfDuc9myxhjip7vv4euXWH4cHjhhQsKO1DiC3tB+LS3jDHG+N3Wrc4Y+9NPO/PZ\njV9Zz90YU/g2bHCGYiZMgPvuIyMjgyNHjridqlix4m6MKVyLF8Ntt8GMGTBoEGlpacyZM4cNGza4\nnaxYseJujCk8s2bByJEQHQ09e5KSksLMmTMpW7Ys/fr1cztdsWJj7saYwvHOO/Dcc7ByJbRowalT\np5g5cyY1a9akT58+iNjN3PzJirsxJrBU4Z//hGnTnC17r76ajIwMpk+fTqNGjejevbsV9gCwee7G\nmMDJzIRHH4Xly51HzZpn3zp06BA1atRwMVzRkN957lbcjTGBkZrqjK//9BMsWABhYW4nKpICdicm\nY4zJs5Mn4Y47oFw5Z4y9XDm3E5U4NlvGGONfiYng8UCDBvDpp1CuHMnJyW6nKnGsuBtj/CchAbp0\ngf79YdIkNDSU9evX89FHH2HDsoXLhmWMMf7xzTfO5l/jx8Po0agqS5cu5aeffmLIkCE2I6aQ2QVV\nY0zBLV8O99wDU6bAgAGkp6czf/58kpKSiIqKomzZsm4nLLJsV0hjjDtmzIChQ507Jw0YgKoyZ84c\nMjMzGTJkiBV2l1jP3RiTP6rw6qswcSIsWQLNm599a9++fdSqVYuQEOs/FpTNczfGFJ7MTPjrX2HZ\nMli6FOrUcTtRsRWQYRkRKSsiMSKyVUTiROT5S7SbKCLfi8g2EWmT1xDGmCLk9GmIioJNm5yte62w\nB6XLFndVPQPcpKqtgZbATSLS9fw2ItIbuEZVGwH3A+8EKqwxxmVHjsB//ReEhMCKFVC1Kr/99pvb\nqUwOch0QU9VTWU9LA6HAsWxN+gPTs9rGAFVEJMKfIY0xQSAhATp1ghtvhI8/RsuUYfny5Wcvnprg\nkmtxF5EQEdkKJAJrVDUuW5NIYO95H+8DavsvojHGdV9+6dzr9K9/hRdeID0zk3nz5rF//36GDh1q\nF06DUK6LmFQ1E2gtIpWBZSLiUVVvtmbZB/tzvHI6fvz4s889Hg8ejycvWY0xbpg3Dx54AD78EHr1\n4tSpU8yePZtKlSoxdOhQrrjC1kL6k9frxev1Fvg4eZotIyJPAqdV9ZXzXpsEeFV1dtbH8UA3VU3M\n9ndttowxRYkqvPYavP66s6tjmzZkZmYyefJkrrnmGtuHvZAEZFdIEQkH0lX1NxEpB/QAns7WLBoY\nA8wWkY7Ab9kLuzGmiElPh3HjnJtrbNx4dkZMSEgIgwcPpnLlyi4HNLnJ7f9TNYHpIhKCMz7/kaqu\nEpHRAKr6rqouFpHeIpIAJAMjAxvZGBNQycnOVMczZ5ypjtkKuRX2osEWMRljzjl40Nn8q0ULmDwZ\nSpVyO1GJZ3vLGGMKZutW6NABBgyAadM4nZ5OQkKC26lMPllxN8bAv/8NPXrAK6/AE09w5OhRpk6d\nyk8//eR2MpNPNofJmJJM1SnoEybA4sVwww388MMPfPbZZ9x88820bdvW7YQmn6y4G1NSpaY689e3\nbIGNG9Hatfk6Job169czcOBA6tev73ZCUwBW3I0piY4edW5gXaUKrF8PFSpw8sQJ4uLiGDVqFFWr\nVnU7oSkgmy1jTEkTHw99+zrF/fnnnU3AsqiqLUwKMjZbxhiTu5UroVs3+Nvf4MUXLyjsgBX2YsSK\nuzElxaRJMGQIzJ2LjhiB/U+6eLMxd2OKu7Q0eOQRZ//1DRtIr1+fxQsWUL9+fVq2bOl2OhMgVtyN\nKc4OH4Y774Qrr4SYGE6GhPDJ9OlUrFiRJk2auJ3OBJANyxhTXG3bBu3bOzfYiI7m5+PHmTJlCo0a\nNWLQoEGUKVPG7YQmgKznbkxxNHcuPPggvPkmREWxfft2li9fTv/+/WncuLHb6UwhsKmQxhQnmZnw\n1FPOjTU+/xyyVpgeO3YMEbH560VQQPZzN8YUISdOOLNhfv0VNm2Cq646+1ZYWJiLwYwbbMzdmOLg\n+++hY0eoVQtWrbqgsJuSyYq7MUXdsmXQpQuMHUv6v/5F7H/+Y3PYjRV3Y4osVXjpJRgxAubN4/jg\nwXzwwQfs2rWLjIwMt9MZl9mYuzFF0cmTMHIk7NkDMTEkpKYyf8oUOnfuTKdOnWwbAWM9d2OKnB07\nnPnrYWFkeL2s2LmTBQsWMGjQIDp37myF3QBW3I0pWj79FP7wB/jrX2HyZLRMGTIyMhg9ejT16tVz\nO50JIjbP3ZiiID0dHn8c5sxxCny7dm4nMoXE5rkbU1z98gsMHuxsz7t5M4SHu53IFAE2LGNMMPv6\na6eX3qEDR2fOJKViRbcTmSIi1+IuInVEZI2I/EdEvhORsTm08YjIcRGJzXo8EZi4xpQQqjB5MvTp\nAxMm8O3gwUybPp19+/a5ncwUEb4My6QBf1HVrSJSAdgsIitUdUe2dmtVtb//IxpTwpw6BX/+M3z9\nNamrV7Pkhx/42etl6NCh1KhRw+10pojIteeuqodUdWvW8yRgB1Arh6Y2/8qYgvp9mmN6Ovs/+4xJ\na9YgIowePdoKu8mTPI25i0h9oA0Qk+0tBTqLyDYRWSwi1/onnjElyMcfO9McH34YPvyQ+H376NGj\nB/3796d06dJupzNFjM+zZbKGZOYB47J68OfbAtRR1VMi0guYD1y0afT48ePPPvd4PHg8nnxENqaY\nOXMGxo2D1audW+G1bg1A9+7dXQ5m3OD1evF6vQU+jk/z3EWkFLAQWKKqb/jQ/kfgelU9dt5rNs/d\nmOwSEmDQIGjUCKZOhUqV3E5kgkx+57n7MltGgPeAuEsVdhGJyGqHiLTH+aVxLKe2xpgs8+ZB586k\nDR/OkbfessJu/MqXYZkuwBBgu4jEZr32OFAXQFXfBQYCD4hIOnAKiApAVmOKh5QUePRRWLiQQ9Om\nMTshgevj47mxenW3k5lixLYfMKYw/fgj3HUXmTVrsnb4cLb8+CN9+/alSZMmbiczQSq/wzJW3I0p\nLLNnw9ixHB8zhpnVqhFevTp9+vShfPnybiczQcz2ljEmWCUnw0MPwYYNsHQpB8qVo2taGi1atLDt\neU3AWHE3JpC2boWoKOf+plu2QIUKNHM7kykRbOMwYwJBFSZOhB494Mkn4YMPoEIFt1OZEsR67sb4\n25EjcO+9pO/dyw8ffkjjXr3cTmRKIOu5G+NPa9agbdpwsHJlJtx5J79Vq+Z2IlNC2WwZY/whLQ2e\neYaMKVNYec897G/enP79+xNuN9YwBWRTIY1xy65dMGQIJ0uX5sObbqJd377ccMMNhITYf4xNwVlx\nN6awqcK77zoXTJ9+ml+jokCEqlWrup3MFCM2z92YwpSYCKNGwaFDsH49NG2KlXQTTOz/jcbkVXQ0\n2rq1szXvl19C06ZuJzLmItZzN8ZXSUlkjBtHyuLFbB43jhsfe8ztRMZckhV3Y3zx1VekRkXxfUQE\nP7zyCjcPGOB2ImMuy4ZljLmc1FRSHnuMM7feyoqbb6bcrFn0u+ce2+zLBD3ruRtzKdu3w/DhJJct\nS9zkyfS87TZKlSrldipjfGJTIY3JLj0dXnwR3ngDXnoJRowA273RuMSmQhrjD3FxMHw4VK3q7OJY\np47biYzJFyvupsRatGgdEycuJyXlCsqUTmN4hX3c5V1A6PPPw/33W2/dFGlW3E2JtGjROsaNW8bu\n3c+dfW3nFUNIfe5ZRowe7WIyY/zDZsuYEmnixOUXFHaAPekzmL36oEuJjPEvK+6mREo5lpLj62fO\nhBZyEmMCw4ZlTMmSmgovvUSZrV/k+HbZshmFHMiYwLCeuyk5Nm2Cdu1g40bGTn6Ehg3/dsHbDRs+\nzkMP9XApnDH+lWvPXUTqAB8CVwEKTFbViTm0mwj0Ak4BI1Q11s9ZjckzVeX7bdto+OGHhH78Mbz2\nGgweTB8RuOoq3nzzSc6cCaVs2QweeuhW+vT5g9uRjfGLXBcxiUgNoIaqbhWRCsBmYICq7jivTW9g\njKr2FpEOwARV7ZjtOLaIyRSqQ4cOse311+k4bRplPR7KvP02VK/udixj8iRgi5hU9RBwKOt5kojs\nAGoBO85r1h+YntUmRkSqiEiEqibmNZAxBZWUlMSGBQuo9cYbePbsodS0aYT06+d2LGMKVZ4uqIpI\nfaANEJPtrUhg73kf7wNqA1bcTaH67ddfWTtmDLcsW8YVAwdyxYoVUKmS27GMKXQ+F/esIZl5wDhV\nTcqpSbaPLxqDGT9+/NnnHo8Hj8fj66c3Jne7d1P5z3+m7969hEZHQ+fObicyJs+8Xi9er7fAx/Fp\n4zARKQUsBJao6hs5vD8J8Krq7KyP44Fu5w/L2Ji7CZiUFHj5ZWejr//9X3j4YbDdG00xEbAxdxER\n4D0gLqfCniUaGAPMFpGOwG823m4C6eTJk+zbt49miYnwwAPQqBFs3gz16rkdzZig4MuwTBdgCLBd\nRH6f3vg4UBdAVd9V1cUi0ltEEoBkYGRA0poSLyUlhS+++IL/eL0MjImBHTtg4kT44x9toy9jzmP7\nuZsiISMjgy1btrDO6+Xmn36i1SefEDJsGDz9NFSo4HY8YwLG9nM3xdqyZcvQzZt5KDqa0qGhsGIF\ntG7tdixjgpYVdxP8jh7llvnzCYmORp59Fu69F0Js5wxjLsd+QkzwysiAd96BZs0ILVsW2bED/vu/\nrbAb4wPruZug8dtvv7F27Vq6dOlC+M6dMGaMswBp5Upo2dLteMYUKXZB1bguKSmJ9evX8+2339K5\nQQM6zZ9P6Nq1ztz1qCibBWNKNLugaoqcM2fO8MUXX7B582ZaNWvGuIwMyjzwANx3H8TH2ywYYwrA\nirtxTWpqKqeSk/lzZCTlH3kEGjeGL790/jTGFIgNyxj3xMbCI4/AkSPw6qvQs6fbiYwJOvkdlrFp\nBybg0tPTOXny5LkXDhyAkSOhVy9nTD021gq7MX5mxd0ETHp6Ops2beLNN99k8+bNcOoU/OMf0KIF\nRETArl0wejRcYaODxvib/VQZv0tPTyc2NpYNGzYQERHBnQMHErl2LQwbBp06wTffQIMGbsc0pliz\n4m78SlWZOnUqlSpV4s477yRyxw647TZn4dGsWdCli9sRjSkR7IKq8bvk5GTK79wJjz0GP/4I//wn\nDBxo89WNyQe7oGqCw+7dlP/v/4Y+fZwee1wcDBpkhd2YQmbF3eTZmTNnWLduHTNnzjz3YmIiPPQQ\ndOgAzZvD9987N9GwOyIZ4wobczc+S0pK4quvvmLLli00btyYnj17wsmTzhz1N9+EoUOdm2dUr+52\nVGNKPCvuxifr16/nyy+/5LrrruP++++nSunSzo6NL78MPXrYDBhjgowVd+OT+vXr06ZNGyqUKgWT\nJ8Pzz0PHjs5NM1q0cDueMSYbK+7GJ3UiIuD99+G555ztdxcuhLZt3Y5ljLkEu6BqAGd+enx8PHPn\nziUjI+NE/5l/AAALm0lEQVTcG+npTlFv2hQ++ww++cQKuzFFgPXcS7i0tDS2b9/Oxo0bKVOmDJ07\nd0ZEnLsgzZ7t3IC6Vi2YPh1uvNHtuMYYH9kiphJs69atrFy5ksjISDp16kS9evWQ9HT4+GNn4VF4\nuLMXzE032Tx1Y1yS30VMVtxLsP3791O6dGmqV68OKSnwwQfwwgtw9dXwxBPg8VhRN8ZlAVuhKiLT\nRCRRRL69xPseETkuIrFZjyfyGsK4IzIykurly8OECdCwIURHw8yZsGqV9daNKeJ8uaD6PnBrLm3W\nqmqbrMezfshl/CAtLY3Y2Fjef/99UlJSLnzzxAl48UWnl75unVPYFy2Czp3dCWuM8atcL6iq6noR\nqZ9LM+viBZETJ06wadMmtmzZQmRkJDfeeCOlS5d23jx8GN56y3n07AkrV8J117kb2Bjjd/6YLaNA\nZxHZBuwH/qqqcX44rsmHjRs3sm7dOlq2bMm9995LtWrVnDcSEuC115wZMAMHwhdf2L1KjSnG/FHc\ntwB1VPWUiPQC5gM5Vo3x48effe7xePB4PH749OZ8zZo1o02bNpQtW9Z54euvnS0CvF7nrkc7djh3\nQTLGBCWv14vX6y3wcXyaLZM1LLNAVXNdZy4iPwLXq+qxbK/bbBk/On36NOXKlcv5zcxMWLzYKep7\n9sBf/gKjRkGFCoUb0hhTYPmdLVPgnruIRAC/qKqKSHucXxjHcvt7Ju8yMzPZvXs333zzDQcOHGDs\n2LGUOn9L3TNnnLsdvfIKlC4Njz7q7KVu2+4aU+LkWtxFZBbQDQgXkb3AU0ApAFV9FxgIPCAi6cAp\nICpwcUum5ORkYmNj2bx5M+XKlaNdu3bccccd5wr7wYPODo2TJ0Pr1s7Uxu7dbSqjMSWYLWIqApYt\nW8aZM2do164dkZGR5974+munkC9ZAoMHw5gx0KyZe0GNMX5nK1RLirQ0mDfPKeq/3/3o3nuhShW3\nkxljAsCKexGmquzdu5eff/6Zrl275tzo0CGYOtUZfmncGMaNg379IDS0cMMaYwqVaxdUTf4lJyez\nbds2tmzZAkDbtm1RVWdXRgBVWLMGJk1ybooxcKAzBNOypYupjTFFgfXcXbJo0SK+/fZbmjZtStu2\nbalTp865on70qLPF7rvvOrNeHngA7rkHKld2N7QxptDZsEwRs3//fqpVq3ZusZEqbNzo9NKjo6F/\nf/jTn6BTJ5v1YkwJZsU9CKWlpXH8+HHCw8Mv3ejIEWcnxvfec+ap/+lPMHw4/L5tgDGmRLPiHiRU\nlZ9//pmtW7cSHx9Py5Yt6dWr14WN0tNh2TLn9nUrV0Lfvs6MF9tm1xiTjRV3l6Wnp7N+/Xq2b99O\nqVKlaNWqFS1btqRixYrnGu3c6RT0Dz+EunWdgn7XXTaWboy5JJst47LQ0FBEhDvvvJMaNWqcuzh6\n/DjMnesU9d27Ydgwp7d+7bXuBjbGFGvWc8+jzMxM0tPTz+2PnpOUFOfGFx9/7Exh7N4dRo6EW2+1\nfV6MMXliwzIB9Psio++++464uDhuuukmrr/++gsbZWbC2rXOxdHPP3fmot9zD9xxB1St6k5wY0yR\nZ8U9AE6cOMHXX3/Nd999R6lSpWjRogXXXXcdYWFhTgNV2LbNKeizZkF4uFPQBw+G2rXdDW+MKRZs\nzD0AUlNTAYiKiiIiIsIZR1eF2Fhnf5d585whmLvvdma/NG/ucmJjjHFYzx1nG4Dy5ctfuoEqbN58\nrqCrOlsBDBwI7drZ9EVjTMBYzz2PkpKSiI+PJy4ujgMHDvDggw9SqVKlcw0yM2HTpnMF/YornBtf\nzJ3r7JluBd0YE8RKXM89Li6OTZs2cfDgQRo1asS1117LNddc49z44vRpWLUKFixwHpUrOwV94EBo\n0cIKujGm0NkFVR/Fx8cD0LBhQ6egJyY60xajo2H1amjb1tlKt18/Z2tdY4xxkRX385w4cYLjx49T\np06di9/8fYbLkiVOQd+xA3r2dDbq6tXL9nQxxgSVEj/mfuzYMeLj44mPj+fw4cO0a9fuXHE/fNhZ\nTLRsGSxfDhUqOAuKnnkGunVzttU1xphipMj33FNTU3nvvfdITk6mSZMmNG3alAa1a3PFpk1OMV+2\nDBISwOOBW25xHldf7fccxhgTCCV6WObgvn3USExE1q4FrxfWrYOGDZ1Cfuutzp7otuzfGFMEFdvi\nnpqaSkJCAjt37qRjx47UrFnTmaa4fbtTyNesgfXroUYNp3d+003OUMtVV/n932CMMYUtYMVdRKYB\nfYBfVLXFJdpMBHoBp4ARqhqbQxufi/vJkyfZuXMn33//PT/99BP1ataktSrX/PILpb/6yumZh4c7\nhdzjcR41avh0bGOMKUoCWdxvBJKAD3Mq7iLSGxijqr1FpAMwQVU75tDO5+K+dflyTq9ezTW//EK1\nnTsJ2bYNGjVyhle6dHGKeWSkT8cKRl6vF4/H43aMoGDn4hw7F+fYuTgnv8U9JLcGqroe+PUyTfoD\n07PaxgBVRCQip4a33PIEixatA+D06dMcOHDAWTgUEwNvv+3cXq5RI1rfdRedtm2jeoMGhDzzDBw8\n6Ozn8vbbzsZcRbiwg/ONaxx2Ls6xc3GOnYuC88dUyEhg73kf7wNqA4nZGy5f/ixxsWMYd90r9Dhx\ngPrHjsGhQ9C0KVx/vdMr/5//gWbNICTX3zvGGGMuwV/z3LP/l+GS4y/7Dv+LpXH9+MuTIwlt395Z\n1l+2rJ9iGGOMAR9ny4hIfWDBJcbcJwFeVZ2d9XE80E1VE7O1c3/vAWOMKYLcWqEaDYwBZotIR+C3\n7IU9v+GMMcbkT67FXURmAd2AcBHZCzwFlAJQ1XdVdbGI9BaRBCAZGBnIwMYYY3JXaIuYjDHGFB6/\nT0kRkVtFJF5EvheR/71Em4lZ728TkTb+zhAscjsXInJP1jnYLiJfiEhLN3IWBl++L7La3SAi6SJy\ne2HmK0w+/ox4RCRWRL4TEW8hRyw0PvyMhIvIUhHZmnUuRrgQM+BEZJqIJIrIt5dpk7e6qap+ewCh\nQAJQH2foZivQLFub3sDirOcdgK/8mSFYHj6ei05A5aznt5bkc3Feu9XAQuAOt3O7+H1RBfgPUDvr\n43C3c7t4LsYDz/9+HoCjwBVuZw/AubgRaAN8e4n381w3/d1zbw8kqOpPqpoGzAb+mK2Nz4ueirhc\nz4WqblTV41kfxuCsDyiOfPm+AHgImAccLsxwhcyXc3E38Kmq7gNQ1SOFnLGw+HIuDgK/3/+yEnBU\nVdMLMWOhUD8uFv2dv4t7Tguasi8nvdSip+LGl3NxvlHA4oAmck+u50JEInF+sN/Jeqm4Xgzy5fui\nERAmImtE5BsRGVpo6QqXL+diCtBcRA4A24BxhZQt2OS5bvr7Zh2+/kD6vOipCPP53yQiNwH3Al0C\nF8dVvpyLN4DHVFVFRLj4e6S48OVclALaAt2BK4GNIvKVqn4f0GSFz5dz8TiwVVU9ItIQWCEirVT1\nZICzBaM81U1/F/f9wPn3tquD8xvmcm1qZ71W3PhyLsi6iDoFuFVVL/ffsqLMl3NxPc5aCXDGVnuJ\nSJqqRhdOxELjy7nYCxxR1dPAaRFZB7QCiltx9+VcdAaeA1DV3SLyI9AE+KZQEgaPPNdNfw/LfAM0\nEpH6IlIauAtnkdP5ooFhAJdb9FQM5HouRKQu8BkwRFUTXMhYWHI9F6p6tao2UNUGOOPuDxTDwg6+\n/Yz8G+gqIqEiciXOBbS4Qs5ZGHw5F/HAfwFkjTE3AX4o1JTBIc910689d1VNF5ExwDKcK+HvqeoO\nERmd9X6JWfTky7kA/g5UBd7J6rGmqWp7tzIHio/nokTw8WckXkSWAtuBTGCKqha74u7j98U/gfdF\nZBtOZ/R/VPWYa6EDJBCLRW0RkzHGFEO2r64xxhRDVtyNMaYYsuJujDHFkBV3Y4wphqy4G2NMMWTF\n3RhjiiEr7sYYUwxZcTfGmGLo/wP1TJq2aqqkvAAAAABJRU5ErkJggg==\n", "output_type": "display_data", "text": [""]}], "metadata": {}, "collapsed": false, "prompt_number": 85}, {"metadata": {}, "source": ["Now evaluate the derivative as `interp_deriv`:"], "cell_type": "markdown"}, {"input": ["interp_deriv = 0*x\n", "for i in range(1, degree+1):\n", " interp_deriv += coeffs[i] * i * x**(i-1)"], "language": "python", "cell_type": "code", "outputs": [], "metadata": {}, "collapsed": false, "prompt_number": 86}, {"input": ["pt.plot(x, interp_deriv, color=\"red\", label=\"Interpolant\")\n", "pt.plot(x, df(x), \"--\", color=\"gray\", label=\"Derivative\")\n", "pt.legend(loc=\"best\")"], "language": "python", "cell_type": "code", "outputs": [{"metadata": {}, "output_type": "pyout", "text": [""], "prompt_number": 87}, {"metadata": {}, "png": "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\nbTkAAAAASUVORK5CYII=\n", "output_type": "display_data", "text": [""]}], "metadata": {}, "collapsed": false, "prompt_number": 87}, {"input": [], "language": "python", "cell_type": "code", "outputs": [], "metadata": {}, "collapsed": false, "prompt_number": 38}]}], "nbformat": 3}