{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " 線形代数(Linear Algebra IV)写像 \n", "
\n", "
\n", " cc by Shigeto R. Nishitani, 2018-03-19 \n", "
\n", "\n", "* file: /Users/bob/python/doing_math_with_python/linear_algebra/LA-V_map.ipynb" ] }, { "cell_type": "markdown", "metadata": { "toc": "true" }, "source": [ "# Table of Contents\n", "

1  写像
1.1  線形写像
1.2  像と核
1.3  不変部分空間
2  
3  python code
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 写像\n", "\n", "## 線形写像\n", "* $n$次元数ベクトル空間$\\boldsymbol{R}^n$から$m$次元数ベクトル空間$\\boldsymbol{R}^m$への写像$f$が\n", "\n", " 1. $\\boldsymbol{R}^n$の任意のベクトル$ \\boldsymbol{a}, \\boldsymbol{b} $に対し,$f( \\boldsymbol{a} + \\boldsymbol{b} ) = f( \\boldsymbol{a} ) + f( \\boldsymbol{b} )$\n", " 1. $\\boldsymbol{R}^n$の任意のベクトル$ \\boldsymbol{a}$と任意の実数$\\lambda$に対し,$f(\\lambda \\boldsymbol{a} )=\\lambda f( \\boldsymbol{a} )$\n", "\n", "が成り立つとき,$f$を$\\boldsymbol{R}^n$から$\\boldsymbol{R}^m$への**線形写像**という.\n", "\n", "* 零ベクトルは零ベクトルへ写像される($f(\\boldsymbol{0})=\\boldsymbol{0}$)\n", "* $f(-\\boldsymbol{a})=-\\boldsymbol{a}$\n", "* 零写像や恒等写像も線形写像\n", "\n", "* **線形写像の表現行列**\n", "$\\boldsymbol{e}_1, \\boldsymbol{e}_2, \\ldots, \\boldsymbol{e}_n$を$R^n$の標準的な基底とする.\n", "$$\n", "f(\\boldsymbol{e}_j) = \\boldsymbol{a}_j = (\\boldsymbol{a}_{1j}, \\boldsymbol{a}_{2j},\\ldots,\\boldsymbol{a}_{mj})\\, (j=1,2,\\ldots,n)\n", "$$\n", "のときこれらを列ベクトルみなして,$m \\times n$行列\n", "$$\n", "A = [f(\\boldsymbol{e}_1)\\, f(\\boldsymbol{e}_2)\\, \\cdots\\, f(\\boldsymbol{e}_n)]=\n", "[a_1\\, a_2\\, \\cdots \\, a_n]=\n", "\\left(\n", "\\begin{array}{cccc}\n", "a_{11} & a_{12} & \\cdots & a_{1n} \\\\\n", "a_{21} & a_{22} & \\cdots & a_{2n} \\\\\n", "\\vdots & \\vdots & \\ddots & \\vdots \\\\\n", "a_{m1} & a_{m2} & \\cdots & a_{mn} \\\\\n", "\\end{array}\n", "\\right)\n", "$$\n", "を$f$の**(標準的な基底に関する)表現行列**という.\n", "\n", "* $\\boldsymbol{y}=f(\\boldsymbol{x})$の時,\n", "$$\n", "\\left(\n", "\\begin{array}{c}\n", "y_1 \\\\\n", "y_2 \\\\\n", "\\vdots \\\\\n", "y_m\n", "\\end{array}\n", "\\right)\n", "= A\n", "\\left(\n", "\\begin{array}{c}\n", "x_1 \\\\\n", "x_2 \\\\\n", "\\vdots \\\\\n", "x_n\n", "\\end{array}\n", "\\right)\n", "$$\n", "\n", "* $\\boldsymbol{R}^n$から$\\boldsymbol{R}^m$への写像\n", "$$\n", "(x_1,x_2,\\ldots,x_n) \\longmapsto (y_1,y_2,\\ldots,y_m)\n", "$$\n", "\n", "* $\\boldsymbol{x}\\in \\boldsymbol{R}^n$を列ベクトルとみなせば,\n", "$$\n", "f( \\boldsymbol{x} ) = A \\boldsymbol{x} \n", "$$\n", "が成り立つ.\n", "\n", "* 線形写像の和・実数倍・合成\n", "$$\n", "(f+g)(\\boldsymbol{x}) = f(\\boldsymbol{x}) + g(\\boldsymbol{x}) \\\\\n", "(\\lambda f) \\boldsymbol{x} = \\lambda f(\\boldsymbol{x}) \\\\\n", "(g \\circ f)(\\boldsymbol{x}) = g(f(\\boldsymbol{x}))\n", "$$\n", "$g \\circ f$を合成写像または積という." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 像と核\n", "$f$を$\\boldsymbol{R}^n$から$\\boldsymbol{R}^m$への線形写像とする.\n", "* **像(Im)**\n", "${\\rm Im\\,}f = \\{f( \\boldsymbol{x} ); \\boldsymbol{x} \\in \\boldsymbol{R}^n\\}$は$\\boldsymbol{R}^m$の部分空間でこれを**像(空間)**という.\n", "$f$の表現行列を$A=[\\boldsymbol{a}_1\\, \\boldsymbol{a}_2\\, \\cdots\\, \\boldsymbol{a}_n]$とする時,\n", " * ${\\rm Im\\,}f =L\\{\\boldsymbol{a}_1,\\boldsymbol{a}_2,\\ldots,\\boldsymbol{a}_n\\}$($\\boldsymbol{a}_1,\\boldsymbol{a}_2,\\ldots,\\boldsymbol{a}_n$で生成される部分空間)\n", " * ${\\rm dim\\,}({\\rm Im\\,}f) = {\\rm rank\\,} A = {\\rm rank\\,}[[\\boldsymbol{a}_1\\,\\boldsymbol{a}_2\\,\\cdots\\,\\boldsymbol{a}_n]$\n", " * $\\boldsymbol{y}\\in {\\rm Im}f \\iff\n", "{\\rm rank\\,}[\\boldsymbol{a}_1\\,\\boldsymbol{a}_2\\,\\cdots\\,\\boldsymbol{a}_n]=\n", "{\\rm rank\\,}[\\boldsymbol{a}_1\\,\\boldsymbol{a}_2\\,\\cdots\\,\\boldsymbol{a}_n \\boldsymbol{y}]\n", "$\n", "\n", "* **全射(onto mapping)**\n", "${\\rm Im\\,}f = \\boldsymbol{R}^m$が全射であるとは,\n", " * $すべての\\boldsymbol{y}\\in \\boldsymbol{R}^m \\Longrightarrow \n", "f( \\boldsymbol{x} ) = \\boldsymbol{y} なる \\boldsymbol{x} \\in R^n が存在する$\n", " * $fが全射 \\iff {\\rm rank\\,}A = m$\n", "* **核(Ker)**\n", "${\\rm Ker\\,}f = \\{\\boldsymbol{x}\\in \\boldsymbol{R}^n; f( \\boldsymbol{x} )= \\boldsymbol{0} \\}$は$\\boldsymbol{R}^n$の部分空間であってこれを**核(空間)**という.\n", " * ${\\rm Ker\\,}f=\\{\\boldsymbol{x};A \\boldsymbol{x} = \\boldsymbol{0} \\}$:同次連立一次方程式$A \\boldsymbol{x} = \\boldsymbol{0}$の解空間\n", " * ${\\rm dim\\,}({\\rm Ker\\,} f)=n -{\\rm rank\\,} A$\n", "* **単射(one to one mapping)**\n", "${\\rm Ker\\,}f=\\{\\boldsymbol{0}\\}$のとき$f$を**単射**であるという.このとき,\n", " * $f(\\boldsymbol{x}_1)=f(\\boldsymbol{x}_2) \\Longrightarrow\n", "\\boldsymbol{x}_1 = \\boldsymbol{x}_2$\n", " * $fが単射 \\iff {\\rm rank\\,} A = n$\n", "* **次元定理**\n", "$ {\\rm dim\\,}({\\rm Im\\,}f)+{\\rm dim\\,}({\\rm Ker\\,}f) = n$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 不変部分空間\n", "\n", "$f$を$\\boldsymbol{R}^n$上の線形変換とする.$\\boldsymbol{R}^n$の部分空間$V$が\n", "$$\n", "f(V) \\subset V\n", "$$\n", "をみたすとき,$V$を$f$に関する**不変部分空間**という.\n", "\n", "* 例\n", " * 核${\\rm Ker\\,}f$: $\\boldsymbol{x} \\in {\\rm Ker\\,}f \\Rightarrow f(\\boldsymbol{x})=\\boldsymbol{0} \\in {\\rm Ker\\,} fよってf({\\rm Ker\\,} f)\\subset {\\rm Ker\\,}f$\n", " * 像${\\rm Im\\,}f$: $\\boldsymbol{x} \\in {\\rm Im\\,}f \\Rightarrow f(\\boldsymbol{x}) \\in {\\rm Im\\,} fよってf({\\rm Im\\,} f)\\subset {\\rm Im\\,}f$\n", " * 同次連立一次方程式の解空間: $\\{\\boldsymbol{x}\\in \\boldsymbol{R}^m; A\\boldsymbol{x}=\\boldsymbol{0}\\}(= {\\rm Ker\\,} f)$\n", " * 固有値$\\lambda$に対する固有空間: $\\{\\boldsymbol{x}\\in\\boldsymbol{R}^n;(A-\\lambda E)\\boldsymbol{x}=\\boldsymbol{0}\\}$\n", " * 固有値$\\lambda$に対する一般固有空間($k$は指標): $\\{\\boldsymbol{x}\\in\\boldsymbol{R}^n;(A-\\lambda E)^k\\boldsymbol{x}=\\boldsymbol{0}\\}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 紙\n", "\n", "![LA-V](./figs/LinearAlgebra-V.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# python code" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "array([ 4., 0.])\n", "array([[ 0.447, -0.447],\n", " [ 0.894, 0.894]])\n", "array([ 0.447, 0.894])\n", "array([-0.447, 0.894])\n" ] } ], "source": [ "import numpy as np\n", "from pprint import pprint\n", "import scipy.linalg as linalg\n", "\n", "np.set_printoptions(precision=3, suppress=True)\n", "\n", "a = np.array([[2,1], [4,2]])\n", "# a = np.array([[2,1], [1,2]])\n", "\n", "l,P = np.linalg.eig(a)\n", "pprint(l)\n", "pprint(P)\n", "\n", "v0 = P[:,0]\n", "v1 = P[:,1]\n", "pprint(v0)\n", "pprint(v1)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD8CAYAAACW/ATfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VPW9//HXZyYLBBAk7Psita1WZDEa0WtRaKlaly6W\nirhcylJbi61eflp6a9RybzesVvQKVqxKauttoQharFajVVwui4oKFDEJsgghQQKEBJL5/v44kzAJ\nCYTkzJZ5Px+PeZDMnJzzyYn5+M53vud7zDmHiIi0bYF4FyAiItGnZi8ikgLU7EVEUoCavYhIClCz\nFxFJAWr2IiIpQM1eRCQFqNmLiKQANXsRkRSQFo+DduvWzQ0aNCgehxYRSVqrV6/e7Zzr3pKvjUuz\nHzRoEKtWrYrHoUVEkpaZFbf0azWMIyKSAtTsRURSgJq9iEgKULMXEUkBavYiIinAl2ZvZl3M7M9m\ntsHM1ptZrh/7FRERf/g19fI+YIVz7htmlgFk+bRfERHxQaubvZl1Bv4NuB7AOXcIONTa/YqIiH/8\nGMYZDJQAj5rZWjP7nZl1aLiRmU0zs1VmtqqkpMSHw4r4Ly8vL94liESFtfaG42Y2GngDGOOce9PM\n7gPKnXP/2dTXjB492ukKWklEZkZrfydEosXMVjvnRrfka/1I9luBrc65N8Of/xkY6cN+RUTEJ61u\n9s65T4CPzezU8FMXAR+0dr8iIuIfv2bj3ATkh2fifATc4NN+RUTEB740e+fc20CLxpFERCT6dAWt\niEgKULMXEUkBavYiIilAzV6iZnPZZua9NS/eZbRZ5VXl/Oq1X7Gval+8S5EkoGYvUbH/0H5GzB/B\nTX+7ibc/eTve5bRJ896ax6wXZjFp8aR4lyJJQM1eoqJjRkemjJgCwF0v3xXnatqe8qpy5r4+F4Cb\nz7k5ztVIMlCzl6iZNWYW7dLasWTDEqV7n817ax5lB8s4f8D5jB00Nt7lSBJQs5eo6d2pNzNGzQCU\n7v0UmerzvpiHmcW5IkkGavYSVUr3/lOql5ZQs5eoUrr3l1K9tJSavUSd0r1/lOqlpdTsJeqU7v2h\nVC+toWYvMaF033pK9dIaavYSE0r3raNUL62lZi8xo3Tfckr10lpq9hIzSvcto1QvflCzl5hSuj9x\nSvXiBzV7iSml++a78UYIZpUze7mX6ru8rVQvLadmLzGndH98N94I//M/EBp9P2SVQfH5LPvtWG68\nMd6VSbJSs5eYU7o/voceAjLLIfce74mCPMBYsCCORUlSU7OXuFC6b9qNN4JzQM68ulRPoTdWX1MT\n39okeanZS1wo3TcuPz8y1f/cezKc6gGCwXhVJslOzV7iRun+aLNnR6b6fVD8hbpUDzBtWvxqk+Sm\nZi9xo3R/tC1bCKf6X3tPFPyS2lTfsSM8+GDcSpMk51uzN7Ogma01s+V+7VPaPqX7I/LzIRAgnOr3\nQPFgKPwyAGbh4R2RFvIz2c8E1vu4P0kBSvee/HxviKYmrRxyvXn1FDwEGGYwYwZM0n3FpRV8afZm\n1g+4BPidH/uT1KJ0DzNnQkUFkDM3YgbOeIJBeOIJDd9I6/mV7O8FZgGhpjYws2lmtsrMVpWUlPh0\nWGkLUj3d5+dDaSnhsfrfeE+GZ+CEQkr04o9WN3szuxTY5ZxbfaztnHMLnHOjnXOju3fv3trDShuT\nyul+9uzwB3UzcAbWzcAZMCB+dUnb4keyHwNcZmZFwB+BC81skQ/7lRSSyun+yAyc2rH6H1E7A2fO\nnLiVJW1Mq5u9c+5251w/59wgYCLwonPumlZXJiknVdP9gAFATu0aOAEonAocJjtbQzjiH82zl4SR\nqul+9t3lkPsL75MCgG5kZaVz331xLEraHF+bvXOuwDl3qZ/7lNSSSuk+Px8GDYJpD9eO1feAwhDt\n2o1lwQKlevGXkr0klFRJ97Xz6os/iRyrXwh8m2XLblajF9+p2UvCSYV0f2Re/X0R8+ovBv6bcePG\nxbs8aYPU7CXhtPV0X39efW2qz8ObgdM/foVJm6ZmLwmpLaf7+vPq90Jxz7p59SefvD9+hUmbpmYv\nCaktp/uj59VPxEv1B7jnnnZxrEzaMjV7SVhtNd178+pr18BpD4WTgCJgNtdfnxHf4qTNUrOXhNVW\n0703r/5X3icFlcB3gKF85Su6DZVEj5q9JLS2mO4Lu/0csg6GU30Qb2XwEPfff2O8S5M2TM1eElpb\nS/flVeX85g1vZcuBhT045ZRBpKdDx44dGTp0aJyrk7ZMzV4SXltI97VXy3Yefz+VgUoydvRj22vb\nSE9P5/Dhw5pbL1GnZi8JL9nTff2rZe8BoPofD4O7ms2bNwMwTXcSlyhTs5ekkMzpfvbs2qtlfxue\ngXMeoQ+/THX1XXTq1IlAIMCFF14Y7zKljVOzl6SQzOm+uJgG8+rvpPZq2fLycoYNG0ZmZmYcK5RU\noGYvSSMZ031+PpgRvlr2Uyg+ue5qWfiYw4cPM3Xq1HiWKClCzV6SRjKm+9mzwWXsjUj1F+Gl+gq6\ndp2LmfH1r389niVKilCzl6SSbOl+yxYgZ0p4rL4bFH4J2AlMA/Lp2LEjgwYNimuNkhrU7CWpJFu6\n7zN4D+T+xfuk4BBwP/Bb4I/s2bNHUy4lZtTsJekkU7pPP288ZAHF6VBYBZQQCKylc+fuOOf4zne+\nE+8SJUWo2UvSSZZ0v/aDtRT1Wg1A+mufA9I46aQppKe/Qvv2EAgEuOiii+JbpKQMNXtJSome7p1z\nfOknX4IsaL+rPbOv/hppaVU89NBpBIOOkpIShgwZoimXEjNq9pKUEj3d//K+X7J72G4A+m7qy4YN\nG+jbty/PPfcchw4dAuDyyy+PZ4mSYtTsJWklarq/774SbltcCllgW85m/LBHefHFFxk/fjyLFy8m\nKyuLmpoaLZEgMaVmL0krEdN9fr7jh7c5yH0EAPfSf/Howlx27/4Sffv2pXfv3hw4cID27dvzmc98\nJs7VSippdbM3s/5m9pKZfWBm75vZTD8KE2mOREv3P/jBftxZvwvPqz8HCsdSWRkkFPoZb775JhkZ\nGQSDQUaMGBHvUiXF+JHsq4FbnHOfB84Bvmdmn/dhvyLHlUjp/t57iyg7UBNxtexdeFfLAvRn5cqV\nbN26lVAoxDe/+c14lSkpqtXN3jm3wzm3JvzxPrzb7vRt7X5FmisR0v2iRY5bbvkO5PwinOrTofDI\nBVNpaTsYO3Ysn376KdXV1UyZMiUudUrq8nXM3swGASOAN/3cr8ixJEK6nzlzPqH0HZDr3YWKgkHU\npvpgsIqsrDn07NmTtLQ0unXrRqdOneJSp6Qu35q9mXUE/gLc7Jwrb+T1aWa2ysxWlZSU+HVYESC+\n6b6oqIiysv+EnD2QVQXFfaBwIOCAreTk/I7q6sf44IMPSEtLIzc3N6b1iYBPzd7M0vEafb5zbnFj\n2zjnFjjnRjvnRnfv3t2Pw4rUiVe6D4VCTJkyhcyTRkHuDu/Jgk+BzsBMOndewCefzGXs2LGsWbOG\nqqoqJk+eHLP6RGr5MRvHgEeA9c65e1pfkkjLxCPdz58/n61bt3LozOfDa+AMg8JewGeAfPLy/p0t\nW7Ywbtw4KisrAV1MJfHhR7IfA0wGLjSzt8OPi33Yr8gJiXW6Lyws5LbbbmPb7m3Yud5zwX9WAZ+l\nQ4ftDB9+Nmec8RGhUIji4mIA+vXrR0ZGRtRrE2nIj9k4rzrnzDl3hnPuzPDjWT+KEzlRsUr3oVCI\nK6+8kurqatpf0J5QuxCndTyN0zuezKWXBujf/03uvHM6CxYsoE+fPixZsoRgMKiFzyRudAWttCmx\nSvc/+MEPeP/995k5ayZ7PrcHgPTX0vmPW/+DzZs3s3v3biZMmMCKFSs47bTTKCkp4fDhw1x77bVR\nq0nkWNTspc2Jdrr//e9/z4MPPsjChQuZv3Y+NRk1jOg6gt2rdnPVVVexZcsWJk2axKuvvkpGRgbp\n6elkZmYSCAQYM2aM7/WINIeavbQ50Uz3zz77LNOmTWPcuIXMnHUhZad6z1euGMPNM2+msrKSAwcO\ncNNNN5Gfn0+XLl3YtGkT5eXlDBkyROP1Ejdq9tImRSPdr1ixgm9961v06HEzr756HXuGPRa+WvZ8\n1j/7czp3/i4LFy4kIyOjbpz+008/Zfv27YRCIc3CkbhSs5c2ye90v2LFCiZNmkRaWhrOzeFgaF/E\nGjh5QAd+9rMsFi5cSN++fVm+fDnDhw9n7969DBkyBDPjyiuvbHUdIi2lZi9tll/pfsWKFUyePJlB\ngwYxe/ZsduxIg5x54VQPFI4FYMsWx9atW/nsZz/LokWLOO+888jMzKSiogKAs846y49vS6RF1Oyl\nzfIj3a9YsYJrr72W6667joyMDHr2/BEu49OIVD+W2jVwOnbcQ25uLtnZ2RQUFNCpUycqKyvZunUr\nQ4cO1Xi9xJWavbRprUn3tY3+wQcf5Pe//z1f+9qfmT4dyPmfurF6Cp8GoH17Ryh0G8OGDaOsrIwJ\nEybw4osvcsopp1BZWck3vvGNKHx3Is2nZi9tWkvTfW2jX7JkCfPmzePWW29l7tyPOBj6CeTe4W1U\nkAd0JBiEyZP/yb/921YqKirYuHEj11xzDWvXriU7O5tAIMAll1zi/zcncgLU7KXNazLd5+fDoEEQ\nCEC3btCtGzXAip49WXzFFfxvdTW/OO883n7lFebceSc7d/4Qcv4JWdVQfG7dWH0oBO+9dzvTp09n\n8+bN7Nq1i9zcXHbv3s3u3d5NxzVeL/GmZi9tXr10v2iq1+DNYPJkKC4G56gpLWV1aSm3AtN37eJP\nVVXM2LOH54F7nePjykraZz4KuR94Oy24m9qx+l69DlFUVMQll1zC+vXrGT9+PMuXL8fM+PDDDxk8\neLDG6yXu1Oyl7cvPZ9YP/5d2h2HJgVW8XeUtSoZzvAlcAXTDW82vFPg5sAnoAfwZuB7YDIRyrokY\nqx8b3vkBvvCFJ5kyZQrBYJBdu3ZxzTXXsGjRIrp3704oFGLChAkx/XZFGqNmL21bfj5Mm0bvDduY\nscp76rsXeLcVAegCfAv4IPz4PfBtoCtwLVC7fOusTMjIfReAkwtmAI4BFAFTWbXy+0yZMoXVq1dT\nXV3NhRdeyMqVK+nSpQvOOd1vVhKCmr20Xfn5cN11UFHBYeA/XoN2h+GNz8FzvbxNTsVr7r3DX1J7\ne/A0YEr4cwf0zIF9WXB+MXy5cBLLCFLMYOBJzt6/n4GvvsojjzxChw4dePnll+nevTulpaWYme5M\nJQlBzV7apnCip6YGgL8Dwf3Upft7LoCKZu5qXyY8F+7XtxdAfyBybs10oGbqVP68aBH9+vVj8eLF\ndOjQgbKyMvr27avxekkIavbSNs2eDRVH2vko4D85ku6f/xw83Qs+Jjykk50N2dmEAAYOhO9+1/sX\nmJcDZeFUP6EQfoGX+N8L7/sSoODgQTpXVjJ48GCWLVvG7t27ycjIUKqXhKFmL21Pfr43yybsANAL\neAZI3w8zVnvPP/WV9jw/dSpDBw/mk/feg927CQIUFcGDD5I/p4gBp+xldm5XAM4rGIuZ1Q31PBf+\nNw1YBIysrobt2xk6dChlZWUcOnSIr3/969H/fkWaQc1e2pba4ZsIU8P/jgReCQSYNfF+b979wIOM\nvOtGbrjhBi6++GL27dt31G4+7j2vbgbOvTv/Qf6MVyAYBOCW8LYHgb8CA4GSdevI7doV55xWupSE\nomYvbUt4+GYJeEMywJPhf0elpbH6kkvofd33611V+5Of/ISzzjqr3pIGs2dDRU055P6390RBHgcr\njNnPngePPQZZWXXbLgPOAsqBTc6RtnIlwWCQ7OxsMjMzo/wNizSPmr20HRHDN98F9jZ4edQPfsDq\nqiqg/lW17+x8hwceeIB27doB4JxjyxbCK1vuh+JeEStbApMmwYIFdfsdBvwWb+pmF2D1vn1kBAKc\nccYZUfxmRU6Mmr20DRHDN9VAGXBS5OsDBzLqlltYvXo1zrmj1sxJS0vjySe9vwEuv/zHWLvyiJUt\nL6J2UuaAAeH9TZpU9wbuCOCzeBdijQfWAYeqqri4V69ofbciJ0zNXtqG8PDNu8BWvCtig5Gvz5lD\nnz59SE9P5+OPPwaOXjMnKysL+BrLly8mNHpSxNWyDwHVZGXBnDn191nLAbuBCcAe4DDw7VdeieI3\nLHJi1OylbQgP3ywB/gD0afj6pEkAjBw5ktWrvek4ja+IOReX8WfIfcb7NLyyZSAQYsGCut3U2yd4\nf00YUPsWbzug77ZtPnxjIv5Qs5fkl5/vLWyGN26+myNXxNYOtdQaNWpUXbOHxlbEHAA5yyDLQfFZ\nEStbptdv9JEGDqQMb7z+r0A63jg+Zl5tIgnAl2ZvZhPMbKOZfWhmt/mxT5Fmmz3bW7kSWA+0J5zs\nzRqMuxzd7I9K95nvR4zV/5wjd6Eqa/r4c+awPXzMArwhnQsAnPNqE0kArW72ZhYEHgC+Anwe+LaZ\nfb61+xVpti1bAFiO9yapI5zsnaNhHK9t9s65uuci0z0Xfv2olS0zM2vo0ePepo8/aRI78C7cmoY3\nXv+1BrWJxJsfyT4H+NA595Fz7hDwR0BXkkjsdPWucH0I6ASUEE722dlHbdq3b1/MjG0R4+mR6Z5R\nmwDosT4PM2PgQHjggUN88sk9HD58uMkStnfoQF/gdby/BXIa1CYSb340+754S4zU2hp+TiSmVgOn\nATuIGLNvwMzqvUlba9aYWaQF0iANRvQawScrxxIKeSsnTJnSnv79+7N+/fomj70jFKI38D7e8sgd\n/PiGRHwUszdozWyama0ys1UlJSWxOmzSyMvzkqQeJ/4IlZayC+8K1lFQN34eCi8xDNTbfsWKFVxx\nxRX1nuvTvQ/VVdUArH1zLYFAoN7rGzduZPjw4Ucdu3bf2w4epBfeOjyXRvxca2vQ48QfeXl5sfr1\nSwl+NPtteKu+1uoXfq4e59wC59xo59zo7t27+3DYtiUvLw/nnB4teASys3kNqAKGciTZB7Kz68bm\nI7dfvHgxF198cb3n5jw/x5tGEwIGwtoda+u9PnfuXL73ve8ddezafX+Snk4AyATOi/i51tagx4k/\n1Oz95Uez/z9gmJkNNrMMYCLwtA/7FWm2pXi9ejjerQV7HGPbyDdp8/NhwLByZi8Pz8DZ0A+InHd/\n5GvWrFnT5D63h0JU4L05nNPkViLx0+pm75yrBr6Pt+LreuAp59z7rd2vSLOVlfEqXig/GcjGW3aY\n0tJGN+/fvz81NTU88MCOo1a25NmXSLfIefeeESNG8O6771JdXd3oPnfU1FACzAC+0KA2kUTgy5i9\nc+5Z59xnnHNDnXNzjv8VIv5x/ftThPcf85+IuHrWGr+oycwYNWoUd921Oryy5S+9FwryYP8ptHuv\n4VW1cNJJJ9GnTx82bNhw1P5CTzzBTryxy9M4cmtDIGIxHZH40hW0kvTW33gjNXhDKEOJmInjmr6o\naeTIkZSUrA6vbLkXintD4RcB2Lei4VW1noYXZNXa/eMfcxLwL+BzkS/Y0Rd1icSLmr0kvT8eOEAm\n3pTHA+F/60TcsSrSgQOjIPONiKtlL8C74SAM7NrYmjlNN/vtW7fSB2+phHqLGrujL+oSiRc1e0l6\nzz//PEEzRgP/jXcF61EihnPy82HBglGQszLiatlFwCfAAubMaWzNnEbepA3vs3b2T1/gyC1NOGpd\nHpF4UrOXpPfBBx9wOBDggrQ0dgBjws+7yI0ihnNmz4ZKdzLk7veeKMgDggSDvwZmkp29otEVMUeM\nGME777xDTU1NvX3Wzuuv56j1kEXiS81ektq+ffsoLy/ncE0NaVddRXe8iz62AJ9GblhcXJfEvbtQ\nPRBe2XJEvZUtoZLJkyezevXqo9J9ly5d6NmzJxs3bqx3V6yJwFGDNUethywSX2r2ktT+9Kc/kZaW\nRrt27Xi+rIzMYJD1wBS8aZj1TJsG+fn0Gxp5F6pf0/AuVA8//DBf/epXOVhy8Kh0P2rUKFbff3+9\nm5p3AMZFHmfgQDV6SThq9pLUli5dSkZGBgMGDOC1117jYMeOvBgIHJ20ASoq4LrrOOfyW49a2TJy\n1OWKK67gpz/9KRMmTGDKZ6fUS/ejAgHWzJ/v7Qv4dsNjaPhGEpSavSS1VatWUVVVRa9evbjgggso\nrajgjYwMvoY3Zv9xg+3L02r4R/BhAHq88j0ML4g3HHWZMWMGV111FVO+NYUp7bwFEO66eQQ3/fGP\nnOyOvBvwcMOCNHwjCUrNXpJWZWUlO3fupEOHDuzdu5eLLrqI9u3b85XLLuOkgQO5Fe9GC5Hm5UBZ\nFpxfDJ9snkjIghQVG5NmD6p/AVZ+Pnc/8QRvvPUW0/NeoN1hWPI52NgLbsW7WhcarG6p4RtJYGr2\nkrReeuklADp16sSmTZv4whe+QE1NDddccw2Vd9zB48DUiO1LM2FurvfxHQXhkfralF5cDJMnUwPQ\nrRvccAO2ZQsGfGE/TF3lbXbXBd70ynpXyYKGbyThqdlL0nrqqacIBAKUlZUxcuRIioqKOHToEF/+\n8pdZ0q4dZ55+OkODQcAbznkgItWPLDyyn7pBGee8Jl5aijt8mPcjXrv9NerS/du9GjT7YFDDN5Lw\n1Owlab344ouYGTU1NUycOJFly5ZxyimnkJGRwfz585l+xx3w2GMAzMuE+8Kp/rYCbyniWnsiPnbh\nh+EtqLY3/Hzv/TAjIt3XycryjqFGLwlOzV6SUmVlJVu3bmXIkCGEQiGuuOIKXnvtNc4++2w2btzI\nhg0buOyyy9g1fjwAB84+ibIsOKcYXOGRK10rqD/uXs2R1N4L6BLx2qwG6b7Rd3ZFEpSavSSlN998\nE4CuXbvStWtXdu3aRWVlJTk5OSxYsIDrr7+ejIwMZsx4EDLhgXPSAFhbkMkpZBLCG9rZwpGUHwIy\nmjqgmZfu/9UJgLvuvdK7Z6EavSQJNXtJSkuXLiUUClFaWso555zDokWL6N27N926dePxxx9n6tSp\nVFRUsHTpg97dRLLKoDhAVeEYPsuTdGz/De6ZMIH+3boRAg7R4JchI8O7YbmZl+CfeAKcY9YjGxtd\nEVMk0anZS1L661//Svv27SkqKuKKK67gySefJCMjg40bN3LmmWcydOhQvve91wilvw7hsXoKvgH8\nHTAOHnyHsyZPZmgwyLtr15KxaBEMHOhNqRw4EBYuhN27qbvreDjBN7ZmjkgyULOXpFNZWUlxcTGD\nBw/GOUe7du3o3bs3e/bs4ZlnnmH69Ok88USIxx4bAzl/8gbo61a2rABupHPn6/jRj37EihUrOPPM\nM71mXlREEI47PNPYipgiiU7NXpJO7Xh9p06dCAaDPPfcc1x99dWUlJTw0Ucfcdlll3HLLZW4jOqI\nNXDy8O5SW0kgMAq4/0ijP0FK95KM1Owl6Tz99NOEQiE+/PBDhg0bxtKlSxk3bhzp6enccMMNZGRk\nUFLSLnwXqjIopm4NHMimY8e3KChoWaOvpXQvyUbNXpLOkiVLSE9PJxgM0q1bN8466ywqKiqoqqpi\n6tSprFy5kkD7jRGp/h/UTqgMBLby8svPtarRg9K9JB81e0kqlZWVFBUV0bVrV/r378+uXbuYNGkS\nS5YsoUuXLgwdOpRf//rXDJ/6y6NWtoQD3H13qNWNvpbSvSQTNXtJKitXrgSguroagMLCQq688kqW\nLl3K8OHD2bRpEy+/8TLFfZ4GIPP1m8NfWUxe3nZ+/ONBvtWidC/JRM1eksqiRYsIBoMEAgE2b97M\nhRdeyI4dO9i2bRtnn302v/nNbzjjO2dQVllG2rY07rh2I4FAGo8++hJ33DHM93qU7iVZqNlLUnnh\nhReoqanh0ksvpby8nKlTp/Lwww8zbNgwunTpwpOLn+SdrHcAOPPTM7nzzju5+uqruf7666NSj9K9\nJItWNXsz+5WZbTCzd81siZl1Of5XibRM7Xo46enpDB48GDNj7NixPP7442RnZ7NmzRpOufoU9lTt\nIfBxgA0rNtCrVy8WLFgQ1bqU7iUZtDbZPw+c7pw7A/gXcHvrSxJp3DPPPAOAmbFmzRqGDh3KM888\nw/Dhw9m8eQ9/+utzrErfBEDglXTaZbbjD3/4A+3bt49qXUr3kgxa1eydc393zlWHP30D6Nf6kkQa\n9/jjj5OZmcmoUaN45ZVXGDt2LPPnz+fzn59OUdFHkJMNWXuhGKo/zCUn5zrOPffcmNSmdC+Jzs8x\n+38H/ubj/kTqef3116murmbMmDEcPHiQ008/nQ0bNrB48QTI/BRyt3sbFpwNbgfr1t0ds9qU7iXR\nHbfZm9kLZvZeI4/LI7aZjbcUeP4x9jPNzFaZ2aqSkhJ/qpeUsX//fkpKSqiurubAgQNkZmayZs0a\nrr/+erZu/TPkBCDrIBSnQ2Eh8Chbt0Z3+KYhpXtJZMdt9s65cc650xt5LAUws+uBS4FJzjl3jP0s\ncM6Nds6N7t69u2/fgKSGRx99lLS0NLp168Zf/vIXDh48yLJly+jZ84eQ2QVyw7ccKbgKuBbIZcCA\n2NaodC+JrLWzcSYAs4DLnHMV/pQkcrSnnnqKtLQ0hgwZQteuXenRowc9e/6Q22/vBjlLIKsmfLXs\nAmBO3O7/rXQviaq1Y/bzgE7A82b2tpk95ENNIkdZu3YtVVVVpKWlMWLECCorK9m5cyZVHIDcv3gb\nFeQBWQSDGXG7W6DSvSSq1s7GOcU51985d2b4McOvwkRqffTRR3Xj9OvWrSMQCFBRUUFpaVZ4ZcsD\nUHxu3Ro4oVB87xaodC+JSFfQSsKbP38+aWlpOOc4++yzeeONNxg3bhxZJxdHrGx5N7UrW8Z6rL4h\npXtJRGr2kvBq16/v2LEjEydOpLCwkIkTJ3LozG8etbJlvMbqG1K6l0SjZi8Jrbq6mn/961+cfPLJ\n7Nu3j+rqapxzrP1gLYEx6wBo98YPMTMGDiRuY/UNKd1LorFjzJaMmtGjR7tVq1bF/LiSfF544QXG\njx9Pjx49OPXUUzl48CDbt29n7xl7OXDOAYJbg+z77T7flkQwM/z6ndixbwdDfjuEyupK1k5fy5m9\n/FlHX1IKvxYoAAAMX0lEQVSXma12zo1uydcq2UtCe+SRRwAoLS3l0ksv5f33N7Frb1cOnFEFwFc7\n/Tjqa9+0lNK9JBI1e0lozz33HJ07d8Y5x0sv7aCy8jSqR26GrGoo7sBz8+8kv8nrtuNPY/eSKNTs\nJWHt2LGDTz/9lC5dujBo0CD+/vd8XMYByK30Nih4iIMVxuzZ8a3zWJTuJVGo2UvCWrp0Kc45ysrK\nyMr6DqHQOsjZAVkOiodCofdO7JYtcS70OJTuJRGo2UvCmj9/Punp6VRUXMn7798MmWmQu8t7sWA+\niTKv/niU7iURqNlLQqqurmbdunV07dqVmpq7cK495PwMsgjPq78QSJx59cejdC/xpmYvCen1118n\nFAqxf/9+oD9klkPuQu/FgjxqU32izKs/HqV7iTc1e0lICxYswDlHly5dgI/Da+CU17taduDA5Gj0\ntZTuJZ7U7CUhLV++nMzMTNq1a0f3fr+MWAMnD7CkGb6JpHQv8aRmLwln+/bt7N27l1AoxPbt2+k8\n/u+QVUbatnOhaGxCLYtwopTuJV7U7CXhLFzojc0PHjyYg6GDbO6xGYC//b87cSGjqCg5Gz0o3Uv8\nqNlLwvnDH/6Ac45DhzpCTjtce0f69tP55PWL4l2aL5TuJR7U7CWhVFdXs3HjRsyMoh3r666WPfz8\nvUyfbgm9NEJzKd1LPKjZS0JZvHgxodBEnCuGnMHhefWjofBCKipI6KURToTSvcSamr0klDvv3AQs\ngMzOkLvBe7LgF9TOq0/0pRGaS+leYk3NXhLKBx9cA3SAnP+CrFC9efWQ+EsjnAile4klNXtJGGvX\nruXI1bIPeU9GXC2bjHPrj0XpXmJJzV4Sxty5czlytezeeqk+GEzeufXHonQvsaJmLwnj2Wefhcz/\naPRq2ccea3uNHpTuJXbU7CUhPPDATvbs2QM5/xu+Wva8pL9atrmU7iUWfGn2ZnaLmTkz6+bH/iS1\n5OfDzJm/gUwg13su+M87WfREcl8t21xK9xILrW72ZtYf+BLQRibFSazNnAk1Nd+HnAvD8+pzqNow\nts3MqW8OpXuJNj+S/W+AWYDzYV+SYvLzobTUQeZJkPuK92TBfwPWZubUN4fSvURbq5q9mV0ObHPO\nveNTPZJivPRukHMvZFVD8bl1M3Da0pz65lC6l2g6brM3sxfM7L1GHpcDPwZ+2pwDmdk0M1tlZqtK\nSkpaW7e0EVu2EJ5Xf6/3RMHd1M6rb0tz6ptD6V6i6bjN3jk3zjl3esMH8BEwGHjHzIqAfsAaM+vV\nxH4WOOdGO+dGd+/e3c/vQZJUfj4EAqHwvPo99ebVZ2e3/TdmG6N0L9HS4mEc59w651wP59wg59wg\nYCsw0jn3iW/VSZuVnw833AA1aTsbnVd/333xrC5+lO4lWjTPXuJi5kw4fBjIyYOssrpUHwi0/Xn1\nx6N0L9HgW7MPJ/zdfu1P2rbSUsJj9U94T4RTfSiU2o0elO4lOpTsJebqbkCSMw+yDkLxiHorW4rS\nvfhPzV5ibuZMwqm+dqz+19TOwMnOjltZCUXpXvymZi8xV1oK5Nxfb6y+Vqq+MdsYpXvxk5q9xF5m\nOeTe430csV49aLw+ktK9+EnNXmKu/RfnNZrqNYRzNKV78YuavcRUeVU5wTH159UDZGRoCKcxSvfi\nFzV7ial5b81jf6iMU9udz4DQWMxg4EBYuFBDOE1Ruhc/qNlLzJRXlTP3dS/VP3hVHsVF3rz6VFiz\nvjWU7sUPavYSM/PemkfZwTLOH3A+YwdpXv2JULqX1lKzl5iITPV5X8zDzI7zFRJJ6V5aS81eYkKp\nvvWU7qU11Owl6pTq/aF0L62hZi9Rp1TvH6V7aSk1e4kqpXp/Kd1LS6nZS1Qp1ftP6V5aQs1eokap\nPjqU7qUl1OwlapTqo0fpXk6Umr1Exf5D+5Xqoygy3d/9yt1xrkaSQVq8C5C2qUN6B578+pMs27hM\nqT5KZo2ZRXlVObedd1u8S5EkYM65mB909OjRbtWqVTE/rsjxmBnx+J0QaQ4zW+2cG92Sr9UwjohI\nClCzFxFJAWr2IiIpQM1eRCQFtLrZm9lNZrbBzN43s1/6UZSIiPirVVMvzWwscDkw3DlXZWY9/ClL\nRET81Npk/13g5865KgDn3K7WlyQiIn5rbbP/DHC+mb1pZi+b2Vl+FCUiIv467jCOmb0A9Grkpdnh\nr+8KnAOcBTxlZkNcI1elmNk0YBrAgAEDWlOzSNTccccd8S5BJCpadQWtma0AfuGceyn8+WbgHOdc\nybG+TlfQioicuHheQftXYGy4iM8AGcDuVu5TRER81tqF0BYCC83sPeAQcF1jQzgiIhJfrWr2zrlD\nwDU+1SIiIlGiK2hFRFKAmr2ISApQsxcRSQFq9iIiKUDNXkQkBcTltoRmVgIUhz/tRuLPzVeN/lCN\n/kmGOlWjPyJrHOic696SncSl2dcrwGxVS68IixXV6A/V6J9kqFM1+sOvGjWMIyKSAtTsRURSQCI0\n+wXxLqAZVKM/VKN/kqFO1egPX2qM+5i9iIhEXyIkexERibKoN3sz+2b4ZuQhMxvd4LXbzexDM9to\nZl9u4uu7mtnzZrYp/O/JMaj5T2b2dvhRZGZvN7FdkZmtC28X0wX6zSzPzLZF1HlxE9tNCJ/fD83s\nthjX+KvwzejfNbMlZtalie1ifh6Pd17M89vw6++a2chY1BVx/P5m9pKZfRD+/ZnZyDZfNLO9Ef8N\n/DSWNUbUccyfXwKcy1MjztHbZlZuZjc32Cbm59LMFprZrvCqwbXPNavftej32jkX1QfwOeBUoAAY\nHfH854F3gExgMLAZCDby9b8Ebgt/fBvezVKiXnfE8ecCP23itSKgWyzriTh2HnDrcbYJhs/rELx7\nDbwDfD6GNX4JSAt//IumfnaxPo/NOS/AxcDfAMO7E9ubMf759gZGhj/uBPyrkRq/CCyPx39/J/Lz\ni/e5bORn/wnefPW4nkvg34CRwHsRzx2337X09zrqyd45t945t7GRly4H/uicq3LOFQIfAjlNbPdY\n+OPHgCuiU+nRzMyAq4AnY3VMn+UAHzrnPnLectR/xDufMeGc+7tzrjr86RtAv1gd+ziac14uBx53\nnjeALmbWO1YFOud2OOfWhD/eB6wH+sbq+D6L67ls4CJgs3Ou+LhbRplz7hWgrMHTzel3Lfq9jueY\nfV/g44jPt9L4f8w9nXM7wh9/AvSMdmERzgd2Ouc2NfG6A14ws9Xhe+zG2k3hP4sXNvHnXnPPcSz8\nO166a0ysz2NzzkvCnDszGwSMAN5s5OVzw/8N/M3MTotpYUcc7+eXMOcSmEjT4S0RzmVz+l2Lzmdr\n71QFHPum5M65pX4cA8A558zMl+lDzaz52xw71Z/nnNtmZj2A581sQ/j/1r44Vo3A/wB34/2i3Y03\n3PTvfh27uZpzHs1sNlAN5Dexm6iex2RmZh2BvwA3O+fKG7y8BhjgnNsffs/mr8CwWNdIkvz8zCwD\nuAy4vZGXE+Vc1vGz34FPzd45N64FX7YN6B/xeb/wcw3tNLPezrkd4T/9drWkxoaOV7OZpQFfA0Yd\nYx/bwv/uMrMleH9e+fYfeXPPq5k9DCxv5KXmnuMWa8Z5vB64FLjIhQccG9lHVM9jI5pzXqJ+7o7H\nzNLxGn2+c25xw9cjm79z7lkze9DMujnnYrrWSzN+fnE/l2FfAdY453Y2fCFRziXN63ctOp/xHMZ5\nGphoZplmNhjv/6JvNbHddeGPrwN8+0vhOMYBG5xzWxt70cw6mFmn2o/x3ox8r7Fto6HBmOeVTRz7\n/4BhZjY4nGom4p3PmDCzCcAs4DLnXEUT28TjPDbnvDwNXBueSXIOsDfiz+uoC79f9Aiw3jl3TxPb\n9Apvh5nl4P0+l8aqxvBxm/Pzi+u5jNDkX+qJcC7DmtPvWvZ7HYN3nK/EG1OqAnYCz0W8NhvvXeWN\nwFcinv8d4Zk7QDbwD2AT8ALQNdo1h4/7e2BGg+f6AM+GPx6C9y74O8D7eMMWsXwn/wlgHfBu+Afd\nu2GN4c8vxpvJsTkONX6IN7b4dvjxUKKcx8bOCzCj9meON3PkgfDr64iYSRaj+s7DG6J7N+L8Xdyg\nxu+Hz9k7eG+AnxvLGo/180ukcxmuoQNe8+4c8VxczyXe/3h2AIfDPXJKU/3Oj99rXUErIpICdAWt\niEgKULMXEUkBavYiIilAzV5EJAWo2YuIpAA1exGRFKBmLyKSAtTsRURSwP8HNh9blLYmNTMAAAAA\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "div = 32\n", "for i in range(0,div):\n", " theta = 2*np.pi/div*i\n", " x = np.sin(theta)\n", " y = np.cos(theta)\n", " # print('%10.5f-%10.5f' % (x,y))\n", " plt.plot(x,y,'o',color='r')\n", " p0 = np.array([x,y])\n", " p1 = np.dot(a,p0)\n", " plt.plot(p1[0],p1[1],'o',color='b')\n", " plt.plot([x, p1[0]], [y,p1[1]], color='k', linestyle='-', linewidth=1)\n", "\n", "x_m = 6\n", "y_m = 6\n", "plt.hlines(0, -x_m, x_m, color='k', linestyle='-', linewidth=1)\n", "plt.vlines(0, -y_m, y_m, color='k', linestyle='-', linewidth=1)\n", "\n", "t=x_m\n", "plt.plot([-t*v0[0],t*v0[0]], [-t*v0[1],t*v0[1]], color='g', linestyle='-', linewidth=2)\n", "t=y_m\n", "plt.plot([-t*v1[0],t*v1[0]], [-t*v1[1],t*v1[1]], color='g', linestyle='-', linewidth=2)\n", "\n", "\n", "plt.axes().set_aspect('equal', 'datalim')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "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.6.1" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "toc": { "colors": { "hover_highlight": "#DAA520", "navigate_num": "#000000", "navigate_text": "#333333", "running_highlight": "#FF0000", "selected_highlight": "#FFD700", "sidebar_border": "#EEEEEE", "wrapper_background": "#FFFFFF" }, "moveMenuLeft": true, "nav_menu": { "height": "12px", "width": "252px" }, "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 4, "toc_cell": true, "toc_section_display": "block", "toc_window_display": false, "widenNotebook": false } }, "nbformat": 4, "nbformat_minor": 2 }