{ "cells": [ { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "*********************\n", "Implementation Issues\n", "*********************" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Exercise 8.1\n", "============\n", "\n", "(a)\n", "---\n", "\n", ".. math::\n", "\n", " & \\begin{bmatrix}\n", " 2 & 5 & & 6 & \\\\\n", " 1 & 1 & 3 & 9 & 6\\\\\n", " & & 2 & 6 & 4\\\\\n", " & & & 4 & 1\\\\\n", " & & -1 & -3 & -1\n", " \\end{bmatrix}\n", " \\begin{matrix}\n", " \\\\\n", " R_2 - 0.5 R_1\\\\\n", " \\\\\n", " \\\\\n", " \\\\\n", " \\end{matrix}\\\\\n", " \\Rightarrow &\n", " \\begin{bmatrix}\n", " 2 & 5 & & 6 & \\\\\n", " 1 & -1.5 & 3 & 6 & 6\\\\\n", " & & 2 & 6 & 4\\\\\n", " & & & 4 & 1\\\\\n", " & & -1 & -3 & -1\n", " \\end{bmatrix}\n", " \\begin{matrix}\n", " \\\\\n", " \\\\\n", " \\\\\n", " \\\\\n", " R_5 - (-0.5) R_3\\\\\n", " \\end{matrix}\\\\\n", " \\Rightarrow &\n", " \\begin{bmatrix}\n", " 2 & 5 & & 6 & \\\\\n", " 1 & -1.5 & 3 & 6 & 6\\\\\n", " & & 2 & 6 & 4\\\\\n", " & & & 4 & 1\\\\\n", " & & -1 & 0 & 1\n", " \\end{bmatrix}\n", "\n", ".. math::\n", "\n", " B &= \\begin{bmatrix}\n", " 2 & & & & \\\\\n", " 1 & -1.5 & & & \\\\\n", " & & 2 & & \\\\\n", " & & & 4 & \\\\\n", " & & -1 & 0 & 1\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " 2 & & & & \\\\\n", " & -1.5 & & & \\\\\n", " & & 2 & & \\\\\n", " & & & 4 & \\\\\n", " & & & & 1\n", " \\end{bmatrix}^{-1}\n", " \\begin{bmatrix}\n", " 2 & 5 & & 6 & \\\\\n", " & -1.5 & 3 & 6 & 6\\\\\n", " & & 2 & 6 & 4\\\\\n", " & & & 4 & 1\\\\\n", " & & & & 1\n", " \\end{bmatrix}\\\\\n", " &= \\begin{bmatrix}\n", " 1 & & & & \\\\\n", " 0.5 & 1 & & & \\\\\n", " & & 1 & & \\\\\n", " & & & 1 & \\\\\n", " & & -0.5 & & 1\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " 2 & 5 & & 6 & \\\\\n", " & -1.5 & 3 & 6 & 6\\\\\n", " & & 2 & 6 & 4\\\\\n", " & & & 4 & 1\\\\\n", " & & & & 1\n", " \\end{bmatrix}\\\\\n", " &= LU\n", "\n", "(b)\n", "---\n", "\n", "Forward substitution gives\n", "\n", ".. math::\n", "\n", " B \\Delta x_\\mathcal{B} &= a_j\\\\\n", " LU \\Delta x_\\mathcal{B} &= a_j\\\\\n", " Ly &= a_j\\\\\n", " y &= L^{-1} a_j\\\\\n", " &= L^{-1} \\begin{bmatrix} 0\\\\ 2\\\\ 1\\\\ 3\\\\ 0 \\end{bmatrix}\n", " &= \\begin{bmatrix} 0\\\\ 2\\\\ 1\\\\ 3\\\\ 0.5 \\end{bmatrix}.\n", "\n", "Backward substitution yields\n", "\n", ".. math::\n", "\n", " U \\Delta x_\\mathcal{B} &= y\\\\\n", " \\Delta x_\\mathcal{B} &= U^{-1} y\\\\\n", " &= \\begin{bmatrix} 2.083\\\\ -1.583\\\\ -2.375\\\\ 0.625\\\\ 0.5 \\end{bmatrix}.\n", "\n", "(c)\n", "---\n", "\n", "Suppose that :math:`\\tilde{B}` is :math:`B` (8.9) with the second column\n", "replaced by\n", "\n", ".. math::\n", "\n", " a_j = \\begin{bmatrix} 0 & 2 & 1 & 3 & 0 \\end{bmatrix}^\\top.\n", "\n", "Suppose that\n", ":math:`\\tilde{a}_j = \\begin{bmatrix} 1 & 0 & -1 & 0 & 0 \\end{bmatrix}^\\top` and\n", "the goal is to solve\n", "\n", ".. math::\n", "\n", " \\tilde{B} \\Delta \\tilde{x}_\\mathcal{B} =\n", " BE \\Delta \\tilde{x}_\\mathcal{B} =\n", " \\tilde{a}_j.\n", "\n", "Applying the forward and backward substitutions gives\n", "\n", ".. math::\n", "\n", " B u &= \\tilde{a}_j\\\\\n", " LU u &= \\tilde{a}_j\\\\\n", " u &= \\begin{bmatrix} 2.417\\\\ -0.9167\\\\ 0.125\\\\ 0.125\\\\ -0.5 \\end{bmatrix}.\n", "\n", "The desired quantity is\n", "\n", ".. math::\n", "\n", " E \\Delta \\tilde{x}_\\mathcal{B} &= u\\\\\n", " \\Delta \\tilde{x}_\\mathcal{B} &= E^{-1} u\\\\\n", " &= u - \\frac{u_2}{\\Delta x_2} \\left( \\Delta x_\\mathcal{B} - e_2 \\right)\\\\\n", " &= \\begin{bmatrix} 2.417\\\\ -0.9167\\\\ 0.125\\\\ 0.125\\\\ -0.5 \\end{bmatrix} -\n", " \\frac{-0.9167}{-1.583}\n", " \\left(\n", " \\begin{bmatrix} 2.083\\\\ -1.583\\\\ -2.375\\\\ 0.625\\\\ 0.5 \\end{bmatrix} -\n", " \\begin{bmatrix} 0\\\\ 1\\\\ 0\\\\ 0\\\\ 0 \\end{bmatrix}\n", " \\right)\\\\\n", " &= \\begin{bmatrix} 1.210\\\\ 0.5791\\\\ 1.500\\\\ -0.2369\\\\ -0.7895 \\end{bmatrix}.\n", "\n", "Since :math:`\\tilde{B} \\Delta \\tilde{x}_\\mathcal{B}` gives :math:`\\tilde{a}_j`,\n", "the solution is correct.\n", "\n", "(d)\n", "---\n", "\n", "Recall from (8.5) that\n", "\n", ".. math::\n", "\n", " \\tilde{B} = B + (a_j - a_i) e_i^\\top\n", "\n", "where :math:`a_j` is associated with the entering variable :math:`x_j` and\n", ":math:`a_i` is associated with the leaving variable :math:`x_i`.\n", "\n", "Suppose that :math:`\\tilde{B}` is :math:`B` (8.9) with the second column\n", "replaced by\n", "\n", ".. math::\n", "\n", " a_j = \\begin{matrix} 1\\\\ 2\\\\ 3\\\\ 4\\\\ 5 \\end{matrix}\n", " \\begin{bmatrix} 0\\\\ 2\\\\ 1\\\\ 3\\\\ 0 \\end{bmatrix}\n", " \\Rightarrow\n", " \\tilde{B} =\n", " \\begin{bmatrix}\n", " 2 & & & 6 & \\\\\n", " 1 & 2 & 3 & 9 & 6\\\\\n", " & 1 & 2 & 6 & 4\\\\\n", " & 3 & & 4 & 1\\\\\n", " & & -1 & -3 & -1\n", " \\end{bmatrix}.\n", "\n", "The goal is to solve\n", "\n", ".. math::\n", "\n", " \\tilde{B} \\Delta \\tilde{x}_\\mathcal{B} =\n", " L \\tilde{E}^{-1} \\tilde{U} \\Delta \\tilde{x}_\\mathcal{B} =\n", " \\tilde{a}_j\n", "\n", "where\n", "\n", ".. math::\n", "\n", " \\tilde{a}_j =\n", " \\begin{matrix} 1\\\\ 2\\\\ 3\\\\ 4\\\\ 5 \\end{matrix}\n", " \\begin{bmatrix} 1\\\\ 0\\\\ -1\\\\ 0\\\\ 0 \\end{bmatrix}.\n", "\n", "Since the decomposition of :math:`B = LU` did not use any permutations, the\n", "LU-factorization is updated as\n", "\n", ".. math::\n", "\n", " L^{-1} \\tilde{B} =\n", " \\begin{bmatrix}\n", " 2 & & & 6 & \\\\\n", " & 2 & 3 & 6 & 6\\\\\n", " & 1 & 2 & 6 & 4\\\\\n", " & 3 & & 4 & 1\\\\\n", " & 0.5 & & & 1\n", " \\end{bmatrix}\n", "\n", "without permuting the columns and rows. To remove the spike and convert the\n", "matrix back into upper-triangular form, define a permutation matrix\n", "\n", ".. math::\n", "\n", " P =\n", " \\begin{bmatrix}\n", " 1 & & & & \\\\\n", " & & 1 & & \\\\\n", " & & & 1 & \\\\\n", " & & & & 1\\\\\n", " & 1 & & & \n", " \\end{bmatrix}\n", "\n", "and\n", "\n", ".. math::\n", "\n", " \\tilde{E} =\n", " \\begin{bmatrix}\n", " 1 & & & & \\\\\n", " & 1 & & & \\\\\n", " & & 1 & & \\\\\n", " & & & 1 & \\\\\n", " & & & -3 & 1\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " 1 & & & & \\\\\n", " & 1 & & & \\\\\n", " & & 1 & & \\\\\n", " & & & 1 & \\\\\n", " & & 3 & & 2\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " 1 & & & & \\\\\n", " & 1 & & & \\\\\n", " & & 1 & & \\\\\n", " & & & 1 & \\\\\n", " & -3 & & & 2\n", " \\end{bmatrix} =\n", " \\begin{bmatrix}\n", " 1 & & & & \\\\\n", " & 1 & & & \\\\\n", " & & 1 & & \\\\\n", " & & & 1 & \\\\\n", " & -6 & 3 & -3 & 4\n", " \\end{bmatrix}\n", "\n", "so that\n", "\n", ".. math::\n", "\n", " \\tilde{E} P L^{-1} \\tilde{B} P^\\top =\n", " \\begin{bmatrix}\n", " 2 & & 6 & & \\\\\n", " & 2 & 6 & 4 & 1\\\\\n", " & & 4 & 1 & 3\\\\\n", " & & & 1 & 0.5\\\\\n", " & & & & 9.5\n", " \\end{bmatrix} =\n", " \\tilde{U}.\n", "\n", "Forward substitution gives\n", "\n", ".. math::\n", "\n", " L \\left( P^\\top y \\right) = \\tilde{a}_j\n", " \\quad \\Rightarrow \\quad\n", " y = \\begin{bmatrix} 1\\\\ -1\\\\ 0\\\\ -0.5\\\\ -0.5 \\end{bmatrix}.\n", "\n", "Given :math:`y`, the next step is to solve\n", "\n", ".. math::\n", "\n", " \\tilde{E}^{-1} z = y\n", " \\quad \\Rightarrow \\quad\n", " z = \\tilde{E} y = \\begin{bmatrix} 1\\\\ -1\\\\ 0\\\\ -0.5\\\\ 5.5 \\end{bmatrix}.\n", "\n", "Finally, backward substitution yields\n", "\n", ".. math::\n", "\n", " \\tilde{U} \\left( P \\Delta \\tilde{x}_\\mathcal{B} \\right) = z\n", " \\quad \\Rightarrow \\quad\n", " \\Delta \\tilde{x}_\\mathcal{B} =\n", " \\begin{bmatrix} 1.21\\\\ 0.58\\\\ 1.50\\\\ -0.24\\\\ -0.79 \\end{bmatrix}." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Exercise 8.2\n", "============\n", "\n", "Let :math:`P_{ij}` denote a permutation matrix that swaps rows :math:`i` and\n", ":math:`j` when post-multiplied by a matrix; :math:`P_{ij}` swaps columns\n", ":math:`i` and :math:`j` when pre-multiplied by a matrix. By inspection,\n", ":math:`P_{ij}^2 = P_{ij} P_{ij} = I`.\n", "\n", ".. math::\n", "\n", " & P_{14}\n", " \\begin{bmatrix}\n", " 2 & 5 & & 6 & \\\\\n", " 1 & 1 & 3 & 9 & 6\\\\\n", " & & 2 & 6 & 4\\\\\n", " & & & 4 & 1\\\\\n", " & & -1 & -3 & -1\n", " \\end{bmatrix} P_{15} &=\n", " \\begin{bmatrix}\n", " 1 & & & 4 & \\\\\n", " 6 & 1 & 3 & 9 & 1\\\\\n", " 4 & & 2 & 6 & \\\\\n", " & 5 & & 6 & 2\\\\\n", " -1 & & -1 & -3 &\n", " \\end{bmatrix}\n", " \\begin{matrix}\n", " \\\\\n", " R_2 - 6 R_1\\\\\n", " R_3 - 4 R_1\\\\\n", " \\\\\n", " R_5 - (-R_1)\n", " \\end{matrix}\\\\\n", " \\Rightarrow & P_{23}\n", " \\begin{bmatrix}\n", " 1 & & & 4 & \\\\\n", " 6 & 1 & 3 & -15 & 1\\\\\n", " 4 & & 2 & -10 & \\\\\n", " & 5 & & 6 & 2\\\\\n", " -1 & & -1 & 1 &\n", " \\end{bmatrix} P_{23} &=\n", " \\begin{bmatrix}\n", " 1 & & & 4 & \\\\\n", " 4 & 2 & & -10 & \\\\\n", " 6 & 3 & 1 & -15 & 1\\\\\n", " & & 5 & 6 & 2\\\\\n", " -1 & -1 & & 1 &\n", " \\end{bmatrix}\n", " \\begin{matrix}\n", " \\\\\n", " \\\\\n", " R_3 - \\frac{3}{2} R_2\\\\\n", " \\\\\n", " R_5 - \\left( -\\frac{1}{2} R_2 \\right)\n", " \\end{matrix}\\\\\n", " \\Rightarrow & P_{35}\n", " \\begin{bmatrix}\n", " 1 & & & 4 & \\\\\n", " 4 & 2 & & -10 & \\\\\n", " 6 & 3 & 1 & & 1\\\\\n", " & & 5 & 6 & 2\\\\\n", " -1 & -1 & & -4 &\n", " \\end{bmatrix} P_{34} &=\n", " \\begin{bmatrix}\n", " 1 & & 4 & & \\\\\n", " 4 & 2 & -10 & & \\\\\n", " -1 & -1 & -4 & & \\\\\n", " & & 6 & 5 & 2\\\\\n", " 6 & 3 & & 1 & 1\n", " \\end{bmatrix}\n", " \\begin{matrix}\n", " \\\\\n", " \\\\\n", " \\\\\n", " R_4 - (-\\frac{6}{4} R_3)\\\\\n", " \\\\\n", " \\end{matrix}\\\\\n", " \\Rightarrow & &=\n", " \\begin{bmatrix}\n", " 1 & & 4 & & \\\\\n", " 4 & 2 & -10 & & \\\\\n", " -1 & -1 & -4 & & \\\\\n", " & & 6 & 5 & 2\\\\\n", " 6 & 3 & & 1 & 1\n", " \\end{bmatrix}\n", " \\begin{matrix}\n", " \\\\\n", " \\\\\n", " \\\\\n", " \\\\\n", " R_5 - \\frac{1}{5} R_4\n", " \\end{matrix}\\\\\n", " \\Rightarrow &\n", " \\begin{bmatrix}\n", " 1 & & 4 & & \\\\\n", " 4 & 2 & -10 & & \\\\\n", " -1 & -1 & -4 & & \\\\\n", " & & 6 & 5 & 2\\\\\n", " 6 & 3 & & 1 & 0.6\n", " \\end{bmatrix}\n", "\n", ".. math::\n", "\n", " \\begin{aligned}\n", " L = \\begin{bmatrix}\n", " 1 & & & & \\\\\n", " 4 & 2 & & & \\\\\n", " -1 & -1 & -4 & & \\\\\n", " & & 6 & 5 & \\\\\n", " 6 & 3 & & 1 & 0.6\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " 1 & & & & \\\\\n", " & 2 & & & \\\\\n", " & & -4 & & \\\\\n", " & & & 5 & \\\\\n", " & & & & 0.6\n", " \\end{bmatrix}^{-1}\n", " \\end{aligned}\n", " \\quad \\text{and} \\quad\n", " \\begin{aligned}\n", " U = \\begin{bmatrix}\n", " 1 & & 4 & & \\\\\n", " & 2 & -10 & & \\\\\n", " & & -4 & & \\\\\n", " & & & 5 & 2\\\\\n", " & & & & 0.6\n", " \\end{bmatrix}\n", " \\end{aligned}\n", "\n", "Note that the row indices of :math:`L` and column indices of :math:`U` have been\n", "permuted by :math:`P_R = P_{35} P_{23} P_{14}` and\n", ":math:`P_C = P_{15} P_{23} P_{34}` respectively. These need to be accounted for\n", "when applying the forward and backward substitutions to solve (8.9). The\n", "original linear system can be reconstructed as\n", ":math:`B = P_R^{-1} LU P_C^{-1} = P_R^\\top LU P_C^\\top`.\n", "\n", "The forward substitution now gives\n", "\n", ".. math::\n", "\n", " B \\Delta x_\\mathcal{B} &= a_j\\\\\n", " L y &= P_R a_j\\\\\n", " y &= L^{-1} P_R a_j.\n", "\n", "The backward substitution now yields\n", "\n", ".. math::\n", "\n", " U \\Delta x'_\\mathcal{B} &= y\\\\\n", " \\Delta x'_\\mathcal{B} &= U^{-1} y\\\\\n", " P_{34} P_{23} P_{15} \\Delta x_\\mathcal{B} &= U^{-1} y\\\\\n", " \\Delta x_\\mathcal{B} &= P_C U^{-1} y." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Exercise 8.3\n", "============\n", "\n", "Given a permutation\n", ":math:`\\pi \\colon \\{1, \\ldots, m\\} \\mapsto \\{1, \\ldots, m\\}`, a permutation\n", "matrix can be defined as\n", "\n", ".. math::\n", "\n", " P_\\pi =\n", " \\begin{bmatrix}\n", " \\mathbf{e}_{\\pi(1)}^\\top\\\\\n", " \\vdots\\\\\n", " \\mathbf{e}_{\\pi(m)}^\\top\n", " \\end{bmatrix}\n", "\n", "where :math:`\\mathbf{e}_{\\pi(j)} = \\mathbf{e}_{\\pi_j}` denotes a standard basis\n", "vector.\n", "\n", "Let :math:`\\pi' \\colon \\{1, \\ldots, m\\} \\mapsto \\{1, \\ldots, m\\}` denote a\n", "mapping for the columns of :math:`P_\\pi` such that\n", "\n", ".. math::\n", "\n", " \\mathbf{e}_{\\pi'(j)} =\n", " \\mathbf{e}_{\\pi'_j} =\n", " \\begin{bmatrix}\n", " {\\mathbf{e}_{\\pi_1}}_j^\\top\\\\\n", " \\vdots\\\\\n", " {\\mathbf{e}_{\\pi_m}}_j^\\top\n", " \\end{bmatrix}\n", "\n", "and :math:`\\pi'_j` is the row index of column :math:`j` that contains the one.\n", "\n", "(a)\n", "---\n", "\n", "Let :math:`B` be an :math:`m \\times m` matrix. Pre-multiplying :math:`B` by\n", ":math:`P_\\pi`\n", "\n", ".. math::\n", "\n", " P_\\pi B =\n", " \\begin{bmatrix}\n", " \\mathbf{e}_{\\pi_1}^\\top B_{\\colon 1} & \\cdots &\n", " \\mathbf{e}_{\\pi_1}^\\top B_{\\colon m}\\\\\n", " \\vdots & \\ddots & \\vdots\\\\\n", " \\mathbf{e}_{\\pi_m}^\\top B_{\\colon 1} & \\cdots &\n", " \\mathbf{e}_{\\pi_m}^\\top B_{\\colon m}\n", " \\end{bmatrix} =\n", " \\begin{bmatrix}\n", " B_{\\pi_1 1} & \\cdots & B_{\\pi_1 m}\\\\\n", " \\vdots & \\ddots & \\vdots\\\\\n", " B_{\\pi_m 1} & \\cdots & B_{\\pi_m m}\n", " \\end{bmatrix}\n", "\n", "and post-multiplying :math:`B` by :math:`P_\\pi`\n", "\n", ".. math::\n", "\n", " B P_\\pi =\n", " \\begin{bmatrix}\n", " B_{1 \\colon} \\mathbf{e}_{\\pi'_1} & \\cdots &\n", " B_{1 \\colon} \\mathbf{e}_{\\pi'_m}^\\top\\\\\n", " \\vdots & \\ddots & \\vdots\\\\\n", " B_{m \\colon} \\mathbf{e}_{\\pi'_1} & \\cdots &\n", " B_{m \\colon} \\mathbf{e}_{\\pi'_m}^\\top\n", " \\end{bmatrix} =\n", " \\begin{bmatrix}\n", " B_{1 \\pi'_1} & \\cdots & B_{1 \\pi'_m}\\\\\n", " \\vdots & \\ddots & \\vdots\\\\\n", " B_{m \\pi'_1} & \\cdots & B_{m \\pi'_m}\n", " \\end{bmatrix}\n", "\n", "will yield the same permutation when :math:`\\pi` is an identity permutation or\n", "the elements of the swapped rows and columns have corresponding values.\n", "Otherwise, post-multiplying by :math:`P_\\pi^\\top` is the only way to permute\n", "the column indices in the same order as row indices.\n", "\n", "(b)\n", "---\n", "\n", "As derived in (a), every permutation of the rows of a matrix :math:`B` can be\n", "represented as a mapping :math:`\\pi`.\n", "\n", "(c)\n", "---\n", "\n", "Recall that :math:`\\mathbf{e}_i^\\top \\mathbf{e}_j = 1` if and only if\n", ":math:`i = j`; otherwise, the scalar product is zero.\n", "\n", ".. math::\n", "\n", " P_\\pi P_\\pi^\\top =\n", " \\begin{bmatrix}\n", " \\mathbf{e}_{\\pi_1}^\\top\\\\\n", " \\vdots\\\\\n", " \\mathbf{e}_{\\pi_m}^\\top\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " \\mathbf{e}_{\\pi_1} & \\cdots & \\mathbf{e}_{\\pi_m}\n", " \\end{bmatrix} =\n", " \\begin{bmatrix}\n", " \\mathbf{e}_{\\pi_1}^\\top \\mathbf{e}_{\\pi_1} & \\cdots &\n", " \\mathbf{e}_{\\pi_1}^\\top \\mathbf{e}_{\\pi_m}\\\\\n", " \\vdots & \\ddots & \\vdots\\\\\n", " \\mathbf{e}_{\\pi_m}^\\top \\mathbf{e}_{\\pi_1} & \\cdots &\n", " \\mathbf{e}_{\\pi_m}^\\top \\mathbf{e}_{\\pi_m}\\\\\n", " \\end{bmatrix} =\n", " \\mathbf{I}\n", " \\quad \\Rightarrow \\quad\n", " P_\\pi^{-1} = P_\\pi^\\top." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Exercise 8.4\n", "============\n", "\n", "Given :math:`B = LU`, solving :math:`B^\\top x = U^\\top L^\\top x = b` can be done\n", "in two steps.\n", "\n", "#. Use forward substitution on :math:`U^\\top y = b`.\n", "#. Follow up with backward substitution on :math:`L^\\top x = y`." ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "Python [default]", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 1 }