{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Contenido bajo licencia Creative Commons BY 4.0 y código bajo licencia MIT. © Juan Gómez y Nicolás Guarín-Zapata 2020. Este material es parte del curso Modelación Computacional en el programa de Ingeniería Civil de la Universidad EAFIT."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Interpolación por tramos"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introducción"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "En el Notebook anterior discutimos el problema de interpolación de Lagrange como un método para aproximar funciones en términos de valores discretos de la función. De acuerdo con esto, si se tenían $N$ valores conocidos de la función era posible proponer una aproximación polinomial de orden $N-1$. Aunque, en principio, esta estrategia parece ser correcta, tiene la desventaja de que el polinomio de interpolación resultante será valido solo para ese problema en particular imposibilitando automatizar el método a un algoritmo general que resuelva cualquier problema. Una solución posible a esta falta de generalidad es adoptar un esquema de interpolación basado en la división del dominio original en sub-dominios en el done el esquema de interpolación es implementado para un sub-dominio general con un numero fijo de puntos discretos o nodos. En esta estrategia la muestra de $N$ valores de la función es dividida en sub-dominios, por ejemplo en pares de puntos, dando como resultado una función de interpolación que es continua por tramos. En este Notebook cubrimos los aspectos básicos de este esquema de interpolación basado en sub-dominios.\n",
    "\n",
    "**Al completar este notebook usted debería estar en la capacidad de:**\n",
    "\n",
    "* Reconocer las diferencias entre un esquema de interpolación global y uno local.\n",
    "\n",
    "* Reconocer las ventajas y desventajas de los esquemas de interpolación local y global.\n",
    "\n",
    "* Formular e implementar esquemas de interpolación local en Python.\n",
    "\n",
    "* Reconocer un elemento finito como un esquema de interpolación local."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Esquema global"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "En la siguiente celda, pruebe a cambiar la línea `%matplotlib notebook` por\n",
    "`%matplotlib inline`y ejecute el código de todas las celdas para ver la diferencia.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib notebook        \n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from scipy import interpolate\n",
    "import sympy as sym"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Conisderemos la misma función usada en el problema de interpolación del Notebook anterior y definida como:\n",
    "\n",
    " $$ f(x)=x^3+4x^2-10 $$\n",
    " \n",
    "con $x$ en el intervalo $\\left[ {{-1},{1}} \\right]$. Asumamos también que conocemos el valor exacto de la función en los puntos $[-1, -0.5, 0, 0.5, 1]$. Nos referiremos a estos puntos como los **nodos**. Determinaremos un único polinomio de interpolación de Lagrange usando los 5 valores conocidos de la función en los nudos dados. El siguiente bloque de código muestra los pasos requeridos en este esquema global.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def lagrange_poly(x, order, i, xi=None): \n",
    "    if xi == None:\n",
    "        xi = sym.symbols('x:%d'%(order+1))\n",
    "    index = list(range(order+1))\n",
    "    index.pop(i)\n",
    "    return sym.prod([(x-xi[j])/(xi[i]-xi[j]) for j in index])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\n",
       "\n",
       "mpl.get_websocket_type = function() {\n",
       "    if (typeof(WebSocket) !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof(MozWebSocket) !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert('Your browser does not have WebSocket support. ' +\n",
       "              'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "              'Firefox 4 and 5 are also supported but you ' +\n",
       "              'have to enable WebSockets in about:config.');\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = (this.ws.binaryType != undefined);\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById(\"mpl-warnings\");\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent = (\n",
       "                \"This browser does not support binary websocket messages. \" +\n",
       "                    \"Performance may be slow.\");\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = $('<div/>');\n",
       "    this._root_extra_style(this.root)\n",
       "    this.root.attr('style', 'display: inline-block');\n",
       "\n",
       "    $(parent_element).append(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen =  function () {\n",
       "            fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
       "            fig.send_message(\"send_image_mode\", {});\n",
       "            if (mpl.ratio != 1) {\n",
       "                fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
       "            }\n",
       "            fig.send_message(\"refresh\", {});\n",
       "        }\n",
       "\n",
       "    this.imageObj.onload = function() {\n",
       "            if (fig.image_mode == 'full') {\n",
       "                // Full images could contain transparency (where diff images\n",
       "                // almost always do), so we need to clear the canvas so that\n",
       "                // there is no ghosting.\n",
       "                fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "            }\n",
       "            fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "        };\n",
       "\n",
       "    this.imageObj.onunload = function() {\n",
       "        fig.ws.close();\n",
       "    }\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_header = function() {\n",
       "    var titlebar = $(\n",
       "        '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
       "        'ui-helper-clearfix\"/>');\n",
       "    var titletext = $(\n",
       "        '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
       "        'text-align: center; padding: 3px;\"/>');\n",
       "    titlebar.append(titletext)\n",
       "    this.root.append(titlebar);\n",
       "    this.header = titletext[0];\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = $('<div/>');\n",
       "\n",
       "    canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
       "\n",
       "    function canvas_keyboard_event(event) {\n",
       "        return fig.key_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    canvas_div.keydown('key_press', canvas_keyboard_event);\n",
       "    canvas_div.keyup('key_release', canvas_keyboard_event);\n",
       "    this.canvas_div = canvas_div\n",
       "    this._canvas_extra_style(canvas_div)\n",
       "    this.root.append(canvas_div);\n",
       "\n",
       "    var canvas = $('<canvas/>');\n",
       "    canvas.addClass('mpl-canvas');\n",
       "    canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
       "\n",
       "    this.canvas = canvas[0];\n",
       "    this.context = canvas[0].getContext(\"2d\");\n",
       "\n",
       "    var backingStore = this.context.backingStorePixelRatio ||\n",
       "\tthis.context.webkitBackingStorePixelRatio ||\n",
       "\tthis.context.mozBackingStorePixelRatio ||\n",
       "\tthis.context.msBackingStorePixelRatio ||\n",
       "\tthis.context.oBackingStorePixelRatio ||\n",
       "\tthis.context.backingStorePixelRatio || 1;\n",
       "\n",
       "    mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband = $('<canvas/>');\n",
       "    rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
       "\n",
       "    var pass_mouse_events = true;\n",
       "\n",
       "    canvas_div.resizable({\n",
       "        start: function(event, ui) {\n",
       "            pass_mouse_events = false;\n",
       "        },\n",
       "        resize: function(event, ui) {\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "        stop: function(event, ui) {\n",
       "            pass_mouse_events = true;\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "    });\n",
       "\n",
       "    function mouse_event_fn(event) {\n",
       "        if (pass_mouse_events)\n",
       "            return fig.mouse_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    rubberband.mousedown('button_press', mouse_event_fn);\n",
       "    rubberband.mouseup('button_release', mouse_event_fn);\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband.mousemove('motion_notify', mouse_event_fn);\n",
       "\n",
       "    rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
       "    rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
       "\n",
       "    canvas_div.on(\"wheel\", function (event) {\n",
       "        event = event.originalEvent;\n",
       "        event['data'] = 'scroll'\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        mouse_event_fn(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.append(canvas);\n",
       "    canvas_div.append(rubberband);\n",
       "\n",
       "    this.rubberband = rubberband;\n",
       "    this.rubberband_canvas = rubberband[0];\n",
       "    this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
       "    this.rubberband_context.strokeStyle = \"#000000\";\n",
       "\n",
       "    this._resize_canvas = function(width, height) {\n",
       "        // Keep the size of the canvas, canvas container, and rubber band\n",
       "        // canvas in synch.\n",
       "        canvas_div.css('width', width)\n",
       "        canvas_div.css('height', height)\n",
       "\n",
       "        canvas.attr('width', width * mpl.ratio);\n",
       "        canvas.attr('height', height * mpl.ratio);\n",
       "        canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
       "\n",
       "        rubberband.attr('width', width);\n",
       "        rubberband.attr('height', height);\n",
       "    }\n",
       "\n",
       "    // Set the figure to an initial 600x600px, this will subsequently be updated\n",
       "    // upon first draw.\n",
       "    this._resize_canvas(600, 600);\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus () {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            // put a spacer in here.\n",
       "            continue;\n",
       "        }\n",
       "        var button = $('<button/>');\n",
       "        button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
       "                        'ui-button-icon-only');\n",
       "        button.attr('role', 'button');\n",
       "        button.attr('aria-disabled', 'false');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "\n",
       "        var icon_img = $('<span/>');\n",
       "        icon_img.addClass('ui-button-icon-primary ui-icon');\n",
       "        icon_img.addClass(image);\n",
       "        icon_img.addClass('ui-corner-all');\n",
       "\n",
       "        var tooltip_span = $('<span/>');\n",
       "        tooltip_span.addClass('ui-button-text');\n",
       "        tooltip_span.html(tooltip);\n",
       "\n",
       "        button.append(icon_img);\n",
       "        button.append(tooltip_span);\n",
       "\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    var fmt_picker_span = $('<span/>');\n",
       "\n",
       "    var fmt_picker = $('<select/>');\n",
       "    fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
       "    fmt_picker_span.append(fmt_picker);\n",
       "    nav_element.append(fmt_picker_span);\n",
       "    this.format_dropdown = fmt_picker[0];\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = $(\n",
       "            '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
       "        fmt_picker.append(option);\n",
       "    }\n",
       "\n",
       "    // Add hover states to the ui-buttons\n",
       "    $( \".ui-button\" ).hover(\n",
       "        function() { $(this).addClass(\"ui-state-hover\");},\n",
       "        function() { $(this).removeClass(\"ui-state-hover\");}\n",
       "    );\n",
       "\n",
       "    var status_bar = $('<span class=\"mpl-message\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_message = function(type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function() {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
       "    }\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1]);\n",
       "        fig.send_message(\"refresh\", {});\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
       "    var x0 = msg['x0'] / mpl.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
       "    var x1 = msg['x1'] / mpl.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch(cursor)\n",
       "    {\n",
       "    case 0:\n",
       "        cursor = 'pointer';\n",
       "        break;\n",
       "    case 1:\n",
       "        cursor = 'default';\n",
       "        break;\n",
       "    case 2:\n",
       "        cursor = 'crosshair';\n",
       "        break;\n",
       "    case 3:\n",
       "        cursor = 'move';\n",
       "        break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message(\"ack\", {});\n",
       "}\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = \"image/png\";\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src);\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data);\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "        else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig[\"handle_\" + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "}\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function(e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e)\n",
       "        e = window.event;\n",
       "    if (e.target)\n",
       "        targ = e.target;\n",
       "    else if (e.srcElement)\n",
       "        targ = e.srcElement;\n",
       "    if (targ.nodeType == 3) // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "\n",
       "    // jQuery normalizes the pageX and pageY\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    // offset() returns the position of the element relative to the document\n",
       "    var x = e.pageX - $(targ).offset().left;\n",
       "    var y = e.pageY - $(targ).offset().top;\n",
       "\n",
       "    return {\"x\": x, \"y\": y};\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys (original) {\n",
       "  return Object.keys(original).reduce(function (obj, key) {\n",
       "    if (typeof original[key] !== 'object')\n",
       "        obj[key] = original[key]\n",
       "    return obj;\n",
       "  }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function(event, name) {\n",
       "    var canvas_pos = mpl.findpos(event)\n",
       "\n",
       "    if (name === 'button_press')\n",
       "    {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * mpl.ratio;\n",
       "    var y = canvas_pos.y * mpl.ratio;\n",
       "\n",
       "    this.send_message(name, {x: x, y: y, button: event.button,\n",
       "                             step: event.step,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.key_event = function(event, name) {\n",
       "\n",
       "    // Prevent repeat events\n",
       "    if (name == 'key_press')\n",
       "    {\n",
       "        if (event.which === this._key)\n",
       "            return;\n",
       "        else\n",
       "            this._key = event.which;\n",
       "    }\n",
       "    if (name == 'key_release')\n",
       "        this._key = null;\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which != 17)\n",
       "        value += \"ctrl+\";\n",
       "    if (event.altKey && event.which != 18)\n",
       "        value += \"alt+\";\n",
       "    if (event.shiftKey && event.which != 16)\n",
       "        value += \"shift+\";\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, {key: value,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
       "    if (name == 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message(\"toolbar_button\", {name: name});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function() {\n",
       "        comm.close()\n",
       "    };\n",
       "    ws.send = function(m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function(msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data'])\n",
       "    });\n",
       "    return ws;\n",
       "}\n",
       "\n",
       "mpl.mpl_figure_comm = function(comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = $(\"#\" + id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm)\n",
       "\n",
       "    function ondownload(figure, format) {\n",
       "        window.open(figure.imageObj.src);\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy,\n",
       "                           ondownload,\n",
       "                           element.get(0));\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element.get(0);\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error(\"Failed to find cell for figure\", id, fig);\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    var output_index = fig.cell_info[2]\n",
       "    var cell = fig.cell_info[0];\n",
       "\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
       "    var width = fig.canvas.width/mpl.ratio\n",
       "    fig.root.unbind('remove')\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable()\n",
       "    $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
       "    fig.close_ws(fig, msg);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.close_ws = function(fig, msg){\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width/mpl.ratio\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message(\"ack\", {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () { fig.push_to_output() }, 1000);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items){\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) { continue; };\n",
       "\n",
       "        var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
       "    var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
       "    button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
       "    button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
       "    buttongrp.append(button);\n",
       "    var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
       "    titlebar.prepend(buttongrp);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(el){\n",
       "    var fig = this\n",
       "    el.on(\"remove\", function(){\n",
       "\tfig.close_ws(fig, {});\n",
       "    });\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(el){\n",
       "    // this is important to make the div 'focusable\n",
       "    el.attr('tabindex', 0)\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    }\n",
       "    else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager)\n",
       "        manager = IPython.keyboard_manager;\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which == 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.find_output_cell = function(html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i=0; i<ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code'){\n",
       "            for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] == html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "}\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel != null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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oq+vLsGbbx5x553ZqQBoZ5/+dMT//m92Cpg09vN8CnDBDBiT7swzW78PfMQR2YkAaFe//nVET0/zfHHQQZ4pT1ewn+dTgAtmwEjxuc81l5n9948YGspOA0A7euSRiG22qX9h+uIXN2+sCIWzn+dTgAtmwEjRaET89383H5MEAE/kYx+ry29PT8SvfpWdCCaF/TyfAlwwAwYAtJ0rroiYNq0uwO97X3YimDT283wKcMEMGG3loosifvCD7BQAZFq+POLlL6/L72abRSxenJ0KJo39PJ8CXDADRts466yIGTOah8vcALrX8ce33izxxz/OTgSTyn6eTwEumAGjLdx/f/O5wI9+RvDVV2enAmCyXX998xehK84H73xndiKYdPbzfApwwQwYbeO881qfEfz850fcemt2KgAmy+hoxJw59Xlgo40i7r03OxVMOvt5PgW4YAaMtnLWWfXzHqsq4i/+IuK++7JTATAZTj659dLns87KTgQp7Of5FOCCGTDazle+0roAvepVnhUM0A0efDDi0EObP/v32y87DaSxn+dTgAtmwGhLH/1oawl+4xsjRkayUwEwGX70o4i77spOAWns5/kU4IIZMNpSoxHxrne1luDDDmv+OQBAwezn+RTgghkw2tby5RGvfW1rCT7uuOxUAIwnv9iEx7Gf51OAC2bAaGtLlkTsvHOz/D7rWRG/+U12IgDGy7JlEXvsEfG1rynC8Cj283wKcMEMGG3v7rsj/uZvIhYsyE4CwHj6xCfqK3xe85pmIQbs521AAS6YAQMAJtKiRYvi2GOPjYGBgejv74+BgYEYPOKIWDR1al2A587Njgltw36eTwEumAGjYz30UMS112anAOBJDA0Nxdy5c6O3tzeqqnrc0VtVMa+qYnjTTZs/04GIsJ+3AwW4YAaMjnTPPRE77RSx0UYR11+fnQaAxxgaGoo5c+Y8YfF97DFnhx1iyPPeYSX7eT4FuGAGjI6zfHnEDjvUl8294AURt92WnQqAR5k7d+4qld8Vx7x587IjQ9uwn+dTgAtmwOhIp53W+nikbbdtfioMQLqFCxc+6WXPT3b09vbGokWLsqNDW7Cf51OAC2bA6Fhf/GJrCX7FK3yHDKANHHvssatVflccg4OD2dGhLdjP8ynABTNgdLSPf7y1BO+xR8TwcHYqgK42MDCwRgV4YGAgOzq0Bft5PgW4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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1c599510e48>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fx = lambda x: x**3+4.0*x**2-10.0\n",
    "fdx = lambda x: 3*x**2+8.0*x \n",
    "\n",
    "npts = 200\n",
    "xx = np.linspace(-1, 1, npts)  \n",
    "x_data = np.array([-1, -0.5 , 0.0 , 0.5, 1])\n",
    "fd = fx(x_data)\n",
    "\n",
    "plt.figure(0)\n",
    "yy = fx(xx) \n",
    "plt.plot(xx, yy ,'r--')\n",
    "plt.plot([-1, -0.5 , 0.0 , 0.5, 1], fd, 'ko')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Polinomios de Lagrange locales"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ahora dividimos el dominio del problema correspondiente a $x \\in \\left[ {{-1},{1}} \\right]$ en  sub-dominios de tamaño constante. Cada sub-dominio estará conformado por 2 **nodos** que serán usados para definir polinomios de interpolación de orden 1.\n",
    "\n",
    "En el siguiente bloque de código calculamos polinomios para cada nudo de estos sub-dominios de tamaño $\\Delta x=0.5$. En este esquema, cada polinomio solo existirá en el sub-dominio dado y además los polinomios de cada sub-dominio son exactamente los mismos. Esto indica que una implementación más general y potente debería calcular los polinomios lineales una sola vez y usarlos recursivamente en la construcción de la función de aproximación.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Adicione comentarios para aclarar los pasos mas relevantes del siguiente\n",
    "# bloque de código\n",
    "x = sym.symbols('x')\n",
    "pol = []\n",
    "pol.append(sym.simplify(lagrange_poly(x, 1, 0, [-1.0, -0.5])))\n",
    "pol.append(sym.simplify(lagrange_poly(x, 1, 1, [-1.0, -0.5])))\n",
    "pol.append(sym.simplify(lagrange_poly(x, 1, 0, [-0.5,  0.0])))\n",
    "pol.append(sym.simplify(lagrange_poly(x, 1, 1, [-0.5,  0.0])))\n",
    "pol.append(sym.simplify(lagrange_poly(x, 1, 0, [ 0.0,  0.5])))\n",
    "pol.append(sym.simplify(lagrange_poly(x, 1, 1, [ 0.0,  0.5])))\n",
    "pol.append(sym.simplify(lagrange_poly(x, 1, 0, [ 0.5,  1.0])))\n",
    "pol.append(sym.simplify(lagrange_poly(x, 1, 1, [ 0.5,  1.0])))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\n",
       "\n",
       "mpl.get_websocket_type = function() {\n",
       "    if (typeof(WebSocket) !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof(MozWebSocket) !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert('Your browser does not have WebSocket support. ' +\n",
       "              'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "              'Firefox 4 and 5 are also supported but you ' +\n",
       "              'have to enable WebSockets in about:config.');\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = (this.ws.binaryType != undefined);\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById(\"mpl-warnings\");\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent = (\n",
       "                \"This browser does not support binary websocket messages. \" +\n",
       "                    \"Performance may be slow.\");\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = $('<div/>');\n",
       "    this._root_extra_style(this.root)\n",
       "    this.root.attr('style', 'display: inline-block');\n",
       "\n",
       "    $(parent_element).append(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen =  function () {\n",
       "            fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
       "            fig.send_message(\"send_image_mode\", {});\n",
       "            if (mpl.ratio != 1) {\n",
       "                fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
       "            }\n",
       "            fig.send_message(\"refresh\", {});\n",
       "        }\n",
       "\n",
       "    this.imageObj.onload = function() {\n",
       "            if (fig.image_mode == 'full') {\n",
       "                // Full images could contain transparency (where diff images\n",
       "                // almost always do), so we need to clear the canvas so that\n",
       "                // there is no ghosting.\n",
       "                fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "            }\n",
       "            fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "        };\n",
       "\n",
       "    this.imageObj.onunload = function() {\n",
       "        fig.ws.close();\n",
       "    }\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_header = function() {\n",
       "    var titlebar = $(\n",
       "        '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
       "        'ui-helper-clearfix\"/>');\n",
       "    var titletext = $(\n",
       "        '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
       "        'text-align: center; padding: 3px;\"/>');\n",
       "    titlebar.append(titletext)\n",
       "    this.root.append(titlebar);\n",
       "    this.header = titletext[0];\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = $('<div/>');\n",
       "\n",
       "    canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
       "\n",
       "    function canvas_keyboard_event(event) {\n",
       "        return fig.key_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    canvas_div.keydown('key_press', canvas_keyboard_event);\n",
       "    canvas_div.keyup('key_release', canvas_keyboard_event);\n",
       "    this.canvas_div = canvas_div\n",
       "    this._canvas_extra_style(canvas_div)\n",
       "    this.root.append(canvas_div);\n",
       "\n",
       "    var canvas = $('<canvas/>');\n",
       "    canvas.addClass('mpl-canvas');\n",
       "    canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
       "\n",
       "    this.canvas = canvas[0];\n",
       "    this.context = canvas[0].getContext(\"2d\");\n",
       "\n",
       "    var backingStore = this.context.backingStorePixelRatio ||\n",
       "\tthis.context.webkitBackingStorePixelRatio ||\n",
       "\tthis.context.mozBackingStorePixelRatio ||\n",
       "\tthis.context.msBackingStorePixelRatio ||\n",
       "\tthis.context.oBackingStorePixelRatio ||\n",
       "\tthis.context.backingStorePixelRatio || 1;\n",
       "\n",
       "    mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband = $('<canvas/>');\n",
       "    rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
       "\n",
       "    var pass_mouse_events = true;\n",
       "\n",
       "    canvas_div.resizable({\n",
       "        start: function(event, ui) {\n",
       "            pass_mouse_events = false;\n",
       "        },\n",
       "        resize: function(event, ui) {\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "        stop: function(event, ui) {\n",
       "            pass_mouse_events = true;\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "    });\n",
       "\n",
       "    function mouse_event_fn(event) {\n",
       "        if (pass_mouse_events)\n",
       "            return fig.mouse_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    rubberband.mousedown('button_press', mouse_event_fn);\n",
       "    rubberband.mouseup('button_release', mouse_event_fn);\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband.mousemove('motion_notify', mouse_event_fn);\n",
       "\n",
       "    rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
       "    rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
       "\n",
       "    canvas_div.on(\"wheel\", function (event) {\n",
       "        event = event.originalEvent;\n",
       "        event['data'] = 'scroll'\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        mouse_event_fn(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.append(canvas);\n",
       "    canvas_div.append(rubberband);\n",
       "\n",
       "    this.rubberband = rubberband;\n",
       "    this.rubberband_canvas = rubberband[0];\n",
       "    this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
       "    this.rubberband_context.strokeStyle = \"#000000\";\n",
       "\n",
       "    this._resize_canvas = function(width, height) {\n",
       "        // Keep the size of the canvas, canvas container, and rubber band\n",
       "        // canvas in synch.\n",
       "        canvas_div.css('width', width)\n",
       "        canvas_div.css('height', height)\n",
       "\n",
       "        canvas.attr('width', width * mpl.ratio);\n",
       "        canvas.attr('height', height * mpl.ratio);\n",
       "        canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
       "\n",
       "        rubberband.attr('width', width);\n",
       "        rubberband.attr('height', height);\n",
       "    }\n",
       "\n",
       "    // Set the figure to an initial 600x600px, this will subsequently be updated\n",
       "    // upon first draw.\n",
       "    this._resize_canvas(600, 600);\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus () {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            // put a spacer in here.\n",
       "            continue;\n",
       "        }\n",
       "        var button = $('<button/>');\n",
       "        button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
       "                        'ui-button-icon-only');\n",
       "        button.attr('role', 'button');\n",
       "        button.attr('aria-disabled', 'false');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "\n",
       "        var icon_img = $('<span/>');\n",
       "        icon_img.addClass('ui-button-icon-primary ui-icon');\n",
       "        icon_img.addClass(image);\n",
       "        icon_img.addClass('ui-corner-all');\n",
       "\n",
       "        var tooltip_span = $('<span/>');\n",
       "        tooltip_span.addClass('ui-button-text');\n",
       "        tooltip_span.html(tooltip);\n",
       "\n",
       "        button.append(icon_img);\n",
       "        button.append(tooltip_span);\n",
       "\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    var fmt_picker_span = $('<span/>');\n",
       "\n",
       "    var fmt_picker = $('<select/>');\n",
       "    fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
       "    fmt_picker_span.append(fmt_picker);\n",
       "    nav_element.append(fmt_picker_span);\n",
       "    this.format_dropdown = fmt_picker[0];\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = $(\n",
       "            '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
       "        fmt_picker.append(option);\n",
       "    }\n",
       "\n",
       "    // Add hover states to the ui-buttons\n",
       "    $( \".ui-button\" ).hover(\n",
       "        function() { $(this).addClass(\"ui-state-hover\");},\n",
       "        function() { $(this).removeClass(\"ui-state-hover\");}\n",
       "    );\n",
       "\n",
       "    var status_bar = $('<span class=\"mpl-message\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_message = function(type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function() {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
       "    }\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1]);\n",
       "        fig.send_message(\"refresh\", {});\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
       "    var x0 = msg['x0'] / mpl.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
       "    var x1 = msg['x1'] / mpl.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch(cursor)\n",
       "    {\n",
       "    case 0:\n",
       "        cursor = 'pointer';\n",
       "        break;\n",
       "    case 1:\n",
       "        cursor = 'default';\n",
       "        break;\n",
       "    case 2:\n",
       "        cursor = 'crosshair';\n",
       "        break;\n",
       "    case 3:\n",
       "        cursor = 'move';\n",
       "        break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message(\"ack\", {});\n",
       "}\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = \"image/png\";\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src);\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data);\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "        else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig[\"handle_\" + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "}\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function(e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e)\n",
       "        e = window.event;\n",
       "    if (e.target)\n",
       "        targ = e.target;\n",
       "    else if (e.srcElement)\n",
       "        targ = e.srcElement;\n",
       "    if (targ.nodeType == 3) // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "\n",
       "    // jQuery normalizes the pageX and pageY\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    // offset() returns the position of the element relative to the document\n",
       "    var x = e.pageX - $(targ).offset().left;\n",
       "    var y = e.pageY - $(targ).offset().top;\n",
       "\n",
       "    return {\"x\": x, \"y\": y};\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys (original) {\n",
       "  return Object.keys(original).reduce(function (obj, key) {\n",
       "    if (typeof original[key] !== 'object')\n",
       "        obj[key] = original[key]\n",
       "    return obj;\n",
       "  }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function(event, name) {\n",
       "    var canvas_pos = mpl.findpos(event)\n",
       "\n",
       "    if (name === 'button_press')\n",
       "    {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * mpl.ratio;\n",
       "    var y = canvas_pos.y * mpl.ratio;\n",
       "\n",
       "    this.send_message(name, {x: x, y: y, button: event.button,\n",
       "                             step: event.step,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.key_event = function(event, name) {\n",
       "\n",
       "    // Prevent repeat events\n",
       "    if (name == 'key_press')\n",
       "    {\n",
       "        if (event.which === this._key)\n",
       "            return;\n",
       "        else\n",
       "            this._key = event.which;\n",
       "    }\n",
       "    if (name == 'key_release')\n",
       "        this._key = null;\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which != 17)\n",
       "        value += \"ctrl+\";\n",
       "    if (event.altKey && event.which != 18)\n",
       "        value += \"alt+\";\n",
       "    if (event.shiftKey && event.which != 16)\n",
       "        value += \"shift+\";\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, {key: value,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
       "    if (name == 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message(\"toolbar_button\", {name: name});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function() {\n",
       "        comm.close()\n",
       "    };\n",
       "    ws.send = function(m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function(msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data'])\n",
       "    });\n",
       "    return ws;\n",
       "}\n",
       "\n",
       "mpl.mpl_figure_comm = function(comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = $(\"#\" + id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm)\n",
       "\n",
       "    function ondownload(figure, format) {\n",
       "        window.open(figure.imageObj.src);\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy,\n",
       "                           ondownload,\n",
       "                           element.get(0));\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element.get(0);\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error(\"Failed to find cell for figure\", id, fig);\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    var output_index = fig.cell_info[2]\n",
       "    var cell = fig.cell_info[0];\n",
       "\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
       "    var width = fig.canvas.width/mpl.ratio\n",
       "    fig.root.unbind('remove')\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable()\n",
       "    $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
       "    fig.close_ws(fig, msg);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.close_ws = function(fig, msg){\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width/mpl.ratio\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message(\"ack\", {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () { fig.push_to_output() }, 1000);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items){\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) { continue; };\n",
       "\n",
       "        var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
       "    var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
       "    button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
       "    button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
       "    buttongrp.append(button);\n",
       "    var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
       "    titlebar.prepend(buttongrp);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(el){\n",
       "    var fig = this\n",
       "    el.on(\"remove\", function(){\n",
       "\tfig.close_ws(fig, {});\n",
       "    });\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(el){\n",
       "    // this is important to make the div 'focusable\n",
       "    el.attr('tabindex', 0)\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    }\n",
       "    else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager)\n",
       "        manager = IPython.keyboard_manager;\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which == 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.find_output_cell = function(html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i=0; i<ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code'){\n",
       "            for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] == html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "}\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel != null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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cbBLly4RY4yef/75Ch/r448/JsbKviDgtm3biLE7f9dWrPjCgmVtkjMyMogxRn/729+c+Ndog5rHtDxvvvkmDxAllXWF3Ro1alC/fv109beAah/Psq4Cfc8999CSJUtK/TzO0app2bIlMcbI19fX4e1GOkcdqWoAxusolIQADNVSnQB86tQpYozRP/7xjzJ/5pVXXiHGmOICWbVr1ybGGEVGRjq8T/GFdEpWKLUoNjaW/weqrP8w9erVixhjtG7duio/z3vvvUeMMfrjjz8c3h4XF0d9+/alo0ePUmJiImVmZtKZM2eoU6dOxNidqx/qoa7riuO5d+9eGj16NF28eJEyMzMpISGBduzYwf9WtW3btmS1WhX3wTlaeZmZmfwKnb/99lup2/V0jvbp04cYYzRixAiHt0dGRhJjjB5//PEKH+utt94ixhgtXrzY4e0HDhwgxhi9/fbb/Hvjx48nxhj16tXL4X2Kr8TtqOarVWoe07LMnz+fn0uxsbGlbp8xYwYtWLCAIiIiKC8vj65fv05z587lv/Cyf/dI69Q+ngMGDCBfX1+6desW5eXlUXBwMP30009Uq1YtYqz031DiHK28c+fO8TcNymq9GOkcdaSqARivo1ASArDJdOvWjVq2bFmpr3PnzpX5eNUJwCdPniTGGD300ENl/kzxxR4cBeCyPk5g+PDhbg0X1TmmMTExFYaLTz/9tFrhIikpie666y6qWbOmw01dRYqfv0+fPlV6/srS+vEslp2dTY8//jgxxmjt2rWK23COVo7VaqX333+fGLvzkVGVrTS7+xytyLfffkuMMRo5cqTD2yMiIpzeCBe/I+noXTQi+eJ29hu3cePGEWOMPvvsM4f30ePGTc1j6sjRo0fJw8ODatSoUea7a2W5cuUKeXh4UK1atej27dtVen53c/XxLLZw4UKHj4NztPKKr1b8ww8/VPq+ejxHHalqAMbrKJSEAGwyxX9fV5mv8i6mgAp09Y6pO+qlxTWet956q0r3L/47F0d/E+cKWj+e9or/bqjkxyfgHK2c4guQtGzZstTHHznD3edoRVCBVp8r66VBQUH879yruiaL/65fLx9v5q5Kuc1mo7///e/EGKPr16/z7+McrZyioiJ+HE+dOlWl+fR2jjpS1QCM11EoCQEYqgUXwaq+4s9XddUFhl544QVijNHKlSurdP/CwkJijFHt2rWrdH93c/XxtLdv3z6Hv1zAOeq8X375hRhj1KRJkyq/M6G1cxQXwVKfqy4wFBUVRQ888AAxxmj06NFVnm/YsGHEGKPx48dX+THcyV0XFSMi/tnn9sEN52jl7Nq1ixhj9Nhjj1V5Pr2do45UNQDjdRRKQgCGanHHxyCVfFfH2Y+Ysf9ts5aV9xEzFouF6tatS3Xq1KnSR8yEh4cTY3cuRJKdnV2l+Yo/fL68d+q1xJXHs6QNGzY4/A0xzlHnTJgwgRhj9Pe//53CwsKqPJ/WzlFnPw7Fy8urwsdy9uM77N/VcfbjO0o2F7RMzWNaLDY2lh599FFizPFn0VfGDz/8UO47TFrjiuNZluLrJdg3YnCOVk7Pnj2r/f+H3s5RR6oagPE6CiUhAEO1VDcA9+3bt8zNx7Rp04gxRv369VN8f+PGjcQYozZt2pS6T2BgIDHG6KmnnqrSPCJMnjyZGGPUuXPnUrf5+voSY4w6depUpcceNWoUMVb2RRycMXfuXGKM0Ztvvlnlx3AnVx7Pkoo/s3bcuHGK7+McrVjx3wbWr1+fLl68WK35tHaOFhYW8nfNAwMDS93eunVrYoyRv79/hY8VFxdHNWvWJA8PD0pMTFTcVlBQQA0bNqSaNWtSfHy84rYnn3ySGCt98SEioo8++ogYY7Rp06ZK/svEUfOYEhGlpaVRq1atiDFGX331FUmSVOXZCgoKqEmTJsQYo5MnT1b5cdxJ7eNZluDgYKpRowbdc889pf62H+eoc7Kzs+mee+4hxhhFRERUaTY9nqOOVDUA43UUSkIAhmpxNgAXX1gnJiZG8f2wsDCqVasW1alTh86cOcO/HxERQQ0aNKBatWqVemfIYrHw39pPmzaNfz8nJ4dXrcq60IEWpaam0l//+ldijNGWLVv49xMTE6l58+bEGKODBw+Wul9Zx9Re8TuNe/fuLXeGlStXUnR0dKnvb9myhX9+cGUvDCOK2sdz5syZpd49t1gsNHr0aP7b4ZL3wTl6R1nH1MfHh2rWrEn16tVTXOCuPHo7R4uv9P3yyy8r/sRj6tSpxBijDh06KH5+9uzZ1LJlSxo6dGipxyq+yna3bt0UFyIbOHAgMeb4Ii2LFy8mxhi1aNFCseHbsmULMcbo0UcfdfiuhpapdUxzc3PpxRdfJMYYeXp6lrqKuyNhYWG0bdu2Uj+blJTE/wa+TZs21QrS7qbW8dy7dy8FBASUevygoCAeIAYOHFjqdpyj5a/7YitXriTGGL344ovlPrcRz9GSKgrAeB0FZyEAQ6V16dKF2rdvT+3bt6d//OMfxNidv98r/p6jv29h7M7f+jr6mJLid3rvuusueu+996hz58509913lwoP9k6dOsV/pn379uTp6UmNGzcmxu78fY3NZlP7n+1Smzdvppo1a1KNGjXotddeo+7du/OLsjjaOBCVf0yJ5I+ZeuCBByrc4L366qtUs2ZNeuqpp6hTp07UtWtXXltjrOy/m9EqNY9nccht27Ytde3alTp16kQPPvggMcaobt26ikBoD+eo42OamJhIHh4exBijZ555hnr37u3wq+Rv3PV2jubn51P79u2JMUaNGzcmT09P/r8bNGhQ6iOyin+Z2Lt371KPlZycTM2aNeP1yh49evB3L5s1a+bwwmE2m41f+OW+++6j7t2702uvvUY1atSgunXrVvlCOiKpdUyLL0JXq1Yt+vTTT8s8B+0dOXKEP88rr7xCnp6e9Nprr/Ffvjz00EMUHh7u4iOgLrWOZ/H3H374YXr99depR48e1K5dO7rrrruIsTufl56bm1vq+XGOlr/uixV/hM/cuXPLfW4jnqN+fn58b1l8HGvUqKH4np+fH/95vI6CsxCAodLK+sD74q+HH3641H0qCms7duygf/3rX1SvXj2qV68edejQgbZv317uHMHBwdStWzdq0KAB1alTh5566in6888/nfptvhadPHmS3n33Xapfvz7dc8891LZt23Kv1ljRMS2ul5d1RUp7a9asoe7du1Pz5s3pr3/9K9WuXZsefPBB6tq1Kx04cKCq/ySh1DqeXl5e9NZbb1GTJk3o7rvvprp161Lz5s3p+++/r/DvVnGOlj6mN27cKPf1o/jL29tb8Vh6PEfz8vJo1KhR1KxZM/Lw8KBGjRpR7969HV7sq6KNcFpaGg0YMICaNGlCHh4e1KRJE+rfvz+lpqaW+fxWq5WmTp1KTz/9NNWtW5caNGhAXbt2peDgYLX+iW6nxjHt3bu3U+egvdjYWBo8eDC9+OKL9MADD1Dt2rWpXr169Pzzz5O3tzelpaW58p/tMmocz9OnT9PXX39NzzzzDDVo0IDuuusu+tvf/kavvfYaLV68uNzXO5yj5a/7+Ph4qlWrFtWuXZtSUlLKfV4jnqPLly+vcJ0uX76c/zxeR8FZCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCgjAAAAAAAAAYAoIwAAAAAAAAGAKCMAAAAAAAABgCv8PRxe9a2GlJGkAAAAASUVORK5CYII=\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "xx = np.linspace(-1, -0.5, npts)\n",
    "for k in range(2):\n",
    "    for i in range(npts):\n",
    "        yy[i] =  pol[k].subs([(x, xx[i])])\n",
    "    plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace(-0.5, 0.0, npts)\n",
    "for k in range(2):\n",
    "    for i in range(npts):\n",
    "        yy[i] =  pol[k + 2].subs([(x, xx[i])])\n",
    "    plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace(0.0, 0.5, npts)\n",
    "for k in range(2):\n",
    "    for i in range(npts):\n",
    "        yy[i] =  pol[k + 4].subs([(x, xx[i])])\n",
    "    plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace(0.5, 1.0, npts)\n",
    "for k in range(2):\n",
    "    for i in range(npts):\n",
    "        yy[i] =  pol[k + 6].subs([(x, xx[i])])\n",
    "    plt.plot(xx, yy)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### Polinomio de interpolación $p(x)$ para aproximar la  función $f(x)$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Construyamos ahora el polinomio de aproximación completo $p(x)$. Ya que cada polinomio existe localmente sobre cada sub-dominio podemos usar:\n",
    "\n",
    "$$p(x) = L_L(x)f(x_L) + L_R(x)f(x_R)$$\n",
    "\n",
    "donde $f(x_L)$ y $f(x_R)$ son los valores de la función en los extremos izquierdo y derecho del sub-dominio, mientras que $L_L(x)$ y $L_R(x)$ son los respectivos polinomios de primer orden asociados a estos puntos.\n",
    "\n",
    "En el próximo bloque de código aproximamos la función desconocida $f(x)$ en cada sub-dominio usando los 2 polinomios de Lagrange locales. En la gráfica los puntos negros representan los valores nodales o exactos de la función, mientras que la línea continua representa la función exacta.\n",
    "\n",
    "\n",
    "<div class=\"alert alert-warning\">\n",
    "\n",
    "**Pregunta**\n",
    "\n",
    "Sugiera una estrategia para mejorar la aproximación a la función $f(x)$ pero usando la idea de polinomios de interpolación locales.\n",
    "\n",
    "</div>\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\n",
       "\n",
       "mpl.get_websocket_type = function() {\n",
       "    if (typeof(WebSocket) !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof(MozWebSocket) !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert('Your browser does not have WebSocket support. ' +\n",
       "              'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "              'Firefox 4 and 5 are also supported but you ' +\n",
       "              'have to enable WebSockets in about:config.');\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = (this.ws.binaryType != undefined);\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById(\"mpl-warnings\");\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent = (\n",
       "                \"This browser does not support binary websocket messages. \" +\n",
       "                    \"Performance may be slow.\");\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = $('<div/>');\n",
       "    this._root_extra_style(this.root)\n",
       "    this.root.attr('style', 'display: inline-block');\n",
       "\n",
       "    $(parent_element).append(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen =  function () {\n",
       "            fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
       "            fig.send_message(\"send_image_mode\", {});\n",
       "            if (mpl.ratio != 1) {\n",
       "                fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
       "            }\n",
       "            fig.send_message(\"refresh\", {});\n",
       "        }\n",
       "\n",
       "    this.imageObj.onload = function() {\n",
       "            if (fig.image_mode == 'full') {\n",
       "                // Full images could contain transparency (where diff images\n",
       "                // almost always do), so we need to clear the canvas so that\n",
       "                // there is no ghosting.\n",
       "                fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "            }\n",
       "            fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "        };\n",
       "\n",
       "    this.imageObj.onunload = function() {\n",
       "        fig.ws.close();\n",
       "    }\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_header = function() {\n",
       "    var titlebar = $(\n",
       "        '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
       "        'ui-helper-clearfix\"/>');\n",
       "    var titletext = $(\n",
       "        '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
       "        'text-align: center; padding: 3px;\"/>');\n",
       "    titlebar.append(titletext)\n",
       "    this.root.append(titlebar);\n",
       "    this.header = titletext[0];\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = $('<div/>');\n",
       "\n",
       "    canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
       "\n",
       "    function canvas_keyboard_event(event) {\n",
       "        return fig.key_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    canvas_div.keydown('key_press', canvas_keyboard_event);\n",
       "    canvas_div.keyup('key_release', canvas_keyboard_event);\n",
       "    this.canvas_div = canvas_div\n",
       "    this._canvas_extra_style(canvas_div)\n",
       "    this.root.append(canvas_div);\n",
       "\n",
       "    var canvas = $('<canvas/>');\n",
       "    canvas.addClass('mpl-canvas');\n",
       "    canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
       "\n",
       "    this.canvas = canvas[0];\n",
       "    this.context = canvas[0].getContext(\"2d\");\n",
       "\n",
       "    var backingStore = this.context.backingStorePixelRatio ||\n",
       "\tthis.context.webkitBackingStorePixelRatio ||\n",
       "\tthis.context.mozBackingStorePixelRatio ||\n",
       "\tthis.context.msBackingStorePixelRatio ||\n",
       "\tthis.context.oBackingStorePixelRatio ||\n",
       "\tthis.context.backingStorePixelRatio || 1;\n",
       "\n",
       "    mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband = $('<canvas/>');\n",
       "    rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
       "\n",
       "    var pass_mouse_events = true;\n",
       "\n",
       "    canvas_div.resizable({\n",
       "        start: function(event, ui) {\n",
       "            pass_mouse_events = false;\n",
       "        },\n",
       "        resize: function(event, ui) {\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "        stop: function(event, ui) {\n",
       "            pass_mouse_events = true;\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "    });\n",
       "\n",
       "    function mouse_event_fn(event) {\n",
       "        if (pass_mouse_events)\n",
       "            return fig.mouse_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    rubberband.mousedown('button_press', mouse_event_fn);\n",
       "    rubberband.mouseup('button_release', mouse_event_fn);\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband.mousemove('motion_notify', mouse_event_fn);\n",
       "\n",
       "    rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
       "    rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
       "\n",
       "    canvas_div.on(\"wheel\", function (event) {\n",
       "        event = event.originalEvent;\n",
       "        event['data'] = 'scroll'\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        mouse_event_fn(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.append(canvas);\n",
       "    canvas_div.append(rubberband);\n",
       "\n",
       "    this.rubberband = rubberband;\n",
       "    this.rubberband_canvas = rubberband[0];\n",
       "    this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
       "    this.rubberband_context.strokeStyle = \"#000000\";\n",
       "\n",
       "    this._resize_canvas = function(width, height) {\n",
       "        // Keep the size of the canvas, canvas container, and rubber band\n",
       "        // canvas in synch.\n",
       "        canvas_div.css('width', width)\n",
       "        canvas_div.css('height', height)\n",
       "\n",
       "        canvas.attr('width', width * mpl.ratio);\n",
       "        canvas.attr('height', height * mpl.ratio);\n",
       "        canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
       "\n",
       "        rubberband.attr('width', width);\n",
       "        rubberband.attr('height', height);\n",
       "    }\n",
       "\n",
       "    // Set the figure to an initial 600x600px, this will subsequently be updated\n",
       "    // upon first draw.\n",
       "    this._resize_canvas(600, 600);\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus () {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            // put a spacer in here.\n",
       "            continue;\n",
       "        }\n",
       "        var button = $('<button/>');\n",
       "        button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
       "                        'ui-button-icon-only');\n",
       "        button.attr('role', 'button');\n",
       "        button.attr('aria-disabled', 'false');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "\n",
       "        var icon_img = $('<span/>');\n",
       "        icon_img.addClass('ui-button-icon-primary ui-icon');\n",
       "        icon_img.addClass(image);\n",
       "        icon_img.addClass('ui-corner-all');\n",
       "\n",
       "        var tooltip_span = $('<span/>');\n",
       "        tooltip_span.addClass('ui-button-text');\n",
       "        tooltip_span.html(tooltip);\n",
       "\n",
       "        button.append(icon_img);\n",
       "        button.append(tooltip_span);\n",
       "\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    var fmt_picker_span = $('<span/>');\n",
       "\n",
       "    var fmt_picker = $('<select/>');\n",
       "    fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
       "    fmt_picker_span.append(fmt_picker);\n",
       "    nav_element.append(fmt_picker_span);\n",
       "    this.format_dropdown = fmt_picker[0];\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = $(\n",
       "            '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
       "        fmt_picker.append(option);\n",
       "    }\n",
       "\n",
       "    // Add hover states to the ui-buttons\n",
       "    $( \".ui-button\" ).hover(\n",
       "        function() { $(this).addClass(\"ui-state-hover\");},\n",
       "        function() { $(this).removeClass(\"ui-state-hover\");}\n",
       "    );\n",
       "\n",
       "    var status_bar = $('<span class=\"mpl-message\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_message = function(type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function() {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
       "    }\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1]);\n",
       "        fig.send_message(\"refresh\", {});\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
       "    var x0 = msg['x0'] / mpl.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
       "    var x1 = msg['x1'] / mpl.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch(cursor)\n",
       "    {\n",
       "    case 0:\n",
       "        cursor = 'pointer';\n",
       "        break;\n",
       "    case 1:\n",
       "        cursor = 'default';\n",
       "        break;\n",
       "    case 2:\n",
       "        cursor = 'crosshair';\n",
       "        break;\n",
       "    case 3:\n",
       "        cursor = 'move';\n",
       "        break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message(\"ack\", {});\n",
       "}\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = \"image/png\";\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src);\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data);\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "        else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig[\"handle_\" + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "}\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function(e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e)\n",
       "        e = window.event;\n",
       "    if (e.target)\n",
       "        targ = e.target;\n",
       "    else if (e.srcElement)\n",
       "        targ = e.srcElement;\n",
       "    if (targ.nodeType == 3) // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "\n",
       "    // jQuery normalizes the pageX and pageY\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    // offset() returns the position of the element relative to the document\n",
       "    var x = e.pageX - $(targ).offset().left;\n",
       "    var y = e.pageY - $(targ).offset().top;\n",
       "\n",
       "    return {\"x\": x, \"y\": y};\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys (original) {\n",
       "  return Object.keys(original).reduce(function (obj, key) {\n",
       "    if (typeof original[key] !== 'object')\n",
       "        obj[key] = original[key]\n",
       "    return obj;\n",
       "  }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function(event, name) {\n",
       "    var canvas_pos = mpl.findpos(event)\n",
       "\n",
       "    if (name === 'button_press')\n",
       "    {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * mpl.ratio;\n",
       "    var y = canvas_pos.y * mpl.ratio;\n",
       "\n",
       "    this.send_message(name, {x: x, y: y, button: event.button,\n",
       "                             step: event.step,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.key_event = function(event, name) {\n",
       "\n",
       "    // Prevent repeat events\n",
       "    if (name == 'key_press')\n",
       "    {\n",
       "        if (event.which === this._key)\n",
       "            return;\n",
       "        else\n",
       "            this._key = event.which;\n",
       "    }\n",
       "    if (name == 'key_release')\n",
       "        this._key = null;\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which != 17)\n",
       "        value += \"ctrl+\";\n",
       "    if (event.altKey && event.which != 18)\n",
       "        value += \"alt+\";\n",
       "    if (event.shiftKey && event.which != 16)\n",
       "        value += \"shift+\";\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, {key: value,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
       "    if (name == 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message(\"toolbar_button\", {name: name});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function() {\n",
       "        comm.close()\n",
       "    };\n",
       "    ws.send = function(m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function(msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data'])\n",
       "    });\n",
       "    return ws;\n",
       "}\n",
       "\n",
       "mpl.mpl_figure_comm = function(comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = $(\"#\" + id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm)\n",
       "\n",
       "    function ondownload(figure, format) {\n",
       "        window.open(figure.imageObj.src);\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy,\n",
       "                           ondownload,\n",
       "                           element.get(0));\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element.get(0);\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error(\"Failed to find cell for figure\", id, fig);\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    var output_index = fig.cell_info[2]\n",
       "    var cell = fig.cell_info[0];\n",
       "\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
       "    var width = fig.canvas.width/mpl.ratio\n",
       "    fig.root.unbind('remove')\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable()\n",
       "    $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
       "    fig.close_ws(fig, msg);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.close_ws = function(fig, msg){\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width/mpl.ratio\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message(\"ack\", {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () { fig.push_to_output() }, 1000);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items){\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) { continue; };\n",
       "\n",
       "        var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
       "    var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
       "    button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
       "    button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
       "    buttongrp.append(button);\n",
       "    var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
       "    titlebar.prepend(buttongrp);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(el){\n",
       "    var fig = this\n",
       "    el.on(\"remove\", function(){\n",
       "\tfig.close_ws(fig, {});\n",
       "    });\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(el){\n",
       "    // this is important to make the div 'focusable\n",
       "    el.attr('tabindex', 0)\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    }\n",
       "    else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager)\n",
       "        manager = IPython.keyboard_manager;\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which == 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.find_output_cell = function(html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i=0; i<ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code'){\n",
       "            for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] == html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "}\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel != null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1c59a8f23c8>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Adicione comentarios para aclarar los pasos mas relevantes del siguiente bloque\n",
    "# de código\n",
    "plt.figure()\n",
    "\n",
    "xx = np.linspace(-1.0, -0.5, npts)\n",
    "for i in range(npts):\n",
    "    yy[i] = fd[0]*pol[0].subs([(x, xx[i])]) + fd[1]*pol[1].subs([(x, xx[i])])\n",
    "plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace(-0.5, 0.0, npts)\n",
    "for i in range(npts):\n",
    "    yy[i] = fd[1]*pol[2].subs([(x, xx[i])]) + fd[2]*pol[3].subs([(x, xx[i])])\n",
    "plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace( 0.0, 0.5, npts)\n",
    "for i in range(npts):\n",
    "    yy[i] = fd[2]*pol[4].subs([(x, xx[i])]) + fd[3]*pol[5].subs([(x, xx[i])])\n",
    "plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace( 0.5, 1.0, npts)\n",
    "for i in range(npts):\n",
    "    yy[i] = fd[3]*pol[6].subs([(x, xx[i])]) + fd[4]*pol[7].subs([(x, xx[i])])\n",
    "plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace(-1.0, 1.0, npts)\n",
    "zz = fx(xx)\n",
    "plt.plot(xx, zz)\n",
    "plt.plot([-1, -0.5, 0, 0.5, 1], fd, 'ko')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Variables secundarias\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "El término variable secundaria corresponde a aquellas funciones que son obtenidas usando la función aproximada $p(x)$. Por ejemplo, asumamos que en el problema actual también estamos interesados en las derivadas de primer orden de la función $f(x)$ pero no tenemos valores nodales para realizar la interpolación. Sin embargo podemos usar la aproximación $p(x)$ de $f(x)$ como:\n",
    "\n",
    "\n",
    "$$p'(x) = \\frac{\\mathrm{d}L_L(x)}{\\mathrm{d}x} f(x_L) + \\frac{\\mathrm{d}L_R(x)}{\\mathrm{d}x}f(x_R)\\, .$$\n",
    "\n",
    "El siguiente bloque de código grafica los valores conocidos de las primeras derivadas (puntos negros), las derivada exacta $f'(x)$ (línea azul) y las derivadas calculadas con el esquema local. Nótese que debido a que en cada intervalo la función es aproximada por una función lineal la derivada resultante es una función constante a tramos y, por tanto,  discontinua entre los sub-intervalos.\n",
    "\n",
    "\n",
    "<div class=\"alert alert-warning\">\n",
    "\n",
    "**Preguntas**\n",
    "\n",
    "- Proponga una alternativa para mejorar la aproximación a la derivada de primer orden de la función mostrada.\n",
    "\n",
    "- ¿Cómo están relacionadas las discontinuidades en la primera derivada con la función local?\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "dpol = []\n",
    "for j in range(8):\n",
    "    dpol.append(sym.diff(pol[j],x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\n",
       "\n",
       "mpl.get_websocket_type = function() {\n",
       "    if (typeof(WebSocket) !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof(MozWebSocket) !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert('Your browser does not have WebSocket support. ' +\n",
       "              'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "              'Firefox 4 and 5 are also supported but you ' +\n",
       "              'have to enable WebSockets in about:config.');\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = (this.ws.binaryType != undefined);\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById(\"mpl-warnings\");\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent = (\n",
       "                \"This browser does not support binary websocket messages. \" +\n",
       "                    \"Performance may be slow.\");\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = $('<div/>');\n",
       "    this._root_extra_style(this.root)\n",
       "    this.root.attr('style', 'display: inline-block');\n",
       "\n",
       "    $(parent_element).append(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen =  function () {\n",
       "            fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
       "            fig.send_message(\"send_image_mode\", {});\n",
       "            if (mpl.ratio != 1) {\n",
       "                fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
       "            }\n",
       "            fig.send_message(\"refresh\", {});\n",
       "        }\n",
       "\n",
       "    this.imageObj.onload = function() {\n",
       "            if (fig.image_mode == 'full') {\n",
       "                // Full images could contain transparency (where diff images\n",
       "                // almost always do), so we need to clear the canvas so that\n",
       "                // there is no ghosting.\n",
       "                fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "            }\n",
       "            fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "        };\n",
       "\n",
       "    this.imageObj.onunload = function() {\n",
       "        fig.ws.close();\n",
       "    }\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_header = function() {\n",
       "    var titlebar = $(\n",
       "        '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
       "        'ui-helper-clearfix\"/>');\n",
       "    var titletext = $(\n",
       "        '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
       "        'text-align: center; padding: 3px;\"/>');\n",
       "    titlebar.append(titletext)\n",
       "    this.root.append(titlebar);\n",
       "    this.header = titletext[0];\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = $('<div/>');\n",
       "\n",
       "    canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
       "\n",
       "    function canvas_keyboard_event(event) {\n",
       "        return fig.key_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    canvas_div.keydown('key_press', canvas_keyboard_event);\n",
       "    canvas_div.keyup('key_release', canvas_keyboard_event);\n",
       "    this.canvas_div = canvas_div\n",
       "    this._canvas_extra_style(canvas_div)\n",
       "    this.root.append(canvas_div);\n",
       "\n",
       "    var canvas = $('<canvas/>');\n",
       "    canvas.addClass('mpl-canvas');\n",
       "    canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
       "\n",
       "    this.canvas = canvas[0];\n",
       "    this.context = canvas[0].getContext(\"2d\");\n",
       "\n",
       "    var backingStore = this.context.backingStorePixelRatio ||\n",
       "\tthis.context.webkitBackingStorePixelRatio ||\n",
       "\tthis.context.mozBackingStorePixelRatio ||\n",
       "\tthis.context.msBackingStorePixelRatio ||\n",
       "\tthis.context.oBackingStorePixelRatio ||\n",
       "\tthis.context.backingStorePixelRatio || 1;\n",
       "\n",
       "    mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband = $('<canvas/>');\n",
       "    rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
       "\n",
       "    var pass_mouse_events = true;\n",
       "\n",
       "    canvas_div.resizable({\n",
       "        start: function(event, ui) {\n",
       "            pass_mouse_events = false;\n",
       "        },\n",
       "        resize: function(event, ui) {\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "        stop: function(event, ui) {\n",
       "            pass_mouse_events = true;\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "    });\n",
       "\n",
       "    function mouse_event_fn(event) {\n",
       "        if (pass_mouse_events)\n",
       "            return fig.mouse_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    rubberband.mousedown('button_press', mouse_event_fn);\n",
       "    rubberband.mouseup('button_release', mouse_event_fn);\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband.mousemove('motion_notify', mouse_event_fn);\n",
       "\n",
       "    rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
       "    rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
       "\n",
       "    canvas_div.on(\"wheel\", function (event) {\n",
       "        event = event.originalEvent;\n",
       "        event['data'] = 'scroll'\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        mouse_event_fn(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.append(canvas);\n",
       "    canvas_div.append(rubberband);\n",
       "\n",
       "    this.rubberband = rubberband;\n",
       "    this.rubberband_canvas = rubberband[0];\n",
       "    this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
       "    this.rubberband_context.strokeStyle = \"#000000\";\n",
       "\n",
       "    this._resize_canvas = function(width, height) {\n",
       "        // Keep the size of the canvas, canvas container, and rubber band\n",
       "        // canvas in synch.\n",
       "        canvas_div.css('width', width)\n",
       "        canvas_div.css('height', height)\n",
       "\n",
       "        canvas.attr('width', width * mpl.ratio);\n",
       "        canvas.attr('height', height * mpl.ratio);\n",
       "        canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
       "\n",
       "        rubberband.attr('width', width);\n",
       "        rubberband.attr('height', height);\n",
       "    }\n",
       "\n",
       "    // Set the figure to an initial 600x600px, this will subsequently be updated\n",
       "    // upon first draw.\n",
       "    this._resize_canvas(600, 600);\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus () {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            // put a spacer in here.\n",
       "            continue;\n",
       "        }\n",
       "        var button = $('<button/>');\n",
       "        button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
       "                        'ui-button-icon-only');\n",
       "        button.attr('role', 'button');\n",
       "        button.attr('aria-disabled', 'false');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "\n",
       "        var icon_img = $('<span/>');\n",
       "        icon_img.addClass('ui-button-icon-primary ui-icon');\n",
       "        icon_img.addClass(image);\n",
       "        icon_img.addClass('ui-corner-all');\n",
       "\n",
       "        var tooltip_span = $('<span/>');\n",
       "        tooltip_span.addClass('ui-button-text');\n",
       "        tooltip_span.html(tooltip);\n",
       "\n",
       "        button.append(icon_img);\n",
       "        button.append(tooltip_span);\n",
       "\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    var fmt_picker_span = $('<span/>');\n",
       "\n",
       "    var fmt_picker = $('<select/>');\n",
       "    fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
       "    fmt_picker_span.append(fmt_picker);\n",
       "    nav_element.append(fmt_picker_span);\n",
       "    this.format_dropdown = fmt_picker[0];\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = $(\n",
       "            '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
       "        fmt_picker.append(option);\n",
       "    }\n",
       "\n",
       "    // Add hover states to the ui-buttons\n",
       "    $( \".ui-button\" ).hover(\n",
       "        function() { $(this).addClass(\"ui-state-hover\");},\n",
       "        function() { $(this).removeClass(\"ui-state-hover\");}\n",
       "    );\n",
       "\n",
       "    var status_bar = $('<span class=\"mpl-message\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_message = function(type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function() {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
       "    }\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1]);\n",
       "        fig.send_message(\"refresh\", {});\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
       "    var x0 = msg['x0'] / mpl.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
       "    var x1 = msg['x1'] / mpl.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch(cursor)\n",
       "    {\n",
       "    case 0:\n",
       "        cursor = 'pointer';\n",
       "        break;\n",
       "    case 1:\n",
       "        cursor = 'default';\n",
       "        break;\n",
       "    case 2:\n",
       "        cursor = 'crosshair';\n",
       "        break;\n",
       "    case 3:\n",
       "        cursor = 'move';\n",
       "        break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message(\"ack\", {});\n",
       "}\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = \"image/png\";\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src);\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data);\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "        else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig[\"handle_\" + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "}\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function(e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e)\n",
       "        e = window.event;\n",
       "    if (e.target)\n",
       "        targ = e.target;\n",
       "    else if (e.srcElement)\n",
       "        targ = e.srcElement;\n",
       "    if (targ.nodeType == 3) // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "\n",
       "    // jQuery normalizes the pageX and pageY\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    // offset() returns the position of the element relative to the document\n",
       "    var x = e.pageX - $(targ).offset().left;\n",
       "    var y = e.pageY - $(targ).offset().top;\n",
       "\n",
       "    return {\"x\": x, \"y\": y};\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys (original) {\n",
       "  return Object.keys(original).reduce(function (obj, key) {\n",
       "    if (typeof original[key] !== 'object')\n",
       "        obj[key] = original[key]\n",
       "    return obj;\n",
       "  }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function(event, name) {\n",
       "    var canvas_pos = mpl.findpos(event)\n",
       "\n",
       "    if (name === 'button_press')\n",
       "    {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * mpl.ratio;\n",
       "    var y = canvas_pos.y * mpl.ratio;\n",
       "\n",
       "    this.send_message(name, {x: x, y: y, button: event.button,\n",
       "                             step: event.step,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.key_event = function(event, name) {\n",
       "\n",
       "    // Prevent repeat events\n",
       "    if (name == 'key_press')\n",
       "    {\n",
       "        if (event.which === this._key)\n",
       "            return;\n",
       "        else\n",
       "            this._key = event.which;\n",
       "    }\n",
       "    if (name == 'key_release')\n",
       "        this._key = null;\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which != 17)\n",
       "        value += \"ctrl+\";\n",
       "    if (event.altKey && event.which != 18)\n",
       "        value += \"alt+\";\n",
       "    if (event.shiftKey && event.which != 16)\n",
       "        value += \"shift+\";\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, {key: value,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
       "    if (name == 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message(\"toolbar_button\", {name: name});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function() {\n",
       "        comm.close()\n",
       "    };\n",
       "    ws.send = function(m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function(msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data'])\n",
       "    });\n",
       "    return ws;\n",
       "}\n",
       "\n",
       "mpl.mpl_figure_comm = function(comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = $(\"#\" + id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm)\n",
       "\n",
       "    function ondownload(figure, format) {\n",
       "        window.open(figure.imageObj.src);\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy,\n",
       "                           ondownload,\n",
       "                           element.get(0));\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element.get(0);\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error(\"Failed to find cell for figure\", id, fig);\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    var output_index = fig.cell_info[2]\n",
       "    var cell = fig.cell_info[0];\n",
       "\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
       "    var width = fig.canvas.width/mpl.ratio\n",
       "    fig.root.unbind('remove')\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable()\n",
       "    $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
       "    fig.close_ws(fig, msg);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.close_ws = function(fig, msg){\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width/mpl.ratio\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message(\"ack\", {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () { fig.push_to_output() }, 1000);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items){\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) { continue; };\n",
       "\n",
       "        var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
       "    var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
       "    button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
       "    button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
       "    buttongrp.append(button);\n",
       "    var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
       "    titlebar.prepend(buttongrp);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(el){\n",
       "    var fig = this\n",
       "    el.on(\"remove\", function(){\n",
       "\tfig.close_ws(fig, {});\n",
       "    });\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(el){\n",
       "    // this is important to make the div 'focusable\n",
       "    el.attr('tabindex', 0)\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    }\n",
       "    else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager)\n",
       "        manager = IPython.keyboard_manager;\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which == 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.find_output_cell = function(html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i=0; i<ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code'){\n",
       "            for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] == html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "}\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel != null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1c59a8f0fd0>]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.figure()\n",
    "\n",
    "xx = np.linspace(-1.0, -0.5, npts)\n",
    "for i in range(npts):\n",
    "    yy[i] = fd[0]*dpol[0].subs([(x, xx[i])]) + fd[1]*dpol[1].subs([(x, xx[i])])\n",
    "plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace(-0.5, 0.0, npts)\n",
    "for i in range(npts):\n",
    "    yy[i] = fd[1]*dpol[2].subs([(x, xx[i])]) + fd[2]*dpol[3].subs([(x, xx[i])])\n",
    "plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace( 0.0, 0.5, npts)\n",
    "for i in range(npts):\n",
    "    yy[i] = fd[2]*dpol[4].subs([(x, xx[i])]) + fd[3]*dpol[5].subs([(x, xx[i])])\n",
    "plt.plot(xx, yy)\n",
    "\n",
    "xx = np.linspace( 0.5, 1.0, npts)\n",
    "for i in range(npts):\n",
    "    yy[i] = fd[3]*dpol[6].subs([(x, xx[i])]) + fd[4]*dpol[7].subs([(x, xx[i])])\n",
    "plt.plot(xx, yy)\n",
    "\n",
    "fc =fdx(x_data)\n",
    "plt.plot([-1, -0.5, 0, 0.5, 1], fc, 'ko')\n",
    "\n",
    "xx = np.linspace(-1.0, 1.0, npts)\n",
    "for i in range(npts):\n",
    "    zz[i]=fdx(xx[i])\n",
    "plt.plot(xx, zz)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Como resultado del esquema de interpolación local la primera derivada se hace discontinua. Aunque las discontinuidades introducen errores en la solución estos se pueden reducir usando una mayor cantidad de sub-dominios. En análisis por elementos finitos este aumento de los sub-dominios, generando elementos de un menor tamaño se denomina refinamiento de la malla."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Glosario de términos\n",
    "\n",
    "**Nodo:** Un punto en el que se conoce la función a ser aproximada mediante un polinomio de interpolación.\n",
    "\n",
    "**Sub-dominio:** Una porción del dominio computacional completo comprendido entre 2 puntos aunque probablemente con varios nodos internos.\n",
    "\n",
    "**Elemento finito:** Un sub-dominio de tamaño predefinido y sus correspondientes funciones de interpolación.\n",
    "\n",
    "**Elemento canónico:** Elemento finito de tamaño constante y con funciones de interpolación conocidas. Los elementos de tamaños arbitrarios se transforman en este para facilitar operaciones de calculo."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Actividad para la clase\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Problema 1\n",
    "Para la función $f(x) = {x^3} + 4{x^2} - 10$ en el rango $[-1.0, 1.0]$:\n",
    "\n",
    "* Encuentre valores en los puntos nodales correspondientes a 4 sub-dominios, cada uno conformado por 3 nodos. Usando estos valores implemente un esquema de interpolación local usando polinomios de interpolación de orden 2.\n",
    "\n",
    "* Grafique el polinomio de interpolación en cada sub-dominio y la función de aproximación $p(x)$ resultante.\n",
    "\n",
    "* En la misma gráfica compare  $p(x)$ y $f(x)$. Adicionalmente, grafique la primera derivada de la función obtenida de $p(x)$ y de $f(x)$. \n",
    "\n",
    "### Problema 2\n",
    "Para la función de Runge definida por:\n",
    "\n",
    "$$f(x) = \\frac{1}{{1 + 25{x^2}}}$$\n",
    "\n",
    "implemente un esquema de interpolación con polinomios de Lagrange de primer orden y usando:\n",
    "* sub-dominios de tamaño constante $\\Delta x = 0.2$\n",
    "* sub-dominios cuyo tamaño disminuye hacia los extremos del intervalo.\n",
    "\n",
    "### Problema 3\n",
    "Usando un script o Notebook independiente implemente un esquema de interpolación local usando un elemento canónico de tamaño 2.0 y úselo para aproximar la función de Runge discutida en las notas de clase."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Formato del notebook"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "La siguiente celda cambia el formato del Notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link href='http://fonts.googleapis.com/css?family=Fenix' rel='stylesheet' type='text/css'>\n",
       "<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
       "<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' type='text/css'>\n",
       "\n",
       "<style>\n",
       "\n",
       "/*\n",
       "Template for Notebooks for Modelación computacional.\n",
       "\n",
       "Based on Lorena Barba template available at:\n",
       "\n",
       "    https://github.com/barbagroup/AeroPython/blob/master/styles/custom.css\n",
       "*/\n",
       "\n",
       "/* Fonts */\n",
       "@font-face {\n",
       "font-family: \"Computer Modern\";\n",
       "src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
       "}\n",
       "\n",
       "/* Text */\n",
       "div.cell{\n",
       "width:800px;\n",
       "margin-left:16% !important;\n",
       "margin-right:auto;\n",
       "}\n",
       "h1 {\n",
       "font-family: 'Alegreya Sans', sans-serif;\n",
       "}\n",
       "h2 {\n",
       "font-family: 'Fenix', serif;\n",
       "}\n",
       "h3{\n",
       "font-family: 'Fenix', serif;\n",
       "margin-top:12px;\n",
       "margin-bottom: 3px;\n",
       "}\n",
       "h4{\n",
       "font-family: 'Fenix', serif;\n",
       "}\n",
       "h5 {\n",
       "font-family: 'Alegreya Sans', sans-serif;\n",
       "}\t\n",
       "div.text_cell_render{\n",
       "font-family: 'Alegreya Sans',Computer Modern, \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;\n",
       "line-height: 135%;\n",
       "font-size: 120%;\n",
       "width:600px;\n",
       "margin-left:auto;\n",
       "margin-right:auto;\n",
       "}\n",
       ".CodeMirror{\n",
       "font-family: \"Source Code Pro\";\n",
       "font-size: 90%;\n",
       "}\n",
       "/* .prompt{\n",
       "display: None;\n",
       "}*/\n",
       ".text_cell_render h1 {\n",
       "font-weight: 200;\n",
       "font-size: 50pt;\n",
       "line-height: 100%;\n",
       "color:#CD2305;\n",
       "margin-bottom: 0.5em;\n",
       "margin-top: 0.5em;\n",
       "display: block;\n",
       "}\t\n",
       ".text_cell_render h5 {\n",
       "font-weight: 300;\n",
       "font-size: 16pt;\n",
       "color: #CD2305;\n",
       "font-style: italic;\n",
       "margin-bottom: .5em;\n",
       "margin-top: 0.5em;\n",
       "display: block;\n",
       "}\n",
       ".warning{\n",
       "color: rgb( 240, 20, 20 )\n",
       "}\n",
       "</style>\n",
       "\n",
       "<script>\n",
       "/* Equations */\n",
       "\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",
       "styles: {'.MathJax_Display': {\"margin\": 4}}\n",
       "}\n",
       "});\n",
       "</script>\n",
       "\n",
       "\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.core.display import HTML\n",
    "def css_styling():\n",
    "    styles = open('./nb_style.css', 'r').read()\n",
    "    return HTML(styles)\n",
    "css_styling()"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Raw Cell Format",
  "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.7.3"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}