{ "metadata": { "name": "", "signature": "sha256:e9c2b606824fcdccfd75e24007928b297798ca40036f1a3916def3ce46fa44d2" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Matrices Solutions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy import *\n", "init_printing()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `row_del` and `row_insert` to go from one Matrix to the other." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def matrix1(M):\n", " \"\"\"\n", " >>> M = Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])\n", " >>> M\n", " [1, 2, 3]\n", " [4, 5, 6]\n", " [7, 8, 9]\n", " >>> matrix1(M)\n", " [4, 5, 6]\n", " [0, 0, 0]\n", " [7, 8, 9]\n", " \"\"\"\n", " M.row_del(0)\n", " M = M.row_insert(1, Matrix([[0, 0, 0]]))\n", " return M" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "M = Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "M" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}1 & 2 & 3\\\\4 & 5 & 6\\\\7 & 8 & 9\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAMAAADDCbAzAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRLvvzWYi3YlsmQtEVgAAA11JREFUWAntmduCmyAQhjlJt1EEyvu/a2eGQ0QZuslu\n90ovEkT9GH6B+UOETHQo8U1HyDwhZNIGjuWbuGJHmkoIlt/FfHL2E3i1z2uXktfarY9Lda2QMca1\n9rsH2zVNwB7fgkn10cqr315D6ZFMPj+CrVJqBlbUaIA+Do9ITaZwBUONmYG3DckqMWIsb4Mdtao5\nMEU6lOJfEdOTIsw6JVydDUeNPwWWKeYGBp8yNq54GezWAfFZZbbyBl4F6zlXiK0o9SLYVAmfMbaS\np/m7pp1qXgMvOAe8b6xjwSaK9S2wRK7Yx2CRHF4NKV9+JWIfYDGIukwtpHSHQQ0eddB0YK235HTW\nqHsmn5R1lgOLRcMiVVeSDjyAvV11g5t0txS3FE2BVvi5USEnK67brfCxrgYtuFawUcdYXNUl4jBJ\nERu6PT7l+QBQNfYVwmwTsNOqBtSiPBQCtuloVYZVu/dufp8ly4lKgNw7X3ACR/E+2G2H6E8RQ9aZ\ngtH3MgZLQGqSxuj6aruILTjFGRg9ruUclk0Bcw99kDAH403iT14edVV1PX72HrI0nsSBr1hwCM4i\nJkpk/D9EjNf34p9Ril8fv7HK0gidgFd6MnJa5PS/F+f956NJsYDvBue9qeLJsbHu2Aisi3HoLuFJ\nbvcYcffjZjJByK60GXABL6zGdOsETD8ylo0xQhAyaGm3Yku64QbvVKXEOxaptVIsVwitdBvmJ/Cl\nf29X3OAm3S3FLUVToBV+ZFTIAH4Dj9bsqWDhWktqp2twapWOqviVLpnuefcpsVme1k12jfIbJFJf\nF7+jFDFv27DcnVZEW6zOJeKVkqEqObMD072814nUJAvOqWmUTIn74BKTEEvCXaHI3GATxWpKSjxG\njGA7y/5rSrthX22NOKeQM3jy0qFZnVJgM4gmjdeSpU9gSwmRNBl87Fq6xO67WQexLnoMNsWEDqjg\nRXC4wZjMg2dwC2xqyrrhd4o4sGMNOLTtJnzZQhmAsWo8KmzK3mH4kC2mTTPDIj80Nt6PGViUScUZ\nAIMWyVcD1kuxTMGLQ3UXbryZAJdd7U4PlnP9Hgr2UKqzvsoVtW67vN0idL31CzV9xF8AnR+9wU2R\n/ywF5aTZbG6BfKbQ/mCx+IeIMewvw8/AjvfQHyzGiL/a/CifSWQDggAAAABJRU5ErkJggg==\n", "prompt_number": 11, "text": [ "\u23a11 2 3\u23a4\n", "\u23a2 \u23a5\n", "\u23a24 5 6\u23a5\n", "\u23a2 \u23a5\n", "\u23a37 8 9\u23a6" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix1(M)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}4 & 5 & 6\\\\0 & 0 & 0\\\\7 & 8 & 9\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAMAAADDCbAzAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRN277yJmzYlst1IWYAAAAylJREFUWAntme2SpCAMRfmSnW1UZPP+77ohKE3Q4NTs\n1FRtlfzohr54CDEKpJUGKkZ9UwmFp5QG67BM38RVMdMMZLD+LuabE3uwHnhki16tSZ6ZTzal3cgT\nOMzvUfvakp2X+l9rew0INaG0e7BbBuDNmsOgSmsqIY+5bZfgNW4D8MBLSIvgm1E6i5P6OnhbGi4O\n00ZFXMfgHEav9vK2Dpt2zh63loG9Qx8NXDHjXD0IZA8h4jj0gd8MTM4fgMk+w2b8NtkDTl6ptHu6\nBU85BEcWEyUJjxNanPUIxRkN2FOEDsAzXZkkXwAFWgT0Jw1Qb95kcoHFFIVk9rEQ2MLKfq2NMu6F\nxaXH4AGx1ON4AirwqEyij6nHALxm8rQIBis1oy/9kkMDS+Pj3EwGwO5SbvOirTVG5Cplja1h3oE5\n6F9aD7h673HF44rqgVr5majwuNWyg13Rjc5kZnHA5cznXYdQbnQmt2BHL3K37zjO8Budyy040Ibk\nJa0Q6kbncgsGWiL0vhqeLb7RudyA17Lf0/tqeALf6J18BabV+sRV9cprvZN/FCws/9Wka72Ts8W/\nPn7TxA/vS4vpjc7lPx91w7KH03QTbqJewu2QGx+rEuGJHpPzvVN3Or+8BauA+zm/DB7psc4uZ2Bv\nkzMyV93oTGbgq/l/9bcHXD33uOJxRfVArfxIVOiACZJc6rBdxaNWT+Gdhk1vbKqvmtbiWLJPIKYl\naBUXD1Xrgi+/9TitteBUEhkiN9LS4qX39Uynd7Mf8hmYZicnZxINKYLLWfrq9E/c1/VSmbUJDM4p\nCR08kK1uP8O3FueL/ShdMQNEJ97aw+KyFvfgwU3HYS1AEI+8lnw8n9MKZDCd4HPtqkSrNxC3dn5D\nWyd7DZb3sDhQzOGGMdlmwdj4mNTU7pxhyX3K3oD1fjcWIq4gbWio53VU+LKbebPamt+zTFYIi9L3\nyJPwm/cagdX+UEkZC5e3UOuRMeLgaQietuyLSYo3F1DejulwsB7772WsHcRjsnYuuTEcn4Nbl/5j\n/QFXB/6vrqA1SVw56vQ+Wal/sPj8h4hzQsL5k7SmG/3B4pz6CyFBKjOQDmqMAAAAAElFTkSuQmCC\n", "prompt_number": 12, "text": [ "\u23a14 5 6\u23a4\n", "\u23a2 \u23a5\n", "\u23a20 0 0\u23a5\n", "\u23a2 \u23a5\n", "\u23a37 8 9\u23a6" ] } ], "prompt_number": 12 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Matrix Constructors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use the matrix constructors to construct the following matrices. There may be more than one correct answer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\left[\\begin{array}{ccc}4 & 0 & 0\\\\\\\\ \n", "0 & 4 & 0\\\\\\\\ \n", "0 & 0 & 4\\end{array}\\right]$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def matrix2():\n", " \"\"\"\n", " >>> matrix2()\n", " [4, 0, 0]\n", " [0, 4, 0]\n", " [0, 0, 4]\n", " \"\"\"\n", " return eye(3)*4\n", " # OR return diag(4, 4, 4)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix2()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}4 & 0 & 0\\\\0 & 4 & 0\\\\0 & 0 & 4\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAMAAADDCbAzAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRN277yJmzYlst1IWYAAAAmBJREFUWAntmWFTgzAMhgN0OMUNsf//v9oWG/KWpnE7\n9M47+CCFkIcQyvE4qPNp6emgZVp5RJ0fXFguB3FpjrTeR3B3FHPjzCW4a3RkDFc26EVAeAee3rez\nlqPpjWicVDKES7C76WA3xTO5j/J839sYLsD3+UMHT6lLb/5eJ2O4AC/UAPshEjuvTB8MI3i+N8B3\nv6xgV624CAN4DCl6xZyZ+Dt4EQZwzPgN8CVOpB+AH23FmC5RB1O+O/OuDWkHhkUrLn1c/K2vV0S0\nzqdLe7rlsACvdZgPyJIek0rR6wOSw4+AaQozeLzpj7QMF+Cl935Qehigw+J6lYvhAly5wid3nWBu\n3NmKsxXcAR78zawA4+Bz46AhNJAOFYNxII+3GkID6RKMxsEoGDSEBtMlGI0DeHmjJTSYLsH5paUI\nSYS3hAbTBZjFQHvnEbWEpkivgetCEuptCg2D1/SHwE2h+QFYa0VbaBi8pseKX66v6a7n7isvU0to\nMP3zuv0PYgiJJTSYLnpMaBzpIvZ/dKHBdAm2hCSdRQdjOoANIQngptBAOoD3F/78nhPMvTtbcbaC\nO8CDv5kVYBx87m1gxcOR7DNQMRjHxuORFQ8Hss9IMBoH43hgxcOBm89IMBoH83hgxYmEz0hwfmlp\nwmLFwWcEuHjNcqF5YMXRZ2pgRVgYrMTRZ44Eg8/UwIqwcMVKHH1GgK1fUIx44TMSjMaR79m2bscL\nn5FgNI4NmEdWPB7H2iHBaBwZJ9bGLyw6GIxDAPPQikufgYoz4Ij1CeYu/tdW/NIHljF+EHEufDI4\nZkkfWJyjL7LpKbg2v/C9AAAAAElFTkSuQmCC\n", "prompt_number": 7, "text": [ "\u23a14 0 0\u23a4\n", "\u23a2 \u23a5\n", "\u23a20 4 0\u23a5\n", "\u23a2 \u23a5\n", "\u23a30 0 4\u23a6" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\left[\\begin{array}{}1 & 1 & 1 & 0\\\\\\\\1 & 1 & 1 & 0\\\\\\\\0 & 0 & 0 & 1\\end{array}\\right]$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def matrix3():\n", " \"\"\"\n", " >>> matrix3()\n", " [1, 1, 1, 0]\n", " [1, 1, 1, 0]\n", " [0, 0, 0, 1]\n", " \"\"\"\n", " return diag(ones(2, 3), 1)\n", " # OR diag(ones(2, 3), ones(1, 1))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix3()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}1 & 1 & 1 & 0\\\\1 & 1 & 1 & 0\\\\0 & 0 & 0 & 1\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAABLCAMAAACMVLPjAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRLvvzWbdIols+ZZ2SgAAAeZJREFUaAXtmnFzwiAMxdOCzKmzOr7/dx20BElq2c0c\nqXejf1jOd81PHqX3lhUGPx8jKB3TwgMYvLHhOChx4Rppo4/gQYv54Fw5+Owe4pORQHbBV5OnyMDu\n7GtgkTydANyEZAJ24zhWwDLZTtFA+5VsJOAoVMAyeZp3zcnfFrIe2JtIHHzaPGrgm78vYKs84wye\n+QD6M94NrG014M11VV5jWLbTQX87LQ+Q+/wYCZNWu7kAprCD3eXpIxOMufgvk1ZhWYvyUyY7c7cj\nclczLjlNx9zqprCyeAeXbjQdd6ub2lsW71aXbjQdr6wWJPbwQ2tX90BP/2jrgZ7d2a8bknO1dsrM\n4N1y9W7gwuqP42deytcXMZaoXc0C/fdRdzv1QJ/WWJbYf7m6B3p6V+d91XqwCgKtgVi/g9GJ5udu\ndXOLEfAmVtPMjT8un2VyKFPkfTpj2kTPQBzIZCD9fQJmTXTk4Vkms/4+AbMmOgLxLJNDlTIZETDG\noo3/QMnkCjhH3xQEcabpLJNjka0Z58op+m6BX5LfG6xtNW+iM6uFcmWNeROdg1mP/Y9yDcya6Lyy\nTK6BWROdg4Xy9nYKnXvSRF+BZTLN++TJtSI1/KKDG5pLS/9Xq3d6AcXFF0KsDS8t6BzzCyjWwg/4\nWi0qKQH4LwAAAABJRU5ErkJggg==\n", "prompt_number": 15, "text": [ "\u23a11 1 1 0\u23a4\n", "\u23a2 \u23a5\n", "\u23a21 1 1 0\u23a5\n", "\u23a2 \u23a5\n", "\u23a30 0 0 1\u23a6" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\left[\\begin{array}{}-1 & -1 & -1 & 0 & 0 & 0\\\\\\\\-1 & -1 & -1 & 0 & 0 & 0\\\\\\\\-1 & -1 & -1 & 0 & 0 & 0\\\\\\\\0 & 0 & 0 & 0 & 0 & 0\\\\\\\\0 & 0 & 0 & 0 & 0 & 0\\\\\\\\0 & 0 & 0 & 0 & 0 & 0\\end{array}\\right]$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def matrix4():\n", " \"\"\"\n", " >>> matrix4()\n", " [-1, -1, -1, 0, 0, 0]\n", " [-1, -1, -1, 0, 0, 0]\n", " [-1, -1, -1, 0, 0, 0]\n", " [ 0, 0, 0, 0, 0, 0]\n", " [ 0, 0, 0, 0, 0, 0]\n", " [ 0, 0, 0, 0, 0, 0]\n", " \"\"\"\n", " return diag(-ones(3, 3), zeros(3, 3))\n", " # OR diag(-ones(3, 3), 0, 0, 0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix4()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}-1 & -1 & -1 & 0 & 0 & 0\\\\-1 & -1 & -1 & 0 & 0 & 0\\\\-1 & -1 & -1 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 17, "text": [ "\u23a1-1 -1 -1 0 0 0\u23a4\n", "\u23a2 \u23a5\n", "\u23a2-1 -1 -1 0 0 0\u23a5\n", "\u23a2 \u23a5\n", "\u23a2-1 -1 -1 0 0 0\u23a5\n", "\u23a2 \u23a5\n", "\u23a20 0 0 0 0 0\u23a5\n", "\u23a2 \u23a5\n", "\u23a20 0 0 0 0 0\u23a5\n", "\u23a2 \u23a5\n", "\u23a30 0 0 0 0 0\u23a6" ] } ], "prompt_number": 17 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Advanced Methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that if $f$ is an analytic function, then we can define $f(M)$ for any square matrix $M$ by \"plugging\" $M$ into the power series formula for $f(x)$. In other words, if $$f(x) = \\sum_{n=0}^\\infty a_n x^n,$$ then we define $f(M)$ by $$f(M) = \\sum_{n=0}^\\infty a_n M^n,$$ where $M^0$ is $I$, the identity matrix. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Furthermore, if $M$ is a diagonalizable matrix, that is, $M=PDP^{-1}$, where $D$ is diagonal, then $M^n = PD^nP^{-1}$ (because $M^n = \\left(PDP^{-1}\\right)\\left(PDP^{-1}\\right)\\cdots\\left(PDP^{-1}\\right)=PD\\left(P^{-1}P\\right)D\\left(P^{-1}P\\right)\\cdots DP^{-1} = PD^nP^{-1}$).\n", "\n", "But if \n", "\n", "$$ D = \\begin{bmatrix}\n", " d_1 & 0 & \\cdots & 0 \\\\\\\\\n", " 0 & d_2 & \\cdots & 0 \\\\\\\\\n", " \\vdots & \\vdots & \\ddots & \\vdots \\\\\\\\\n", " 0 & 0 & \\cdots & d_n\n", " \\end{bmatrix}\n", "$$\n", "\n", "is a diagonal matrix, then \n", "\n", "$$ D^n = \\begin{bmatrix}\n", " d_1^n & 0 & \\cdots & 0 \\\\\\\\\n", " 0 & d_2^n & \\cdots & 0 \\\\\\\\\n", " \\vdots & \\vdots & \\ddots & \\vdots \\\\\\\\\n", " 0 & 0 & \\cdots & d_n^n\n", " \\end{bmatrix}\n", "$$\n", "\n", "so that \n", "\n", "$$\n", "\\sum_{n=0}^\\infty a_n M^n = \\sum_{n=0}^\\infty a_n PD^nP^{-1} = P\\cdot\\begin{bmatrix}\n", " \\sum_{n=0}^\\infty a_n d_1^n & 0 & \\cdots & 0 \\\\\\\\\n", " 0 & \\sum_{n=0}^\\infty a_n d_2^n & \\cdots & 0 \\\\\\\\\n", " \\vdots & \\vdots & \\ddots & \\vdots \\\\\\\\\n", " 0 & 0 & \\cdots & \\sum_{n=0}^\\infty a_n d_n^n\n", "\\end{bmatrix}\\cdot P^{-1} = P\\cdot\\begin{bmatrix}\n", " f(d_1) & 0 & \\cdots & 0 \\\\\\\\\n", " 0 & f(d_2) & \\cdots & 0 \\\\\\\\\n", " \\vdots & \\vdots & \\ddots & \\vdots \\\\\\\\\n", " 0 & 0 & \\cdots & f(d_n)\n", "\\end{bmatrix}\\cdot P^{-1}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create some square matrices, which we will use throughout the exercises." ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = symbols('x')\n", "A = Matrix([[1, 1], [1, 0]])\n", "M = Matrix([[3, 10, -30], [0, 3, 0], [0, 2, -3]])\n", "N = Matrix([[-1, -2, 0, 2], [-1, -1, 2, 1], [0, 0, 2, 0], [-1, -2, 2, 2]])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, verify that these matrices are indeed diagonalizable." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print(A.is_diagonalizable())\n", "print(M.is_diagonalizable())\n", "print(N.is_diagonalizable())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "True\n", "True\n", "True\n" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we want to write a function that computes $f(M)$, for diagonalizable matrix $M$ and analytic function $f$.\n", "\n", "However, there is one complication. We can use `diagonalize` to get `P` and `D`, but we need to apply the function to the diagonal of `D`. We might think that we could use `eigenvals` to get the eigenvalues of the matrix, since the diagonal values of `D` are just the eigenvalues of `M`, but the issue is that they could be in any order in `D`.\n", "\n", "Instead, we can use matrix slicing to get the diagonal values (or indeed, any value) of a matrix. There is not enough time in this tutorial (or room in this document) to discuss the full details of matrix slicing. For now, we just note that `M[i, j]` returns the element at position `i, j` (which is the `i + 1, j + 1`th element of the matrix, due to Python's 0-indexing). For example" ] }, { "cell_type": "code", "collapsed": false, "input": [ "M" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}3 & 10 & -30\\\\0 & 3 & 0\\\\0 & 2 & -3\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAH0AAABLCAMAAABqfXinAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRIm7It3N72ZseWnCEwAAA2VJREFUaAXtmtmCoyAQRVGI3RPjkuH//3VYhOKylJrp\ncV70RUTqHinBVEFEp93RiyuP2UOF6LRU5nhcCRdvi+y1pXeXggn2Bno3juOL9cFrcLaD8ZY88cwk\nDJZAn6SRfmpFD5eVhpf29PkpxDAfxifCYAn0Udt+6zljhsuh73tPV66JWsKdvTMJoyXQHzzdMJSn\nz25+PPW0h93ukzBaAt215Twf6Nq+IjNa2SGykePJCaNlSV+4ee/7PunR09sjJDKpYIUzy4zejSx8\n63vUcA9B+kxpE84sM7qxV6sZz60j6/tx+ia8SxfrNqtqT5DRW56flpmO2BkjHOneEvo+uQn80u8a\n2NVtYz6MnXZDVCBhtEzpg3a9PkD38+ZxdMYlwmiZ0oV2n4+ZEd367r8ZY+uzhB03VySMlkBX1pNP\nP50KBVex0cVsZvqwHv7SJsJgCXTxkFIu7U+IlKtepH3EQY6qPwwXiTBYIr3e4X9Xe9NPvMEffQ23\n52/P/+iAOiR2j7ow6iDUb/iOEoNGg6K6rYqeh1C/UHEVSWJQb1DWtlWBjqF+KWNrKDGo3y9rGVWg\nY6hf6tgaSgzq98taRhXoIehq/8Jv2mzGkfMZ1ZSeBZy5SnLNB/1JQ1PkVKt0PkzfyzgQTvSK6gd0\no85mHH9LbyUJpMtlHNTKlfY8//X9y1uE8cElCZQYZJTmJaP6+ztZt8FQvyqXJAbV+5VKRjV97wJD\n/YqQqaLEoH6/rGVUgX4kSUgSgxJUr4EEApogHUJ9aEcXOxkHNYyltirSo8FFhZseoouLHB4xt+dv\nz8fBcFnhHnVh1LXjfnoZk1lYesX1R6rfL5V5CHq+HfdH7ckuYatza+PeuJKHAJ2J+yO9d1sjs9nO\nOXtU8hCgM3F/RK2rxff6vO8reQjQQwTGZROLW8uVH9BdBzAPSelc9Bn77gszs4qeNcVLzEOq9Erc\njxodt5aLTdOrIg/5jL68UtEzZcxDqvS9bEIegjc3KOhpU7oIo47LJoyp4natSDovVfIQoDNxfyL1\nsJtx09GNwGhYy0OAzsT9UUR0bifwfZpey0OAfiSbmGazTz3Kw5si9NiVPATp7bg/imz/GfiAnmxQ\nBDWkh9qrzjc9RBdXeTxwbs//z3/7DPaPN0qdj1bC6/vk7P7to5T4A0fbMY3IGYrVAAAAAElFTkSu\nQmCC\n", "prompt_number": 20, "text": [ "\u23a13 10 -30\u23a4\n", "\u23a2 \u23a5\n", "\u23a20 3 0 \u23a5\n", "\u23a2 \u23a5\n", "\u23a30 2 -3 \u23a6" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "M[0, 1]" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$10$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABMAAAAPBAMAAAD0aukfAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAuxCrdpnvzWYy3UQi\nVIln4VgtAAAAaklEQVQIHWNgYBBiYGAKcZ3AwMCg+ImBgWsD00oGBmVjINOLgcEdKMoCZC5mYNh/\nAML8ysAw/wKYyfMPyHRAMB9gZUIUMIC0NUBMABp2/wCECbTiFQOEyXWBKZOBgTXsewQDU5wzyDlw\nAACa6iZBpbQ2vwAAAABJRU5ErkJggg==\n", "prompt_number": 21, "text": [ "10" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "That should be enough information to write the following function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def matrix_func(M, func):\n", " \"\"\"\n", " Computes M at func. Assumes that M is square diagonalizable.\n", "\n", " >>> matrix_func(M, exp)\n", " [exp(3), -5*exp(-3)/3 + 5*exp(3)/3, -5*exp(3) + 5*exp(-3)]\n", " [ 0, exp(3), 0]\n", " [ 0, -exp(-3)/3 + exp(3)/3, exp(-3)]\n", "\n", " Note that for the function exp, we can also just use M.exp()\n", "\n", " >>> matrix_func(M, exp) == M.exp()\n", " True\n", "\n", " But for other functions, we have to do it this way.\n", "\n", " >>> M.sin()\n", " Traceback (most recent call last):\n", " ...\n", " AttributeError: Matrix has no attribute sin.\n", " >>> matrix_func(N, sin)\n", " [-sin(1), -2*sin(1), 0, 2*sin(1)]\n", " [-sin(1), -sin(1), sin(2), sin(1)]\n", " [ 0, 0, sin(2), 0]\n", " [-sin(1), -2*sin(1), sin(2), 2*sin(1)]\n", " \n", " Note that we could also use this to compute the series expansion of a matrix, \n", " if we know the closed form of that expansion. For example, suppose we wanted to compute\n", " \n", " I + M + M**2 + M**3 + \u2026\n", "\n", " The series\n", "\n", " 1 + x + x**2 + x**3 + \u2026\n", "\n", " is equal to the function 1/(1 - x).\n", "\n", " >>> matrix_func(M, Lambda(x, 1/(1 - x))) # Note, Lambda works just like lambda, but is symbolic\n", " [-1/2, -5/4, 15/4]\n", " [ 0, -1/2, 0]\n", " [ 0, -1/4, 1/4]\n", " \"\"\"\n", " P, D = M.diagonalize()\n", " diags = [func(D[i, i]) for i in range(M.shape[0])]\n", " return P*diag(*diags)*P**-1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_func(M, exp)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}e^{3} & - \\frac{5}{3 e^{3}} + \\frac{5 e^{3}}{3} & - 5 e^{3} + \\frac{5}{e^{3}}\\\\0 & e^{3} & 0\\\\0 & - \\frac{1}{3 e^{3}} + \\frac{e^{3}}{3} & e^{-3}\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "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\nQmCC\n", "prompt_number": 23, "text": [ "\u23a1 -3 3 \u23a4\n", "\u23a2 3 5\u22c5\u212f 5\u22c5\u212f 3 -3\u23a5\n", "\u23a2\u212f - \u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500 - 5\u22c5\u212f + 5\u22c5\u212f \u23a5\n", "\u23a2 3 3 \u23a5\n", "\u23a2 \u23a5\n", "\u23a2 3 \u23a5\n", "\u23a20 \u212f 0 \u23a5\n", "\u23a2 \u23a5\n", "\u23a2 -3 3 \u23a5\n", "\u23a2 \u212f \u212f -3 \u23a5\n", "\u23a20 - \u2500\u2500\u2500 + \u2500\u2500 \u212f \u23a5\n", "\u23a3 3 3 \u23a6" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_func(M, Lambda(x, 1/(1 - x)))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}- \\frac{1}{2} & - \\frac{5}{4} & \\frac{15}{4}\\\\0 & - \\frac{1}{2} & 0\\\\0 & - \\frac{1}{4} & \\frac{1}{4}\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAIoAAABNCAMAAABOtAxaAAAASFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC\ngUnDAAAAF3RSTlMAMquZdlQQQOkwRCLN3buJ72bF9dPzbCjqGKgAAAPSSURBVGgF7ZrrkqQgDIXF\n285q27Z74/3fdEGURnIkwcWqnarxx4ziSfJ1VCBiVaU29UydBeeGZuyXFpwImpxTifJtpJp6eh+J\n9gatdZ1U7k6BUhnjU/suG2UZxiSJOemcDl45OYKqUrppzdZBB/koA/RzaNxQvHKx8WttUdRBeDjI\nRzG/q+kPPsjBhnJULsVRRnN5ugeJfmhwKJGyPIqN2afybM6/Ux0oy6M87NXW/jawZGRzKJGyPMrL\noIw6/RA5lEhZHmU2t2yb7li2CxQpGZRxfpgnnSQ42TDPzZwUeKdHJYOSdFn45P+KMj6m95Z+BraM\n5FucpzKdFTc0mL/nDuIzvIlX7DubizRKHOfWYw5lbp41M6AAPqbf3ywiFYNix7UmMgGho6ZOS+hj\nFYMymV5zZAaUiMOMQLMEhagYlJeZxPTMgEJQ2l6CQlQMig0TJ5KEjhpUJ0GhKgHKI92NRyBVNZs8\n8vcKVfEoMzO0xSjLKEEBKhZlycxJbwZPPitIxaEMhkQlpr5xTqquMZtuFnLi0IBUDIp6dl2X28ep\nH4J7xXYSxzuKQXmt48ThB3EHqnn81DWuZELbpY5UDEpoK95/T6LFJlb4hYLSdZKV3hZuOQ9O6Fty\ngUCAE5TJzOH66SKLBAUEwCjt+vqgzZ4duNwIUFAAjDKtnf3AFFbhRQn3BSgoAEbRjXWtNN87hAj7\nvgAFBYAoo14HHqUzi7GVxRdcOxn4DwOkUTKHQhAUN3mUMMCnQWEv0MWSzGclDGCz8u3je5TH/a5i\nhvrIaj3c66x0FYcC/PlA7+Lcs9ZdfJgRYdSGAsB7pXI90Jz7ntTFk1RxKABGqSZbdNi3QvmbrIoD\nAU5Q+mZu60sklayKAwFOUPKT4S0uVXHWujyK9ZpbxVmbm1Byq7j7UHKruJXklqzkVnGO5A6U7Cru\nNhT1bH9Jqjiy/Fb+CfotquL2lbItI/ZfeZRwXSMIRHbJXO8LxeRImhVQMZEMnzaQIFBJVCcXCFRM\n0B9sJEFkKoyCKiboDzYWRUEVE4wKG4ui7FPP20oy8xMIMLxAcEIOEwAaJSWZeftFl9/SKGHFBKKW\nbfo0KGHFBFNwsSSDvmBWqv22va8k2yu3AAqjoIopMLpnF6Ogiiknvux1VaTCKP9Skhlk2YQ/Vp2g\ngIpJnhWy/gVNieoEBRpLG8n6FzQkqhtQ6PoXQqGqG1Do+hdCoaryKGD9C6AAVXEUtP5FUZCqOApa\n/6IoSOVQ1m44c7mS+vct8fqXP3HYCVT+E73efiDXtqKvRA7OTg7I+hfUhar1E722rf4C5lA6Shcb\nFUoAAAAASUVORK5CYII=\n", "prompt_number": 24, "text": [ "\u23a1-1/2 -5/4 15/4\u23a4\n", "\u23a2 \u23a5\n", "\u23a2 0 -1/2 0 \u23a5\n", "\u23a2 \u23a5\n", "\u23a3 0 -1/4 1/4 \u23a6" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now lets investigate how this works in relation to the series expansion definition. Write a function that uses `matrix_func` and `series` to compute the approximation of a matrix evaluated at a function up to $O(M^n)$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def matrix_func_series(M, func, n):\n", " \"\"\"\n", " Computes the approximation of the func(M) using the series definition up to O(M**n).\n", "\n", " >>> matrix_func_series(M, exp, 10)\n", " [22471/1120, 14953/448, -44859/448]\n", " [ 0, 22471/1120, 0]\n", " [ 0, 14953/2240, 83/2240]\n", " >>> matrix_func_series(M, exp, 10).evalf()\n", " [20.0633928571429, 33.3772321428571, -100.131696428571]\n", " [ 0, 20.0633928571429, 0]\n", " [ 0, 6.67544642857143, 0.0370535714285714]\n", " >>> matrix_func(M, exp).evalf()\n", " [20.0855369231877, 33.3929164246997, -100.178749274099]\n", " [ 0, 20.0855369231877, 0]\n", " [ 0, 6.67858328493993, 0.0497870683678639]\n", "\n", " It's pretty close. Basically what we might expect for those values up to O(x**10).\n", "\n", " >>> matrix_func_series(N, sin, 3)\n", " [-1, -2, 0, 2]\n", " [-1, -1, 2, 1]\n", " [ 0, 0, 2, 0]\n", " [-1, -2, 2, 2]\n", " >>> matrix_func(N, sin).evalf()\n", " [-0.841470984807897, -1.68294196961579, 0, 1.68294196961579]\n", " [-0.841470984807897, -0.841470984807897, 0.909297426825682, 0.841470984807897]\n", " [ 0, 0, 0.909297426825682, 0]\n", " [-0.841470984807897, -1.68294196961579, 0.909297426825682, 1.68294196961579]\n", "\n", " It's not as close, because we used O(x**3), but clearly still the same thing.\n", "\n", " >>> matrix_func_series(M, Lambda(x, 1/(1 - x)), 10)\n", " [29524, 73810, -221430]\n", " [ 0, 29524, 0]\n", " [ 0, 14762, -14762]\n", " >>> matrix_func(M, Lambda(x, 1/(1 - x)))\n", " [-1/2, -5/4, 15/4]\n", " [ 0, -1/2, 0]\n", " [ 0, -1/4, 1/4]\n", "\n", " Woah! That one's not close at all. What is happening here? Let's try more terms\n", "\n", " >>> matrix_func_series(M, Lambda(x, 1/(1 - x)), 100)\n", " [257688760366005665518230564882810636351053761000, 644221900915014163795576412207026590877634402500, -1932665702745042491386729236621079772632903207500]\n", " [ 0, 257688760366005665518230564882810636351053761000, 0]\n", " [ 0, 128844380183002832759115282441405318175526880500, -128844380183002832759115282441405318175526880500]\n", " \n", " It just keeps getting bigger. In fact, the series diverges. Recall that \n", " 1/(1 - x) = 1 + x + x**2 + x**3 + \u2026 *only if* |x| < 1. But the eigenvalues \n", " of M are bigger than 1 in absolute value.\n", " \n", " >>> M.eigenvals()\n", " {3: 2, -3: 1}\n", "\n", " In fact, 1/(1 - M) is mathematically defined via the analytic continuation \n", " of the series expansion 1 + x + x**2 + \u2026, which is just 1/(1 - x). This is\n", " well-defined as long as none of the eigenvalues of M are equal to 1. Let's\n", " try it on N.\n", "\n", " >>> matrix_func(N, Lambda(x, 1/(1 - x)))\n", " [nan, -oo, nan, oo]\n", " [nan, nan, nan, nan]\n", " [nan, nan, nan, nan]\n", " [nan, -oo, nan, oo]\n", " \n", " That didn't work. What are the eigenvalues of N?\n", "\n", " >>> N.eigenvals()\n", " {1: 1, 2: 1, -1: 1, 0: 1}\n", "\n", " Ah, the first one is 1, so we cannot define 1/(1 - N). \n", " \"\"\"\n", " x = Dummy('x') # This works even if func already contains Symbol('x')\n", " series_func = Lambda(x, func(x).series(x, 0, n).removeO())\n", " return matrix_func(M, series_func)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_func_series(M, exp, 10)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}\\frac{22471}{1120} & \\frac{14953}{448} & - \\frac{44859}{448}\\\\0 & \\frac{22471}{1120} & 0\\\\0 & \\frac{14953}{2240} & \\frac{83}{2240}\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "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\ngg==\n", "prompt_number": 27, "text": [ "\u23a122471 14953 -44859 \u23a4\n", "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5\n", "\u23a2 1120 448 448 \u23a5\n", "\u23a2 \u23a5\n", "\u23a2 22471 \u23a5\n", "\u23a2 0 \u2500\u2500\u2500\u2500\u2500 0 \u23a5\n", "\u23a2 1120 \u23a5\n", "\u23a2 \u23a5\n", "\u23a2 14953 83 \u23a5\n", "\u23a2 0 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500 \u23a5\n", "\u23a3 2240 2240 \u23a6" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_func_series(M, exp, 10).evalf()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}20.0633928571429 & 33.3772321428571 & -100.131696428571\\\\0 & 20.0633928571429 & 0\\\\0 & 6.67544642857143 & 0.0370535714285714\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 28, "text": [ "\u23a120.0633928571429 33.3772321428571 -100.131696428571 \u23a4\n", "\u23a2 \u23a5\n", "\u23a2 0 20.0633928571429 0 \u23a5\n", "\u23a2 \u23a5\n", "\u23a3 0 6.67544642857143 0.0370535714285714\u23a6" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_func(M, exp).evalf()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}20.0855369231877 & 33.3929164246997 & -100.178749274099\\\\0 & 20.0855369231877 & 0\\\\0 & 6.67858328493993 & 0.0497870683678639\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n7F3LwaQAAAAASUVORK5CYII=\n", "prompt_number": 29, "text": [ "\u23a120.0855369231877 33.3929164246997 -100.178749274099 \u23a4\n", "\u23a2 \u23a5\n", "\u23a2 0 20.0855369231877 0 \u23a5\n", "\u23a2 \u23a5\n", "\u23a3 0 6.67858328493993 0.0497870683678639\u23a6" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_func_series(N, sin, 3)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}-1 & -2 & 0 & 2\\\\-1 & -1 & 2 & 1\\\\0 & 0 & 2 & 0\\\\-1 & -2 & 2 & 2\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAJgAAABkCAMAAABNTAlxAAAAP1BMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFBd4eAAAAFHRS\nTlMAMquZdlQQQO0wRCLN3bvvZol8bJK+89UAAAO3SURBVGgF7ZvtlqMgDIZRqJ0dtR+z3v+1Lkir\nJpKEzHA8zh78MW3lDTxGxL7NaJpp3lpzkm2MPMY0k3V+u5yEyzwCTTsFsOYsTCvHQwK7datYetdb\nO9w+SVXnT4ylcwCjBbDuNuWD9WGWuomcEqNn7kaKDEWzYF3btgqwdj6G0Z+D5ObGsNsNyUZjUDQL\nFvpRgN3vgaydiJM5zpf959SnyVB0SbBhPghLgU02EDXUqUbRJcFiJkYix/30jGAu6tJ/l+jiYE0c\nfz/sAjbz7dvnPWt0cbDhRoyZBbZGA7B+GNctTmFu8ifkxlJcZgFjTuUmGoAljpUDS8mZG+578j8S\ncXGX20SXBbuEC68n1oO4XFyo5cIYEF0UrJkXhAcBFhfY57zMppIGo0uC9ePTb5YcefQ3q+5O3pJg\nNA9m7X0aLD0p4IG/vkeRYJ19upbiMiiaB4MDH/qpgmnTXTNWM6bNgFZf51jNmDYDWr04xzSG1w/O\nyaGjTZFuogUwleH13x04f4wc7R4MRLNgSsMryJGjxWAomgXzsdqv1oR3CxTI0WIwNNiBYMjRngcs\nkiyO9mRgq6M9GdjqaDVgCQfLTX6lPJBsHG0G2HW6JlRxFweWCBLkW0crRH8JP3UKI+HeeTlwtDjU\nf95GH7hcGOhozwMm+WFNxnSG1/By5Gh3GYPR0qnchR+1o4JpM10zVjOmzYBWH+ZY5/ILWdr+v63v\n/Y/bv7Ne+e1D/mHgL1suhFosTkamXDC8sJd0xvhaLOYyeXLJ8MJekmBCLRaDZcoFw4t6SYIJtVgM\nlikXDC/qJQn2LkeRZXeIlikXDC/qJQWWU8DboOnklOHFvbBgXC12JVu6zJGThhf3cjQYaXhVYEwt\ndk1YVun2LacN7wL2GjRk7Prx5x0YX9/zMLPsli/nDC/q5e9H4iYu1mLhcWTLWcOLeknNMSPVYiFX\ntpw3vGjQJJjha7GIy2TKJcMLB02D8bXYHVieXDK8sJc02G7o43dUMG3Oa8ZqxrQZ0OrrHKsZ02ZA\nqxfn2KboKvYtOFpVswAGiq4SmOBodc0sGCq6SmCCo9U1s2CeZFtFkcAER6trLgkmOFpdc0mwmFHK\n0b7yndtcHIx0tBEsu7k4GOloI1h2MwBTlmwTcqGEq2gGYK9psH3RXJU+jnO0uuayYKyjRf+zvD38\n+B5EFwXjHa1U4YXRJcEER6tr5sFg0XWffLhHcLS6Zh4MDnzopwqmTXfN2H+WsZM+kdqFJ0CdI56l\n056Dn+vnJ1KdM/8A0rpFHAD89/AAAAAASUVORK5CYII=\n", "prompt_number": 30, "text": [ "\u23a1-1 -2 0 2\u23a4\n", "\u23a2 \u23a5\n", "\u23a2-1 -1 2 1\u23a5\n", "\u23a2 \u23a5\n", "\u23a20 0 2 0\u23a5\n", "\u23a2 \u23a5\n", "\u23a3-1 -2 2 2\u23a6" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_func_series(M, Lambda(x, 1/(1 - x)), 100)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}257688760366005665518230564882810636351053761000 & 644221900915014163795576412207026590877634402500 & -1932665702745042491386729236621079772632903207500\\\\0 & 257688760366005665518230564882810636351053761000 & 0\\\\0 & 128844380183002832759115282441405318175526880500 & -128844380183002832759115282441405318175526880500\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "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\nhpAAAAAASUVORK5CYII=\n", "prompt_number": 31, "text": [ "\u23a1257688760366005665518230564882810636351053761000 644221900915014163795576412\n", "\u23a2 \n", "\u23a2 0 257688760366005665518230564\n", "\u23a2 \n", "\u23a3 0 128844380183002832759115282\n", "\n", "207026590877634402500 -1932665702745042491386729236621079772632903207500\u23a4\n", " \u23a5\n", "882810636351053761000 0 \u23a5\n", " \u23a5\n", "441405318175526880500 -128844380183002832759115282441405318175526880500 \u23a6" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "M.eigenvals()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{Bmatrix}-3 : 1, & 3 : 2\\end{Bmatrix}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAIsAAAAaBAMAAAB1DbIqAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMplmq80idhC7791U\niUQ5geeaAAAB5UlEQVQ4Eb2Tv0oDQRDGvxi9u+gZ8wKCRCxE0PQWBlSwi4gIouApNmITsLNxa5sI\nYicolhbGQlBQMPgC2lhYBPMGFuIfSCTO7F7uNtkohoBDcjfftzO/3b29AxAZRDvhjqruaa8dCrCx\nx/32Z3sU4IQBnbMapr94qCnEhK4ojxSfCqFlJRdLpA7Y0THWAF6ybKpwjkQt9e9riH+E1jrsCqlp\ndnRMbwV950GZM5URgVDJcwHl0JoBbkkZGLcOA+yIsEdm93WYU4FMqQmGSvVNmRjUbWpFYOwHzLyc\ndVceYjNMV5oL/HHalPBXE1MdPEgn8ZiW95x6Qsam0K+m8ccR+aJy+Wy6s7KxdtkuceYoaWJgn2nj\n6OI1TAjAYry1dM1RorRbfxubYJCnpiCGOetYAMYTgUe4BGKvmjYwq8BRKiyw0zLfzMK9DF3kPn/H\nOFVRh7mD5QHRG0LkNHrfLHreNSyvhn5hvNHZeIGMDCDqAff0h35SdgovD+QhPCmnzLoWW4jz2fjj\nm8XiCAnjLcZdcll2qPcimZ9LOXlPOuriJocKnKnx22qVJzExXNIQca/BMOSfMFGjrdH4T0y2cXJD\n/2k1RpdhSEzvseG3aFxwvaO+2RZbtfKOKymik5rXeurut97zU8c395Nyc2G4mDsAAAAASUVORK5C\nYII=\n", "prompt_number": 32, "text": [ "{-3: 1, 3: 2}" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_func(N, Lambda(x, 1/(1 - x)))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}\\mathrm{NaN} & \\tilde{\\infty} & \\mathrm{NaN} & \\tilde{\\infty}\\\\\\mathrm{NaN} & \\mathrm{NaN} & \\mathrm{NaN} & \\mathrm{NaN}\\\\\\mathrm{NaN} & \\mathrm{NaN} & \\mathrm{NaN} & \\mathrm{NaN}\\\\\\mathrm{NaN} & \\tilde{\\infty} & \\mathrm{NaN} & \\tilde{\\infty}\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAPQAAABkCAMAAACGl+2PAAAAP1BMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFBd4eAAAAFHRS\nTlMAMquZdlQQQO0wRLvv3c1mIol8bDogkc4AAAVESURBVHgB7VzbgqMgDMXrzFardpf//9ZNQJRb\nEHHWrpY+zKAhHA4RpEcbVnDxKdkHfJ6SK2MFr2r4NB/AmY3ItORIuvgEvivHUSNdlB3vW7SVPX9W\nayVGW7RKdrF4Phv2eNin/cc0Am3xtyTPBsF10hDzjsuZ3Q5Wi7TFqrgctjWbyr5ejrcKNAJtIdsM\ng1ukx5LLqa3HGZsuSAsJvNNAI9CWnRCquk267eUF7pKmLKqlo/+LkUKgLYmYNmn24B025ZKmLH7g\nVqwNwjb5a9hni5FCoC12G/PxFrhDmlV8BF9JGhb46iVaAmDDQsAp1K7nvXBsq66amwi7wAQyEVKx\nWbsJ7pJmTw6xEaSbJ5bEmoZd0iwbBDq4B9Z8aFk74Oo9yYELO1kIydhsG9xDuuBAU5Ae8Qb+wDEQ\ncYAburKE+1+LK7oB1oPcATTiRNhJkF4RUrFZBLiHNHvxWs3px6t+ia2L6JJuCTGY71M17/H6wE/E\nnctBSMNWUCFwH2m8jEWkp6Fs5/2a7NJikVSov4piJ5aHXaQXhFRsRZoFwL2kp3k/NuB0hk0qrIYz\naWWh6MrzC+lebXDVmYCfhZCKvZKmwb2kYRHC+1YLlzljDS8ehSI9WwJ9R9Mo71f1a5q3tWPsnAbn\ng9gx4CbpRi2zg7hZ97gnhTkN65BlQWqBj5gcNXg/eA/LdyOOA/XRZCEkY8vlKAiuk4Y9Lu/kLnQS\nW/Cpg++c7WuoHcsGgamsqkEsYlPJ+z6Cs4OQjA07/i1wnfQGk13mrU3Rrsb2Vt4C/1ek9/bz1PqZ\n9KnD/UawHOk3Dv6p0DnSpw73G8FypN84+KdCf3ykaVmdtqwRouvQljd5m5GmZXXaonX80KMCGoG2\nJGJbpElJP0Zwp+vQFq3b52HbpI8I7rQoT1t00qdh26SPCO4g+Bx4VHCit0PakPT3Ce6ocqU/KjjR\n2yWtSfo7BXfs9iW8PaSTBXdB+greHtK6pL9LcBekr+CNpL/417yIym6nCu6X8f6tvX4xP7GCB25p\nYv9M+v/39l3eqYL7TDpRrj/R2yR9THC/jLdOGva4B8T+C3nrpNct4c1LmfTNA7zQy5FehuLmhRzp\nmwd4oYeRbuv19b7FcOfCBK+VfPT73ncOrsHt4xcyWpSnLesI0nVoy5u8zUjTsjpt0Tqexf51MFCc\noH4xsNai69CWRG8r0oferqclfdqidzuL/eto4CuaxEOEtRJdx2OxI30RuX5lO5dQbIp+0OCSvoRc\n7yUd3XMP6SvI9X7SsT33kL6CXO8nHdtzJP31/UubGVBMfLMf59UlvP9861845m7//3K9GF39z66e\n+y7vLPbDPIl9sz+L/fBEbM/vAk59VGBe3vosuXE5k75xcA1qOdLGcNz4IEf6xsE1qOVIG8Nx44Mc\n6RsH16CmR5oW5WmL0Zh5EMykY1aFr7c/m0KIBcF10gB9SK43iYQz6Zh18egnseFBbCiHkEWaFOVj\nBHeXyJ4zNAJt2dO+VtcmfURw15pNKNIPBGhLAgy62KQpWR3kmE3BXe/C1u+29bqyTCPQFrcVcWYL\n3CEdL5kTiHh6O5OO64wqV7Rc77qvZ7bBXdLRkvkK45S2M+k4LjK/xg+kEMppfHBs3RxCnkjHSuZu\nsNSZOZVLKJOOqrr+x8sbE4wcTCGkkruEwH2kU8X+hYDKXxPIpLPUXQqS9GFsRTqn8VlGVha8kU58\nN39pOqfxyWl8lovBLhwT+43Wchofb3osc04bI3bfg0z6vrE1meVIm+Nx3yMZ6Q/M5N5idvO6jszE\nfe0LQGRyr2v2F9EolM42ZqoDAAAAAElFTkSuQmCC\n", "prompt_number": 33, "text": [ "\u23a1nan zoo nan zoo\u23a4\n", "\u23a2 \u23a5\n", "\u23a2nan nan nan nan\u23a5\n", "\u23a2 \u23a5\n", "\u23a2nan nan nan nan\u23a5\n", "\u23a2 \u23a5\n", "\u23a3nan zoo nan zoo\u23a6" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "N.eigenvals()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{Bmatrix}-1 : 1, & 0 : 1, & 1 : 1, & 2 : 1\\end{Bmatrix}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAQwAAAAaBAMAAACwWn+SAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMplmq80idhC7791U\niUQ5geeaAAACdklEQVRIDdVWPW/UQBB994HP95EQ5Q9wgNJAQ0WTJihJDUI0iOZEQUsKJMpYEQ1H\nASU0QAlVrktBEkV0dBFNKqRU1EgIiMTHsTM79s6uzfkiFCxWke3Z92bm7ezO5gDUzqPS8faQ068O\nKlWB6Bnlbx1VqwLo9I2C5jUto5382TLIxv2zE3HgqcYDy0C3F55rArPbpMCTEb9IFMu3CNjFozlH\nyON46NXWt4xjtIT1PRfA4qxAy4hXriaO5Fs03xqh5YqXx/FgRcvwLQrQTND9RB88BM/JANYTofDL\nt4DuEma/KkKIhyctd+46r9D85QJY/NgyTvdR++GiBKIJ8BP7loFPHaE+vYz4tc0VrvbuPmrfCBo+\nYUKIZzIEz8kwXl3aNkmgqtG2ETlsuinxd2uGaUjGT4Iej5gQ4pkMwYtknNk3rpJAyeiscUR5SODE\nmmGaTEZcjGcyBC+ScZNdbQKLN0x9ohtmOrr1hsZhWg1mmkeRDN4UIYR4JkPwAhl1XXzBFwZYnEtz\n8tsP7FsAHdHPih/iU8i4p9zTAx1tobel54P1h2lMw/b+qmHR6+OOSyjVWNwzp+2Smw63gWSYv2yY\n62tmlFmWnSi7qBpyTIQ1D1x2DlYGr6ykU9Kmsb7bGPImuk7x8bTMqlPk0/pHOx/e0zrynaIvc5zb\nvE7FkbYmK94c2Aj83Di4wm97L+Tx+oUv/OvF4mwN9S52x+Mxy+CLSdgFt6hKKZ+zg/ycninD8VGz\ni76nktEo8lRzZTiovBPH/yRjbeJKgDK8VeIvv3i8I1rqchIEVjDz8iRCHyemuRRNc9I/lUrHxYTS\nN5YrFYF3pa30z/T9BlpbuVQBNRoeAAAAAElFTkSuQmCC\n", "prompt_number": 34, "text": [ "{-1: 1, 0: 1, 1: 1, 2: 1}" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }