{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " 線形代数(Linear algebra) \n", "
\n", "
\n", " cc by Shigeto R. Nishitani, 2017-10-31 \n", "
\n", "* file: /Users/bob/python/doing_math_with_python/linear_algebra.ipynb" ] }, { "cell_type": "markdown", "metadata": { "toc": "true" }, "source": [ "# Table of Contents\n", "

1  sympy
2  行列,ベクトルの生成
2.1  直接的に
2.2  ゼロ行列,単位行列
2.3  行列要素のとりだし,追加
3  行列・ベクトル間の単純な演算
3.1  次元の確認
3.2  転置(transpose)
3.3  ドット積(内積)
3.4  外積,outer, cross
3.5  スカラー三重積
4  行列操作
4.1  掃き出し, LU分解
4.2  階数, rank
4.3  行列式, determinant
4.3.1  課題
4.4  逆行列
4.4.1  課題
5  固有値,固有ベクトル
5.1  ベクトルの規格化
5.2  対角化
5.2.1  課題
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# sympy\n", "\n", "* [sympy tutorial](http://docs.sympy.org/latest/tutorial/index.html)\n", "* [module references](http://docs.sympy.org/latest/modules/matrices/matrices.html) LUdecompositionの記述あり." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 行列,ベクトルの生成" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 直接的に" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZiK7\nRN38cqFhAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABPElEQVQ4Ee3Uv0vEMBQH8O/FK1TjtSf+2PT0\nFjdBEBzvwHPv5KqL52a7aNf6F+jkel3FRfwD5MBV0c1V/AcED11EY4QmfQ+amx3M0uZ9eHlpkgYt\n9YaKJpRqYra3XUHweltNzFXJb6xeaTK965a2HtHsHYgvY95BzGwfmDEGnDJbAuKurcdtELlN136N\nHHlAQ6+H+QY+JhDsuS3Vwzry/MRtm5BXjrx6At9lN+3VQ1vvuHWe6wqmDZT6tmaC7GnmyYJF599w\n3b7lK6N3otgjmaCTMwyGxvwRwmdmJ9Yai9g9oyYvrOkwH1NMEvNeaBouicm1I2peRgxYeSQowKw2\nT2yDmD6M06PSvGVi4TuziX4/XsiKdakNEXyWefpNRwqbytHJmIXW8JTeMxIPH7n9H5gUnT92Psfd\nkWPu1h85h1EamwQVaAAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 2\\\\3 & 4\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 2⎤\n", "⎢ ⎥\n", "⎣3 4⎦" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sympy import *\n", "\n", "#init_session()\n", "#init_printing(use_unicode=True)\n", "init_printing()\n", "list_a = [1,2]\n", "list_b = [3,4]\n", "A=Matrix([list_a, list_b])\n", "A" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAyBAMAAAC0bgabAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhB2qyJEZt3N\nu5lcG7FTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAyElEQVQoFWOQ//+JAQz0/39kEHZxhXBCXAwZ\nRCBMEOlIHU5YemdSAtQ0VgWubdwHoBymAKavzA0wGQaeC0A7YZbyJyBx/B3gHOaAfAa2AKiy+Qb3\nGbqAUmCHhqeFvVoA44DUgwCVvAAxbABNY81LYGiEeZuJWYAhH+a5Zr4DDHdhnADGBIZvMA7D/AaW\nL3DOGwY2ATjnOgNvAZzzlmH+AjgnXO19A5zDwPAGyIZ4m/0A6084h3sBbwKcw5n2BMTGGzooSQw5\n8QEALm87XfZ6oCEAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left[\\begin{matrix}x\\\\y\\end{matrix}\\right]$$" ], "text/plain": [ "⎡x⎤\n", "⎢ ⎥\n", "⎣y⎦" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x,y = symbols('x,y')\n", "v1=Matrix([x,y])\n", "v1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ゼロ行列,単位行列" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFUAAAAyBAMAAADfKoqLAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrur\nRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABHklEQVRIDWOQ//+JgQjA9P+/AIOwiysRShlY\nXZwFGESIUQlSwwJRG6augqIDjc+aVOQAV9vMELkAWTEan8OAdRZMLbsAA1MDklp0fiEDgwZMLfcB\nBuavSGrR+XsYGOwDoO7lP8DA+xlJLTr/DwPDfQOo2vgEBt5/SGrR+KzfgGofQNWuV2BgQY4QND4X\nUM4fqAQcZusT0NSi8rmA5sLVotnJgMZHcQPQL8xofkPh/wGGA8xv3BsY2FHCDI2/m4GhHhZmwLBn\na0AKB3Q+MC4yGKB+Y5jMEOiApBadz2nACkxh0LQT9O4IslIGND6r3hugUVC1KApxcUbVQkJmiIYD\nWtnBgMYfLUvAsTtalkCz/2hZglwOkpjnSWkTkNDWAACNI4zVcBPhcQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}0 & 0 & 0\\\\0 & 0 & 0\\end{matrix}\\right]$$" ], "text/plain": [ "⎡0 0 0⎤\n", "⎢ ⎥\n", "⎣0 0 0⎦" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zeros(2,3)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFUAAAAyBAMAAADfKoqLAAAAJFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAADHJj5lAAAAC3RSTlMA74lUMhCrmXbNZj0HdO4AAAAJcEhZcwAA\nDsQAAA7EAZUrDhsAAACVSURBVEgNY5DevYmBCMC0e7cAg7CLKxFKGVhdnAUYRIhRCVLDQoZawwBU\n09H4zKJwc1nTs1HUovPDyrbC1TIwdKOoxeBzjKoFh/tgC4cy6WkLwA6DEmh89sSdWeSlM2RDcbHJ\nSb+4zEIWHzUXEhq0Dge0soMBjT9alkCiYbDleVqV1WhlBwMaf7QsQSujSGkTkNDWAAA4QlTBhcEl\ncwAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 1 & 1\\\\1 & 1 & 1\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 1 1⎤\n", "⎢ ⎥\n", "⎣1 1 1⎦" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ones(2,3)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAMAAADDCbAzAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRO/NZondIrtsRPdGkQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAiBJREFUWAntmW2T\ngjAMhMurngjq9f//12tBSzYlzWXknLkZ+GJhyUNZCl3BVX5earfTclt4zlW+acPS7cR1Y6TVPoKr\nvZgrZ7SA+2YaJ7kTIDNwN/TrQbPWNbjV3+7Z9ucGkCm4r5vaF8DjEAnTVQCjTMGhoC2BH/O46aRd\nULaA/Qy+eGH4oGwA976JJlx8u+kFkw3gu58isVp+MjiTTeC5xzIYZAOYnSvvMpMNYLdcna588V6y\nBfx4xF6O4nAD2QJe7oCmfIO8ZAvY3eItPYgPC5AB3NSDv9YjvyxpvZ/C41DkOpABnAg7NA5wMvGw\n4rAiOZAanxkVkDjSsX/dgHLoMSSOTV4x0EA5BWPiyMFKoMFyCsbEkYPDllKgwXIKxsRhBmM5AbNp\n1gpm5QTMEocVzMoBDInDDoZyAmbnYgWz8gg+nb9mihJI4j6lUYHl3+f1P4gSSDQwlhMrnBJINDCW\nU7AWSBQrsBzAkDhiB9miBBooBzDjvLV6gJN9hxWHFcmB1PjMqIDEkY69NjR93TP+HVyfxw4SB93r\n2dZ0R/IMBWPiyMGKjnmGgjFx5GBNh5mLgjFx5GBNl8Bsms3Amh4KyFxLeswSRwbW9AIYEscGuKyL\nYO1UNV0Ea29QVF3y2GHiyKxQdRGMiSMHa7oIxsSRg1VdGG7htUz5DYqmQ54h43iji29sOsDJvP9q\nxR99YOnjB5G2vSR/3mzMH1ja1v0A4UooEMbFTswAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 0 & 0\\\\0 & 1 & 0\\\\0 & 0 & 1\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 0 0⎤\n", "⎢ ⎥\n", "⎢0 1 0⎥\n", "⎢ ⎥\n", "⎣0 0 1⎦" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eye(3)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAMAAADDCbAzAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRO/NZondIrtsRPdGkQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAArpJREFUWAntmeGS\noyAQhFHQ29MIerz/u56A4PQgUqSyW7VV+iNOaPjECUpDRGf90YsPHSbwhOisVPsxfIgrFkfrrQN3\nn2KenKUFPEq96HInQGbgYR7Pi2bRa8/WaNas/CgAmYLHXvb2BrzMjqBfBTDKFLw3UHfgzY+boVQF\n5Raw9eDJFoYPyg3g0UqXhMmqy1wwuQG8Wu2IXThlcCY3gX2Py2CQG8DsXnmXmdwAFuHXGe5/vCi3\ngLfN9XIpDjeQW8DhCZD3D0iUW8DCuEd6Lr4sQAaw7Gf76hf+s6Tvo95fh0WuABnAifCB4AGnJD6p\neFKRMpCCnxkV4DjStc9glXLbbt4V1M9Aj8FxnLwYjW6W1naK3/kZmlMwOg7eTIjem5nZ25ZcFdic\ngtFx5E1n48r6koXE5hSMjiMHv/ykVARjcwJm02wODiWmMOex5gTMHEcBPBX8imDNAQyOowA2pRXF\nGhxY9DMEzO7lGiz9xa801tyB/3z99TUrhsTVUUWuYH7m39e5BqkYkp07OO5asPTYnKTiGOHRcbgO\nsqPz/VUFMPoZCq4ZktVorWXvHxN2Sf+1bFjAceRNX2FhWARDc+hxznq/5AGn3D2peFKRMpCCnxkV\nNcNS0df9HbXFrQHoMTiOdFNncK+v7qU62GPRRcHoOE5ejCq68mthe7z8KBgdR8Sd54o+zbv5Gu2x\ncKVgdBwnMEY13dW7SgWbZiMunWu6qzgav1myR6THzHEkYAxq+j7NaiPjLhiA/VwZHUfkpTNzJKkc\nAu0S7Q4Crt1qTQ/A+dgSJGDmOEI9+lkxNMFvbMcGDAWj46DIEFd0623oFRgdRw6u6LPfujE2+Bna\n45phqeiLe5iHuN0HYHAceY9xCyXXJ7mvquLSB8B53fdLHnDK3W9NxTf9wTK6P0SUiiMwpendwP/B\nopT4DxWtKn8oVmeOAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 0 & 0\\\\0 & 2 & 0\\\\0 & 0 & 3\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 0 0⎤\n", "⎢ ⎥\n", "⎢0 2 0⎥\n", "⎢ ⎥\n", "⎣0 0 3⎦" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "diag(1,2,3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 行列要素のとりだし,追加" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAkAAAAOBAMAAAAPuiubAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAzXYQMplU74mrIma7\nRN0SDTw+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAATklEQVQIHWNgVGYJY2Bg//+/gYGBsVOLgYGB\nE4jh5G5VBwYGHgOuv2DBc2AyfgHDRAaG/gsMhQwM8QYMAQwMDxkYljJwVzEwcEVMNWAAADWrDnXF\n0pOGAAAAAElFTkSuQmCC\n", "text/latex": [ "$$5$$" ], "text/plain": [ "5" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A=Matrix([[1,2,3],[4,5,6],[7,8,9]])\n", "# i行j列の要素の取り出し\n", "A[1,1]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhAimburRN3N\ndmbBWFV7AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABf0lEQVQ4Ee3UsUrDQBgH8H9br2m0Q6UO4mIp\ngjqIeQTRSkezuxQHOxpBsQUXQcHN+gBKfAKLiwiCwVFwtaP1AVQQ66DV81rz3X0pxdnBW5q73/3T\ny+W7YFy+oE+LS5lBtrDYhyAKCxmM9JPO2MCPlSu7fEYyP+WQiRpmfYZlJL7IbBexDLN7Bx9ksTrs\nV2YnvmiTpVtRA7unigy1WA5YzlFODZ+qjmkr5y6zCwOdq/iYMcuLGoZdenY0IrQKHDhkCQ+qr5t0\nmRWBOy3AKHBVCnPJs3y1zuwJiU9aS1pKyW1wq+KTsQi7DN8RGzGX/4Zbt+iYDVGvfWZC72fPeRE3\n2NZ2fVTisZSHfW01LqroujPDve6xne7U0I4fN3iyPd/w9T33sKY61ES7iaw2IMVqQqg6Wzf1CeuN\nUupXHbBnP6wzO0D8ndmlsmZosQAWP0eHLGepMxaw3JL6P1pL0sNDiZmdE2ad5elNRsBkdY5ykXHd\n+WP1+ds3sqdW6BE639Zv3Nlc+klUxn4AAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left[\\begin{matrix}2 & 3\\\\5 & 6\\end{matrix}\\right]$$" ], "text/plain": [ "⎡2 3⎤\n", "⎢ ⎥\n", "⎣5 6⎦" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A[:2,1:4]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABoAAABLCAMAAABZRmeuAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRO/NZt27IolselnTNAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAQZJREFUOBHtlcFy\nxCAIhlHRbteYjeX937WiRscQZnrrJZwSP/lRVABD1SwM29sIgCGHxfwgkPjfEiMzR+dX+jvyMZx+\ni1ewztI9KvPxQSPzzkbabGpZXHJ4JvZBayb4TybKuD5Lov2jIYwaOtKmoQwaSoeGAoKGclncvaDn\n17mgr9d33Upgp4l+XvMte8tG0ZaIxWQ21C0DkLrlD1G/o1KwxrmP9aBeYM1uXWarGVlymFqhpla7\nF+SOOr1X9QU1odzlF1R93u347y7AecjybuRehqRXKC2h2zUWbicRguPhCcHQt8uuF8HSrzRBr6Mj\nzgZ3ERxqMtb/IrVlB27QiO+5vNqyEeEXlVQXSGZRLssAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left[\\begin{matrix}1\\\\4\\\\7\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1⎤\n", "⎢ ⎥\n", "⎢4⎥\n", "⎢ ⎥\n", "⎣7⎦" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "col_0 = A[:,0]\n", "col_0" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFIAAAAZBAMAAABQnWQHAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAu90iMpl272bNiRBU\nq0QwBS8SAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABFElEQVQ4EWMQUjJgIAz4lLQYFAgrA6uwJVWl\nK4rB0za4HkAW4Fq2hIEBaqYisgRD/f9fyHzueQyRMJVshcgyDLOuoXiSMYBBEKbSYiKKygsoPIb3\nYH0Q2xfgVSkO1ghWyWGAqvJGWwiyqT+9Uh9Abd/GgKpSmsEeKAUD3D8bGGqgKhegqWRgYFSAqWNg\n4P6/gSF8AziUeBwwVLJ+Rqhk+MTA0P8ArHIXA6pK3gkMXP+QVGoCVTaAVZ69e/f7NSQZ9gkMrL+R\n+NfhZgIFC5EkGFgZGJgmIAn4A90J9REDw0ckCQbmAIZ25EjiXcAN8zvDwv83kJWaro1G5jIsjXWA\nm4kigZ1DcvrEbgyK6NAxU4nI/K4LALy8QV1O9bHHAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}4 & 5 & 6\\end{matrix}\\right]$$" ], "text/plain": [ "[4 5 6]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "row_1 = A[1,:]\n", "row_1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "numpyではcolumn_stackを使って拡大係数行列を作った.\n", "sympyではrow_insert, col_insertを使う." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABkCAMAAAA18wfQAAAAP1BMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFBd4eAAAAFHRS\nTlMAMquZdlQQQO0wRO/NZiK7id18bOsX9RIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAObSURBVGgF\n7Vphc6QgDEVAtieC2OP//9ZLCLgihtadnZt2Rj50FeQRHyF5YMUQU5HiTWUlPCGGqDSU8U24wiGa\njAg8vAvzieOuAHulloU3wocQlvLeB+DRmuegxyuDsxDidKzP917BxRgd3e6BjVQydoBlarOWAdYR\nrY1rCww1ugdsUx/Jzchk4V1MnK8Dz2lUFjgBnlLxlcVkytp7KbMGekrsOf4W8BRL14yw+/FhVWWO\nLgOv/QUakGgsV4EV+lSv2OywF4F1B9d7HHBJTnfV4hFxCaC1OqZZfQl4SPbqZFkLbBesWyM1X6HC\nrxAMlMxLq0F2uJjHqKmhAlbSxlnmxd50FDPFWQ5YTAqCVIkkFXCL9XrNDbxxd1NxU7ExsF38P6+g\nCLYNXF3M2ohBFUlSNdFNCDpkQdNYvKbgd9IJqixGIT7lmRkikDpP/0JTVD0HnoPkgjF2WDBcL9mw\ng8XezR2L+3l0yiGejDoAB/E68FJprxrY+T6wc1qxajPOQ9DqNNAbSCs9ixdQI55Tm6DaMPfY7DSV\nxTjhPeDE3sKkJkNZWp3oihHf8ktgVc1RGov+kIB1+Y3Q4kd8YJNJHtoBlslFWeW9pmaXlffnc6sw\nSizRypzAd8bQpU09Fac2ZfKKvcXV5qazQEhekWHNqLhHQqWpstNVk4dPR36BpE2Gs4wQEkICl+bU\nK2DrssTIKxavgtwE8InNQSlZ3Lyx+OT5l6pu4I22m4qKCgM58u3FQ2ColvS7RvjdkzesUsG+KLDK\nwWgdtqTWcmagtywhak+Fo11RZLN8ipuSU0LGQs7zJfjtgRWNxuKOaaPms9RpLKZALylqV5t0oqCI\nr6YjxFSsM0wyFXS2EiAlYdlbnComLjEJMUXM/4HZYBpKETqf7DTAfAKBFBGj43BBUVS59gjM98P3\nCTHO7ColEuacpQ/AJjOUWGn+jHJaYzlCaVrFDCyOgTmv4KYcYRz6i478mR8cag5hx/Hj408Zvie7\nBbnokE0qXQ6/5Ujw78c+CBl+ceBZHWHwWRzb57wMao7hwPdgwP42L6qlrNp9G1wnxTEUZVcDj13g\nKXmE4xxdQ7NJUhZHrIF90TEHY/LtAEGqE4RArzxba+BzvJdqb+CNtpuKm4qNge3iZ3jF/UmoTMj9\nSagwQb/3J6HMx/1JiIi4PwnVC+S7dz8j0H/XWnzut1qcNtHsVvcKA/js9h8hsKnHUs6qr+I0z6f/\nCNFa/AMxQDWlW06BHAAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 2 & 3\\\\4 & 5 & 6\\\\7 & 8 & 9\\\\1 & 2 & 3\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 2 3⎤\n", "⎢ ⎥\n", "⎢4 5 6⎥\n", "⎢ ⎥\n", "⎢7 8 9⎥\n", "⎢ ⎥\n", "⎣1 2 3⎦" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = Matrix([1,2,3])\n", "A.row_insert(3,b.T)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAABLCAMAAACMVLPjAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRO/NZiK7id1su8c+aQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA81JREFUaAXtmuF2\npCAMhRGQdlUUl/d/103CdmaIXLrTOfb0nJUf01FHvhAD3MSaIUuz5pvaXnjGDNl5auM3cU1kms0M\nHr6LeefEZ8Crc9uGjVxTStu/+k2DxzncrVLfAkdBypM6/XG4Ovo25vhxfPz72HkFDtbZjMFWLs3z\nsUc54zOPNu/gsuq8AtMtvgOepU+LImKayRchLwCsOn8GvIhRECzArqsfR/UMuAxl7/jEhD3hAVfu\nfBo8Zdz1mnaHQ6R+jk+D9/4Cl/hBo/aKqx3PmV6bO/PxBbDvcNeVDdpkUrVN+zp4ZG4BHLvOEnWn\ngAcZr5eRHcHzxuf2DC7Tta+OeN1pMXYWLU2RF8sxe8a3GwY7O+fFotV2KfsoApvJ0SaCg7ruXE+n\ntqknnL3AJzi13eXl6rZfTjh7ufoEp7a7/EGuLltQ08zFBzO4jmRPySco+Ot04DjiXXa3JnjmXQJL\nrrDQDuGQvFXpwAHsy7baBC/Jos2Yf7/xdr0hu1U6oMFrXNCdxvR13tSRAGSRSgc0OJkvgzeU27A3\njFHpgALHtQuO0TsYPHkZkndYCAj+lg7U4EC6pTPijdT6irJFyppYusydoDfmng7UYI7YDlhs3oD0\nCUVluo6uJil4C5MKPLIbPwM7FEMlQY3II2z1QzrA4Lf3XzKWIFMUg61MUZiZ73I5djLzx3Tg9/u9\nBjJabnm2QKHO0rND2aKVqO6MuEoHKlfLuPECUtKXMjD5af0xiEUOTqo6HTiCM1xApMgRZ5gpWHpU\nAUa1Sgc0OG05Q0W/umR7CXByzsJprtIBDa69d+LRBT7RuXXXl6trf5x4dLn6ROfWXf8MVw+7dVTY\nSUg6B+9TR1QFutnCLcTUBfxqxLGUdfJNn9TeMbIvWiSqwkyaa4WblyrgV2BXzEXcUepQK0oVihCw\nZddWJtOhKuBX4OJimP0k2akDEHum1OYTaalmUwX8Ciw3TED4sDZlfZtA/S0UBeHRmwPp/F7AP4Kh\nAKEUJueIuKSo+1qQwQ8F/AMYd0w3ppwXWIIvTl6wyqwK+Boc0CNig0c77RmX4Bd6SGPq1KvJ8tvd\nGuxRzBI3crj7jFMFemk4pO4zNrcCvgZ30nJTpujQHRLFAXgWqoCvwAEuHvwui91NIQbCulxd0Cqg\nCvgKTG90y/2tz7+L0gZWRVHcA8qsjCrgK/DYA08S0RHNc0+Xg6SqLauNKuAr8AoTAe5soD2ks0mQ\nnu9cVQV8BW7aesrJC3yKW1ud/q+uFsmDlpyWo146d/sHFNJw3D4pjb3Eqm6Wf0Dx3vwBoZovKPng\nijUAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 2 & 3 & 1\\\\4 & 5 & 6 & 2\\\\7 & 8 & 9 & 3\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 2 3 1⎤\n", "⎢ ⎥\n", "⎢4 5 6 2⎥\n", "⎢ ⎥\n", "⎣7 8 9 3⎦" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.col_insert(3,b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 行列・ベクトル間の単純な演算" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 次元の確認" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAD8AAAAUBAMAAADIGvgZAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nqzLsm4+cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABLElEQVQoFXWSMUvDUBDHf6/VmibVRkSXLtFP\noE7iYvwGAenmkEURHHRxNt+gg5PFIYuCW0FUpEsmxcmv4EdQEe0g6L2kgZfE/oe7d3e/5I57D5TH\nRC3rygJ0hhsVRg1vImZdyW+jAnpemVjE+qDlQy1gZkQ7LAOnEV9wDw0Xu8+LoEVdx61PeIalNF9t\ngW7BVMyJBlqHxc/T6HEATsC6BOputwp09hKZ0OcgLT3EqSsYpy9tQsSKmheFWhacJ8y9aUC51Edl\nYB62Ig1Ii/bPP8BvogE71EM2V2m8l/9wBkcuNZ9bGdWjd6zXYmoF6xumB1xJ9rK7CfuJWcfu7sSy\nqFe96kxWfjA52bNcVibHLORnuSzWxsFTnjS8vm79YFJ5Y2+6um6rPDETJE/uDw2rNiRV8o4HAAAA\nAElFTkSuQmCC\n", "text/latex": [ "$$\\left ( 3, \\quad 3\\right )$$" ], "text/plain": [ "(3, 3)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.shape" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(3, 1)\n", "(1, 3)\n" ] } ], "source": [ "print(v1.shape)\n", "print(v1.T.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 転置(transpose)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAMAAADDCbAzAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRO/NZt27IolselnTNAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA2FJREFUWAntmeGS\nnCAMgBGQu4ooNO//roUEENYNjr2dznRGf9whks8QYhJYMQFeUnzo2ognxARKx2v+EFe4RJOQwNOn\nmAfH3QVP6hDuW9MmVUgXdr+AZ2v60ae7bT915Q5HpgVaqxZspJJwAdaWBSuPb8g+0IJjv74Ae7ey\nYDJByOt1ExwED0Z9F10N03nFhcbOX4HrfG5pbKI6Y42DywqLW+BkxSHYROfN1x3wnNZlCNZr4d7R\n2OCyD8GNk9/QeJbpAivLwlftSsPkjyPd3wCTOP+BYDQr77gPhupQlVEbMxyBpNNYSQurrB5TBY5G\n2AH4Ad4eobcDH4Cftx5wteFjiscU1QK18W+8wiu174OqaNVGTOqIB1U9ahitg1pyZ6uxSSVBgPLo\nRSze2lSSUJY/PxQCQ5vM723BEosVa98JYd8apKaq5N2QGcOiz9mpBdstjZd8iTgudANGaoOQPoOs\nWAb9NXiBPU65FACtxjS/ja+ypHNa8YsrAVzhvqYmIZbB6iSN/GBxA8BaisqTxtvYkELs2Yjn9Zvl\nsoHNTvUKVkc6PEtijwLGMVxSSUOusBP46/tXgegRV6InsY5u8YUTkCP//m6rzTlxPaORsAhWzOKW\nui0n8c4UtL9gvwGazXbUZ2We9J80Fjvp1YL9FncmSrKL4xPZZfkemu4W9AiXC7AWvNLuhAULr4JU\nxZ/O5Cnumt4GofPQH/S0Gv8AcxZ9wNUmjykeU1QL1EbnFT4GoZ2tR5JMCLqcG1REbZh4wCJLzG3B\nGL1m4HdNZo15R3Fh09go6Uvwa8Eagz/w0W1PcXPnNnoSKx1JUbvL0ktKhAY4jWICL/Oss28bJBjy\nAUCrMY4amGLni68oamjPqnMh9Qo2G1/0wToFXSN5qyy2KSWWXNuDfdj4DBGNlNa12db2bDLCmhe/\nB8eRoVQcvVS8M4D5WbFHc2tMd3PI6f8EFpYVJH9xfI0VDzWn8MbGVFDs+ZUnjQUlfjdw9ChTjgRb\njWmqPJgcdaBx0mXNtV8LpsOTjfXWKdv4PBfswYpjKtIt2KVFn4E98hEyuqJhvULHgsWg46T3tGCx\nqLht4vc20WWUknzhHZ8eXt6BcUYf+vOAqyH/V1NgYXy1XaqzvGrUH1jirj1dIwe+YnXP8QcWrcUf\nYW0oDePnJwsAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 4 & 7\\\\2 & 5 & 8\\\\3 & 6 & 9\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 4 7⎤\n", "⎢ ⎥\n", "⎢2 5 8⎥\n", "⎢ ⎥\n", "⎣3 6 9⎦" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.T" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAZBAMAAABjpnsOAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAu90iEHarRIlmzVQy\nme/la43/AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAu0lEQVQoFWMQUjJgwAaKlBoYFLBJgMSYE4aS\nHEtocmkryNlQwBIbwGDnwAz2gwfDpAAtmASQ5uB+wBDPAJFrYeh32IwkZ827gEEQKufAsBBJhoHB\ngS+A4StUjgHIQgH1Bjx/YHJAFgq4xcD6ACq3hfUDQwiypBgDYwJEjv034wfmCchyFxnqJ0DkWFJD\nYmciSzG4td43gMihCEM5t3DFH9sClu+45JgmMAbgkmMPvQM0mpk2aUIJZ/pMAACN0i4Uquj5/wAA\nAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}x & y\\end{matrix}\\right]$$" ], "text/plain": [ "[x y]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1.T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ドット積(内積)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFEAAAAyBAMAAADWwSrxAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhB2qyJEZt3N\nu5lcG7FTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACk0lEQVRIDd2WPWzTQBTH/8nFxklIEwRFQoAI\nlejCVxn4mGgkykqtDglbD6SGLY2QaBEgYWCiLJ06ksywAAMDApGNAVeNhETFUJEBGFAIpaGogJC5\nj9zFESExK2947/7v/fzOPttnY4+3hr4W9rwUto6d7gvCGDuVwrb+HCciPUirsZJpd+lF5hD+3psk\nVNYvAVuCkTuB6xmNdpudUFlesruSRv7ywrAkFMnUczv7AdYgz+ueE7hPn/IMQChzwqJrSB+BucqF\nJvfhsH1C1gmVEYgXrZE6ElWuNWljUdTDrvtyl+sWhWjAwHYkKReaBL6JInOEMsfNrAHRDYxnuGiT\nka9ccyOUOW4nYTkDFZwTQpNH2XlPiRQIlTFSg+kkilgWUpHRZmLVKkuCUBnvDB26ioFq9IeQijRm\npgr3JABC5WDJ837CuFjYEFKRsiY9oX4FdqbcupGGI0rSXcPkvBh1I30c8ASvpe5LLhQyAUk9Qd+e\n/z95c+iVvsjOwRkl5SpZNYyWVaozPlNSkmYTyQcqxeMxJczdaiTJ6A5MVlSKR03OybeLpfQ96pxd\nk+k/SOMRkL1w+zzlHds9Y84ijALFDVv1tPa/h5GOPY5XBKhnz7J3O0xSmPbNvnc+bIfXidNJphl5\niz30Kz4yNGhgs9gscMB1H7ruC3YMyTDSDlG+F7TW00GiidZmwbu2rmgCjETJ4XuBJJPrghzPcIpb\nizw+O/tlBnWYKUWGqohvEHsapt1BMsFWfhlse2j1jJUxSksjbzEnQdWTqV/AJ5TKisTdxhvk8tmP\nLCNMr/xB7wpyw58dTbYAHTQpM3UW9N3UkBic9clNFYN/bP5C+kDEywkajIzm3/EDA/TkGLN/IoN/\ntQP/CfwGEG2XXvjNWNEAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left[\\begin{matrix}x + 2 y\\\\3 x + 4 y\\end{matrix}\\right]$$" ], "text/plain": [ "⎡ x + 2⋅y ⎤\n", "⎢ ⎥\n", "⎣3⋅x + 4⋅y⎦" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = Matrix([[1,2],[3,4]])\n", "A*v1" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEwAAAAaBAMAAADvbqfyAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAu90iEHarRIlmzVQy\nme/la43/AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABS0lEQVQoFa3Tv0rDUBQG8K9JalLTahF1EyWg\n6JZJccsSV7MoLtWO4tRFcBDsCxR8hOAYl+6C9A3q4qCzLk6FFsSp5v45zYlcOpkh99zv/jg3uSQA\nXb2NiEo+6nglCGXqhQspX9a1iN1gF1t6boX1sYGpeL9gHfvbxGRcMMCfGJiKObMSIxMxZz2t/DIX\nMWO1FyOTMWM3uFWu3E3GksWnB2dJ/fFptcziV9gfKhbM6da2rXRpOh2VWfcZ1ZGKBfMib+KHioi7\n3tTuv6PSVLHshkU9yzMvyx6+sqwNOPjEclIwzGYqo1dwxxgOOKNZmTVSnKtEnpsfXaAa6SAfqFul\njXXG7vqbOCzUjDWa7g9jRyfx272BOZct+rTk8TIiStoUyJ9OXSbmhGrtCsedOUwvYQ9rVJq60dp1\na0DlPEYmH/+bBfo/ZVv8Ld1g5xcTZ0gndm5kQQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}x^{2} + y^{2}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡ 2 2⎤\n", "⎣x + y ⎦" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1.T*v1 #v1*v1ではerror" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJ4AAAAZBAMAAAAyHoooAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAu90iEHarRIlmzVQy\nme/la43/AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACK0lEQVQ4Ec2Vz2sTQRTHv8nu5tfaTfWgBwXX\ngCV4kICgFlEWJKU3F2zES2hBWvDWi0dJFAvFgw3evCUXDzkJ/ri2/4CYgggWxRQErxUjHiLGnZn3\ndjP5RQ9B3MO8eW8+7zOzu1mCY7kCpnUlc3m405JJz8V/5Lu8eXL43Fd3Tw0XZeUt18ecz2hhu8YM\nR3MFW+uc6PEMp4O+12rB6iLrMsMx4cFpcyIiwYC1z+UxvuQ33Kgzw9FxkfjNiYihb77B5TG+YHn4\nfjOdcb6q7jNLd+5tqB3CLc08zLKPax7vLGO8g+KtS7d9HU4XGgzL8y3iqX9OR4yH75Gy21jWdKhU\nzWr6bLyuw0U0GJa+R9jyXuoI8GT9ykwdR1WZxzmkvFTHpi+Kb6Ya+AiWPi/IxfW42TzfbD5Xzc5X\nz/HxUyU0zrRgIjMrswi2d4J+gul9hG20pVFArItK4Yj2PlEWpiw9vfD9LkKcR8HKF7WRL9sRvj1Y\nbXkWGuwWLgDvdrhG8Ju1tT+rBEvfK+sASwoixJlF/AeOI7bCvSIGX9VN21uG5akqwUGyD4KFL9mN\nHRg1DUnXsO1jFxUqy0Ujv/nBrbw4jXnFRr9nfAfBwmeuLpWfDSD3P58AFja+FKguQqbX67kLpeJH\n3iQ834PeXYLV84uaQkSV9qKVEbMR8KDvel9bom7+6kuHpyPgQV9/U7wW8/vziXOCJ/mSpU8TFdoi\nwZN8Gn/I5P/35ab6/zv3F3VIkZ00pX9FAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}x + 3 y & 2 x + 4 y\\end{matrix}\\right]$$" ], "text/plain": [ "[x + 3⋅y 2⋅x + 4⋅y]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1.T*A" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEwAAAAaBAMAAADvbqfyAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAu90iEHarRIlmzVQy\nme/la43/AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABS0lEQVQoFa3Tv0rDUBQG8K9JalLTahF1EyWg\n6JZJccsSV7MoLtWO4tRFcBDsCxR8hOAYl+6C9A3q4qCzLk6FFsSp5v45zYlcOpkh99zv/jg3uSQA\nXb2NiEo+6nglCGXqhQspX9a1iN1gF1t6boX1sYGpeL9gHfvbxGRcMMCfGJiKObMSIxMxZz2t/DIX\nMWO1FyOTMWM3uFWu3E3GksWnB2dJ/fFptcziV9gfKhbM6da2rXRpOh2VWfcZ1ZGKBfMib+KHioi7\n3tTuv6PSVLHshkU9yzMvyx6+sqwNOPjEclIwzGYqo1dwxxgOOKNZmTVSnKtEnpsfXaAa6SAfqFul\njXXG7vqbOCzUjDWa7g9jRyfx272BOZct+rTk8TIiStoUyJ9OXSbmhGrtCsedOUwvYQ9rVJq60dp1\na0DlPEYmH/+bBfo/ZVv8Ld1g5xcTZ0gndm5kQQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}x^{2} + y^{2}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡ 2 2⎤\n", "⎣x + y ⎦" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1.T*v1" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAE4AAAAzBAMAAADLOCMxAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhB2qyJEZt3N\nu5lcG7FTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACMklEQVQ4Ea2VO2gUURSG/8zubHYybgz4aLON\nwSoPgmAjrhA7IYPIpnQUsnYbsRCLFCNWsTGIpN2tFSyDisWCtZBGU6kp1EI2GB+RaDPed869F5kp\nvM09/zkf5z64PxcwY/p9YmI/mMy/y2SQjQ78ssjM5N9wbOGirMZZ9eAf3JWFORzXtXi9/lvH3nzh\nkAMq+15dJywuTnXamy1u2iubBOXGdkzaCyj3EI+8uk5Irn1j7XpafTX/Rqf5HHbubEyh/Rn1E4Dg\nwubYZjwYyfM9yl3Gk/QlmnOosbTggiTYr2SU4fEpzCRn67NDNLZ0PxxhoTsSvGaL4ySOpoqDCF0O\n+MVS0QEWW4bjoTeqP1lqfIBrbBL7qyQrqCUud4btfxmNm9jWXG/2A+67WPSjsVfvY3wr+qO5pU77\nS9/lwtvL3cfsILe6/LXJe3YZS7MdluBWcXW9DPcCb3n3wnU3uq1SHIfYKOwnsf/HBbufSq17Gqul\nuGdYzBhYeI7neFDqnoHz/CUV9gM2S+0PwU457inHiteNmlHLcMLnYTfFXfL6pb40f86cQ/o8qExg\nha+hhtSTec61OK/0+T32cN9piM2WFlwofJ6MpMKxGrW0uj9uefQy4VjNWVpxwudD1CYMxAKqBad8\nvs1NTQbVglM+30WvTzBQLTjl86WprxnlqFb7U+UhxVh8qAk3Ogitf8bShIv7jZT2szThos5HisHS\nhLMgV5TnzL/qtiCa/6vmnyZ5N2T/9F8HE5aKuGYB1AAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}x^{2} & x y\\\\x y & y^{2}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡ 2 ⎤\n", "⎢x x⋅y⎥\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", "⎣x⋅y y ⎦" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1*v1.T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 外積,outer, cross\n", "\n", "outer(v1,v2)がSympy1.1.1では見つからない.\n", "crossは使える." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true }, "outputs": [], "source": [ "v1 = Matrix([1,1,3])\n", "v2 = Matrix([1,2,-1])" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "MutableDenseMatrix has no attribute outer.", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mv1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mouter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/Users/bob/anaconda3/lib/python3.6/site-packages/sympy/matrices/matrices.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, attr)\u001b[0m\n\u001b[1;32m 3214\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3215\u001b[0m raise AttributeError(\n\u001b[0;32m-> 3216\u001b[0;31m \"%s has no attribute %s.\" % (self.__class__.__name__, attr))\n\u001b[0m\u001b[1;32m 3217\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3218\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mintegrate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mAttributeError\u001b[0m: MutableDenseMatrix has no attribute outer." ] } ], "source": [ "v1.outer(v2)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACoAAABLCAMAAAAxteWWAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRM3diWYiu+9sJ/xb8wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAASNJREFUSA3tl9uS\ngyAMQMO13aJYNv//r8vFCFML5LVd86BxOBNyIw4gMIuEriyFABCodBTTJcGndYkJFX2qrvgBKhap\n1iQFH6G+eIh7ECNUbdkchTtCy8YrBTJCs82HpsCm6JNImKGr56I25pKktWrdcogrwWhHIMwcWKqr\nE9RS+pPt1oG6F2mxkUidoYaPbqHpzLEDdfeoXeh3ZEA0TZUL3A+r7eoxqkNzAIbo5h0XXYGL+o2L\n2jh9mFbTYOOhJs2Lt+jt/pOzQQ+bp+UJ/b2f/wVGJsEgj3mZjfSrxS4BALJL8ESUdbYmD/oOUJDH\n+0L/WQZMsEfxd+VtBqxUEnloNKMv9GMyoGRA9zIxrpGxZ4B9hbDpgqD14/Uw1e98hdAa/gCTGhgW\ntC2zCQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}-7\\\\4\\\\1\\end{matrix}\\right]$$" ], "text/plain": [ "⎡-7⎤\n", "⎢ ⎥\n", "⎢4 ⎥\n", "⎢ ⎥\n", "⎣1 ⎦" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1.cross(v2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## スカラー三重積" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABMAAAAPBAMAAAD0aukfAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWaJMkS7\nIt2ZnNffAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAcElEQVQIHWNgAAPOabOANKMyAwNzNUM4A4NJ\nyGcGBp4AhjNAUTYgc/8FsDIQ8xCYBRb9vjJ1A0QB8/cGBkUo878BQ5ABRNs/BoZ+oAqQtudAZgOE\n6YQQXQ9UC9HGwDKBGWgCq9N3DwaGqSELgKJwAADSWSGR+xZb5QAAAABJRU5ErkJggg==\n", "text/latex": [ "$$16$$" ], "text/plain": [ "16" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v3 = Matrix([-1,2,1])\n", "v3.dot(v1.cross(v2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 行列操作" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 掃き出し, LU分解" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[Matrix([\n", "[ 1],\n", "[-2],\n", "[ 1]])]\n", "⎡1 2 3 1⎤\n", "⎢ ⎥\n", "⎢4 5 6 2⎥\n", "⎢ ⎥\n", "⎣5 7 9 3⎦\n" ] }, { "data": { "image/png": "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\n", "text/latex": [ "$$\\left ( \\left[\\begin{matrix}1 & 0 & -1 & - \\frac{1}{3}\\\\0 & 1 & 2 & \\frac{2}{3}\\\\0 & 0 & 0 & 0\\end{matrix}\\right], \\quad \\left [ 0, \\quad 1\\right ]\\right )$$" ], "text/plain": [ "⎛⎡1 0 -1 -1/3⎤, [0, 1]⎞\n", "⎜⎢ ⎥ ⎟\n", "⎜⎢0 1 2 2/3 ⎥ ⎟\n", "⎜⎢ ⎥ ⎟\n", "⎝⎣0 0 0 0 ⎦ ⎠" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A=Matrix([[1,2,3],[4,5,6],[5,7,9]])\n", "print(A.nullspace())\n", "Aex = A.col_insert(3,b)\n", "pprint(Aex)\n", "Aex.rref()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "rrefはreduced row echelon formを取り出してくれる.これはGaussの消去法で下んとこまで行って,さらに上んとこへ戻ってきたやつ.拡張行列もそのままやってくれるはず.もうすこし,試す必要があるが,一応MapleのLUDecompositionに近い結果を与えてくれる." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nTkSuQmCC\n", "text/latex": [ "$$\\left ( \\left[\\begin{matrix}1 & 0 & 0\\\\4 & 1 & 0\\\\7 & \\frac{5}{3} & 1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1 & 2 & 3\\\\0 & -3 & -6\\\\0 & 0 & -3\\end{matrix}\\right], \\quad \\left [ \\right ]\\right )$$" ], "text/plain": [ "⎛⎡1 0 0⎤, ⎡1 2 3 ⎤, []⎞\n", "⎜⎢ ⎥ ⎢ ⎥ ⎟\n", "⎜⎢4 1 0⎥ ⎢0 -3 -6⎥ ⎟\n", "⎜⎢ ⎥ ⎢ ⎥ ⎟\n", "⎝⎣7 5/3 1⎦ ⎣0 0 -3⎦ ⎠" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A=Matrix([[1,2,3],[4,5,6],[7,9,8]])\n", "L, U, P = A.LUdecomposition()\n", "L, U, P" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 階数, rank" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Matrix([[1, 2, 3], [4, 5, 6], [7, 9, 8]])\n", "3\n" ] } ], "source": [ "print(A)\n", "\n", "print(A.rank())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 行列式, determinant" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABkAAAAOBAMAAAAoFKpzAAAALVBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAEM3dMiKZu6uJRO92VKoV\n2MsAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABeSURBVAgdY2CAAta0cgcYm4FBgoHzFYLXyMCwG8Hb\nzMDQh1CqJ4DMA6qyE0AoZeB6icRhYG5gYBAyBgEVoHAashRPAjLvGgNrAJzPksDAg+AFz5zWDJdi\n0Hv37jEDAGBWEJ9xq8kjAAAAAElFTkSuQmCC\n", "text/latex": [ "$$-2$$" ], "text/plain": [ "-2" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = Matrix([[1,1],[1,2]])\n", "print(c.det())\n", "\n", "a = Matrix([[1,2],[3,4]])\n", "a.det()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 課題" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "次の行列式の計算を確認せよ.\n", "$$ \n", "\\left|\n", "\\begin {array}{cccc} \n", "1+a & 1 & 1 & 1\\\\\n", "1 & 1+b & 1 & 1\\\\\n", "1 & 1 & 1+c & 1\\\\\n", "1 & 1 & 1 & 1+d\n", "\\end {array} \\right|\n", "= abcd \\left(1+\\sum_{i=a}^d \\frac{1}{i}\\right)\n", "$$\n" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⎡a + 1 1 1 1 ⎤\n", "⎢ ⎥\n", "⎢ 1 b + 1 1 1 ⎥\n", "⎢ ⎥\n", "⎢ 1 1 c + 1 1 ⎥\n", "⎢ ⎥\n", "⎣ 1 1 1 d + 1⎦\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQQAAAAQBAMAAAACFhwAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpmJdu8QRM1mu90y\nVKvMIHo8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACK0lEQVRIDZ2SMWhTURSG/76Qm9dImtBVkEI7\nqKgN2kV0CDXFxaUtiNblUWiHDr4uzg0iJSDUDF2KSxCEbgp2raSrS5+LazNkcRAqgdSCAU/ufTfJ\nOzk3g3d457zz3f/8h/MeoM/WCxN7z28rg9xm6uNnm/JokSSzdxmT3fbsbYrdodymftNmI9EiSWYv\nMya6Dd3JdLQwV7L6XsxHQ28iEmWxiLNRNyC+oxUps/Okz07gHCFGoiwWMSa4AfEdrfBndEiO8CBu\n5kaiLFYxxt0mZueewm8t0qYXyg1ML5yanfdHmL67FGCvfJsGLT9JjjBADpnckru9KvjnCHfVb1yN\nspXMMj4FCR+qvIP6E4SFiWMcOpBD5mjJ3NRzeHWcBWhjFVPRRg3XtQ3sFqhyE7kO8sV0Eb8SIwyQ\nQ+Zoydy8Dq6UyFa1KQPmA3yhkKpW3z6rVpumcgSvgrBIjI4LiTK5JXNL1xE28BqZLmXAGtQFBTp2\nC1T5C/qfdqI1A2QkytJ1koy2ZG5hEWfAJbwOZbQL5M6NUzyCqeRrmN9sG9AfIYFEmdySu4URDnOF\nC2zUyAY/ushWvmsrO4Ku5Lfpn7kkcxkpl0xsCebmlya/pvATH+A1sd54g/dN2gYd+yF0ZaqWncEd\nqFsO5JA5WjI31Xp47THWF2neewclvHx00tpO+OiKmrtBP+L9fU360w2QQ+ZoKbiZxuxpt8DKvdcx\n6L+ZYANVkKq6NgaNkznYPxoXEiWn1O6VAAAAAElFTkSuQmCC\n", "text/latex": [ "$$a b c d + a b c + a b d + a c d + b c d$$" ], "text/plain": [ "a⋅b⋅c⋅d + a⋅b⋅c + a⋅b⋅d + a⋅c⋅d + b⋅c⋅d" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sympy import *\n", "a,b,c,d,x,y,z = symbols('a b c d x y z')\n", "\n", "A = Matrix([[1+a,1,1,1],[1,1+b,1,1],[1,1,1+c,1],[1,1,1,1+d]]\n", ")\n", "pprint(A)\n", "simplify(A.det())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 逆行列" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFkAAAAyBAMAAADFFmoFAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhDN3SKZu6tE\ndmbQNlrcAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABwElEQVRIDeXWPUjDQBQA4Nf8NC2tGlDnFic7\nKXRzsWgVnOzuUnBwLQ5aUKGjTi2CCC046eCmg+IkRdz9GcRurk6KWBEUzlzq/SW+mCpOZrmXvC+v\nr3f5gxR5glCbRogN/fmpUBjM/KQNA+EsVYaqN+q7Qeeq2jyAkaaP64PskKoTBYjYLMXGuUabhaqO\nlCDxzFJ87EF0tN2NdspZvNC3tR1wkeaKBVgnTn6FGTF6tbmw7GxLOYB4TSgWeTU7DtASIY9Qrddg\nnSsWoHoG4JYhPmI6tjjUKHHFAkxHCSE+HT98Of08UV15Vg0b/53WWkfYXDj3b5HmpDnZgTqqjc6i\nSXoTHlANurtokoaA2l9oM+A55K99c/l3nUB1FC3u7cTpunoXWkMZrgq4tmlKmsGJ6xMUx7bf6BRI\nGqUi8VPd59yTRJRxI/5UornHX3Si1bc8paXdzD6dL6nvYTiW0mqoVRJFVZdhtqIasWdVjFdVr0K1\nKfJqZDVj76oGGKe9IZtO3xlS3wBriKSHLe9aarUAnaE5ufZ9AO51K0k6mU7mUH8G52rt6ewY+i+N\n+exeR7MvjpTvMhG/FKGXifvF0dXXzAcqTG6s+l48eQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}-2 & 1\\\\\\frac{3}{2} & - \\frac{1}{2}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡-2 1 ⎤\n", "⎢ ⎥\n", "⎣3/2 -1/2⎦" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = Matrix([[1,2],[3,4]])\n", "A.inv()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 課題\n", "次の連立方程式を解け.\n", "$$ \n", "\\left\\{\n", "\\begin {array}{cl} \n", "x+y+z&=0\\\\\n", "ax+by+cz&=0\\\\\n", "bcx+cay+abz&=(a-b)(b-c)(c-a)\n", "\\end {array} \\right.\n", "$$" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Matrix([[1, 1, 1], [a, b, c], [b*c, a*c, a*b]])\n", "Matrix([[0], [0], [(-a + c)*(a - b)*(b - c)]])\n", "-b + c\n", "a - c\n", "-a + b\n" ] } ], "source": [ "from pprint import pprint\n", "from sympy import *\n", "a,b,c,x,y,z = symbols('a b c x y z')\n", "\n", "A = Matrix([[1,1,1],[a,b,c],[b*c,c*a,a*b]])\n", "bb = Matrix([0,0,(a-b)*(b-c)*(c-a)])\n", "print(A)\n", "print(bb)\n", "Ainv = A.inv()\n", "res = Ainv * bb\n", "pprint(simplify(res[0]))\n", "pprint(simplify(res[1]))\n", "pprint(simplify(res[2]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 固有値,固有ベクトル\n", "\n", "sympyでは固有値・固有ベクトルは,eigenvects()で求められます.\n", "戻り値は,\n", "> [(固有値, 重複度, [固有ベクトル]), ...]\n", "\n", "です." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left [ \\left ( -1, \\quad 1, \\quad \\left [ \\left[\\begin{matrix}-1\\\\1\\end{matrix}\\right]\\right ]\\right ), \\quad \\left ( 3, \\quad 1, \\quad \\left [ \\left[\\begin{matrix}1\\\\1\\end{matrix}\\right]\\right ]\\right )\\right ]$$" ], "text/plain": [ "⎡⎛-1, 1, ⎡⎡-1⎤⎤⎞, ⎛3, 1, ⎡⎡1⎤⎤⎞⎤\n", "⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥\n", "⎣⎝ ⎣⎣1 ⎦⎦⎠ ⎝ ⎣⎣1⎦⎦⎠⎦" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = Matrix([[1,2],[2,1]])\n", "A.eigenvects()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ベクトルの規格化\n", "\n", "eigenvectsの固有ベクトルは規格化されていません.norm()を使うとかんたんに規格化してくれます." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAZBAMAAADDORPgAAAALVBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAu90imTIQq4lE7812VGR7\nQmkAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABwSURBVBgZYxBSMmAAAk4lDQYFEAMEzNGYzC6CAVDR\ndAaOl1BmGQPDKihzEQNDXQBE274EOBNokl4CzDDOF1C1DAxMBXCmC9w2Hgc48woDswFEG6sDAw+U\nadTRUgTVtu/du0dwE4C6YFZQxFSChYM6AIqaGQAdlbreAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}2\\end{matrix}\\right]$$" ], "text/plain": [ "[2]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1=Matrix(A.eigenvects()[0][2])\n", "v2=Matrix(A.eigenvects()[1][2])\n", "\n", "simplify(v1.T*v1)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABsAAAAVBAMAAABF8IgWAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAInarRM2ZVBDdiWbv\nuzJCz3LGAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAtElEQVQYGWNggADG/yDwAcpjYHaAscC0KAqP\nIR2FyzEBhctWgMLtZGAQy70HF1rNwGHAsN4BygdqZW5g4DkA5TJtYOABivwDcl2AmJOBgfUHmMt0\nFMhVAqvi/MHAIKHvwMAAsdV/AVC0/wIDN4hmYJgMItg+MnA2gBkJIJLxG8MuEM2gBiYZ7BtmgBjs\nCQyCIPr98gQQ9YyBQRFEsx5tAJKMs1Ylgy1g/wYWBIYNxL5AEBcCALUeKW//iOF2AAAAAElFTkSu\nQmCC\n", "text/latex": [ "$$\\sqrt{2}$$" ], "text/plain": [ "√2" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v_norm = v1.norm()\n", "v_norm" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADkAAAA/BAMAAACob32rAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARM1UEN0ydom7ZiKZ\nq++Kqw7lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABfklEQVQ4EX3Vq07EUBAG4OmSwBLCJcFgSFEo\nxCZVqG1AIREEsYbwAuwjrEewAo8niCY8AJBgcIQXweAQhznttOcy/zDJZpvzdbqnO/lbKp07IFQP\nzk2orKodhLRbTVk1bTsuXt6CuicNWO/HH+/+BKgr81v6MnWdZnTTWL2PdE4v/j7glZcM0xrpM9Ha\nhOGSP6q3uKvpjNfHr0hptKA3hiePqpeKn41PomJRXCGlo82G6Lo6rqGW+7z83f7N+so0+mWV0ve7\nOu9t2NXJha/DsN4d5b1+sFJ8Qq5pN1IZrtErwzVUhmuoDNdQGa6p7XAt7YZraTdcQ2W4hspwDZXh\nQu0Txgim0CcMa58wqEPCoA4JgzokDOqSV9uEKU0SlmuasFzThClNEqY0SZjWOGFa44RpjROm1a/E\nFSeljxd/yymxxl3dca4hYd5zDQlDGhKGNCQMaTRc8Lvy+PSNXPmu5PHZodYhYag3JAxpSBjSkDCk\nfi2U3/O/b8lT+y1ZNX/qQImtliOUkwAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}- \\frac{\\sqrt{2}}{2}\\\\\\frac{\\sqrt{2}}{2}\\end{matrix}\\right]$$" ], "text/plain": [ "⎡-√2 ⎤\n", "⎢────⎥\n", "⎢ 2 ⎥\n", "⎢ ⎥\n", "⎢ √2 ⎥\n", "⎢ ── ⎥\n", "⎣ 2 ⎦" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1n = v1/v_norm\n", "v1n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## 対角化\n", "\n", "ちょいとわかりやすい行列を作成してみてみます." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAARcAAAAyBAMAAACE64LWAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAiUSZq1TvELvdZiIy\nds1Wk1T5AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEXElEQVRYCc2Zz2tUSRDHaxLmvXmZJI54k93N\n/AcZUTzqgKAoSgILguxChvU3CIkYBEFJDh70FhAR8aBewp42Xve077LuJZAc9rpkDnrO+ht/Zfx2\nVXVez6Q7oxff60P/rK76pLre66kXIpRSnWi68wK9rWWs83brJGaiTqfmWwjJhwyUOp0W0Wymahe6\nZ5f/ySac3vXlk84o60a/Ls9ko6wXkg8ZiJf/bhENtK2GUhO9S3a0pX26ZcZMRCkqb/HLhw0Mt6Dm\nD6vqpPkT84CJ9zxOiRimomce/2aoGIaxzEhK+bxp/X9plGJJBNDRwvv98j4Do5PxA4WJz4qKSsO0\ngIkPTXSFwey+d2bFrzxKEXYiYIRM0f1+eZ+BRaKfFIY0MqeYgD2z1gVDI31gVEBQTM37wzAqsCl/\nkwjG+ZgoqfH0Ha7zgHlNND6pMOWPBmOIaznS7+uZ+BVgVhWG2CfJfF6eqeI1u1KzMEsmRFbqucHA\nMxnM3Co49jNL/sc02gbImdxgCAE8ZQOYRhC7wx/yg7lFhEiRR5uqADFApuTxaOOld8C+9PiIKi1m\nyQUmmYzhA/UM3cbtO5/B7Jt+9khGXA8e3jiGjv+NGqVEKsDCppL9fnn+a3sMxD/+Cy0WZoxoriG6\n+Jik21P7lUdpj9jm0C8vrt8UcjoWZqlOK+bxRskfBiR4tgoCgzNaSosCs6NJa08KAzNPY4WBidp0\ncKYonokWaEJYCvA0Ja1iwRTnmJKFYgXwWpoF8JXdP2gEcVPde8ss8us93nBX0I9S5CachGHQVeQ6\nmGt3Tcor3mvAXge4JXEjcDHXwXO6pg86T81S6SU6ovy+PnW8gipKiSQJw8AWJ4lL7tlJbYMGLMyO\nBk3VRRiyQy0qtXWraY4QnUMjMGUXE7NRSrTISRgGUrqTuF/stLZBAxZmruZelJUmlTlt0+0XiSZS\nC1Pq0R1hRZIwZ4FTHYGnmjNvuoDxG7AwuCjhHC6QxeUw8EZGXK/PODA3nAXTjVIyv2GRhDnFgYlX\nnXnTDRqwMLiyk7ZsgiyuzYHPMrL1wxnrmUd2StsoJU3CnAUHZsiZ5m7QgIXBxTT4v+yC7F9IqLo/\nXw2Yobq9R3mUkiZhzoID48xKN2jAwkwgajVKjGyjFyZpQlEYRpIwx2w/GK8BC3MBv0A1Srxe3GsM\nBWG2PSYHUbpBAwpTNRGSJXEI4LIbwDTSMHqCMJqEiS2u+3jGb0BhOGc6KMoAXpnfPDSZ+5mqT7aD\nkSTs62H8BhSmsgBF43XWBhi89AbbPJBquEEj28IschLm7OjjGb8BheHEP+Gz4N8zd+lq6qj+c+eu\noxiGj0mSMGdHHxjyGlAY3quPEzxDl/877mim9U7n/bYwkoRlW/omcV4DCiOxe5q1GRh/CXvmW+TD\nPyUFRj6jmW98KHnDjEq0SJM3jH6Crn4qgGfkyzhAThUApiKnhC8bTdDkfEy/G4dwOYG6KP/iocF6\n7v/84if6C/3w9eq86LO3AAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left ( \\left[\\begin{matrix}1 & 1\\\\0 & 2\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1 & 1\\\\0 & 1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1 & 0\\\\0 & 2\\end{matrix}\\right]\\right )$$" ], "text/plain": [ "⎛⎡1 1⎤, ⎡1 1⎤, ⎡1 0⎤⎞\n", "⎜⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎟\n", "⎝⎣0 2⎦ ⎣0 1⎦ ⎣0 2⎦⎠" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "D = diag(1,2)\n", "P = Matrix([[1,0],[1,1]]).T\n", "A = P*D*P.inv()\n", "A, P, D" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0i\nu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABWklEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOr\ni7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsD\nw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+Sn\nLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKwYGnvK7DvDwnMwQfQBJMoyB6R9MjkuAgWkCklwq\nA4MgTI43gYH5K5KcNANDvgM0/vgTGPg+I8nND0DIxRcw8P1AkgMy98PSy3kFBhbUzMsH5ELi73wB\nuhx3AkwO08xyoLEQfUC3MCO7hYGjAC7He4GBC9kPDOYMPAeg+oB+Z0f2O0sBAwdMjmEzQ6AD0BQY\nOK2kng2zjyGoIwUmDqLn////Gy6HLAFnD7L0ia+MxFO2AgCgAlabCCb3SgAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 0\\\\0 & 2\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 0⎤\n", "⎢ ⎥\n", "⎣0 2⎦" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P,D = A.diagonalize()\n", "\n", "P.inv()*A*P\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0i\nu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA00lEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOr\ni7MAgwg2GZAYCxFyhgEouplF4fpY0/NR5MLKvsLlGBj6UeQYOEblwPFQJj9tAVKAsif+zCIuHpA0\nwZnExB9cMRJjGOkL11JB8hiUCfXfZIboA8iSSGmXS4CBaQKSHHLa5U1gYAalVjhASrv8CQx8n+ES\nQAaSXHwBA98PHHLnFRhYUDIvkr7zBbjl8JkJdAszLrfwXmDgwuUHoN/Zkf2O7AeGzQyBDjj8wBDU\nkYIsNeTSLr4yEk/ZCgD8YE0m/VSorQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 1\\\\0 & 1\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 1⎤\n", "⎢ ⎥\n", "⎣0 1⎦" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eigs = A.eigenvects()\n", "v1 = eigs[0][-1][0]\n", "v2 = eigs[1][-1][0]\n", "\n", "Matrix([v1,v2]).reshape(2,2).T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "対角化行列$P$をeigenvectsから作ろうとして苦労した.まず,固有ベクトルの取り出しが自動的にできない.重複しているときには,固有ベクトルは二つ出てくる.さらに,タプルからの取り出しがこれでいいいのか...さらに,ベクトルから行列を作るときに横置きのができない.うううんん.他のやり方をしたでやってみる.上では仕方がないので,一旦4x1のMatrixにしてそのあとreshape,さらにTransposeで..." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0i\nu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA00lEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOr\ni7MAgwg2GZAYCxFyhgEouplF4fpY0/NR5MLKvsLlGBj6UeQYOEblwPFQJj9tAVKAsif+zCIuHpA0\nwZnExB9cMRJjGOkL11JB8hiUCfXfZIboA8iSSGmXS4CBaQKSHHLa5U1gYAalVjhASrv8CQx8n+ES\nQAaSXHwBA98PHHLnFRhYUDIvkr7zBbjl8JkJdAszLrfwXmDgwuUHoN/Zkf2O7AeGzQyBDjj8wBDU\nkYIsNeTSLr4yEk/ZCgD8YE0m/VSorQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 1\\\\0 & 1\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 1⎤\n", "⎢ ⎥\n", "⎣0 1⎦" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1.col_insert(1,v2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "numpyにはravel()というフラット化の関数があるがsympyにはない.\n", "\n", "結論:3つほど上でやっているdiagonalizeで取り出しましょう.重複があっても取り出してくれるんで." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 課題\n", "行列\n", "$$\n", "A\\, := \\, \\left[\n", "\\begin {array}{ccc} \n", "2&0&1\\\\\n", "0&3&0\\\\\n", "1&0&2\n", "\\end {array} \\right]\n", "$$\n", "\n", "を対角化する変換行列$P$を求め,対角化せよ." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left [ \\left ( 1, \\quad 1, \\quad \\left [ \\left[\\begin{matrix}-1\\\\0\\\\1\\end{matrix}\\right]\\right ]\\right ), \\quad \\left ( 3, \\quad 2, \\quad \\left [ \\left[\\begin{matrix}0\\\\1\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1\\\\0\\\\1\\end{matrix}\\right]\\right ]\\right )\\right ]$$" ], "text/plain": [ "⎡⎛1, 1, ⎡⎡-1⎤⎤⎞, ⎛3, 2, ⎡⎡0⎤, ⎡1⎤⎤⎞⎤\n", "⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟⎥\n", "⎢⎜ ⎢⎢0 ⎥⎥⎟ ⎜ ⎢⎢1⎥ ⎢0⎥⎥⎟⎥\n", "⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟⎥\n", "⎣⎝ ⎣⎣1 ⎦⎦⎠ ⎝ ⎣⎣0⎦ ⎣1⎦⎦⎠⎦" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = Matrix([[2,0,1],[0,3,0],[1,0,2]])\n", "evs = A.eigenvects()\n", "evs\n", "#" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n/wOYX2slujVXlwAAAABJRU5ErkJggg==\n", "text/latex": [ "$$\\left ( \\left[\\begin{matrix}-1 & 0 & 1\\\\0 & 1 & 0\\\\1 & 0 & 1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1 & 0 & 0\\\\0 & 3 & 0\\\\0 & 0 & 3\\end{matrix}\\right]\\right )$$" ], "text/plain": [ "⎛⎡-1 0 1⎤, ⎡1 0 0⎤⎞\n", "⎜⎢ ⎥ ⎢ ⎥⎟\n", "⎜⎢0 1 0⎥ ⎢0 3 0⎥⎟\n", "⎜⎢ ⎥ ⎢ ⎥⎟\n", "⎝⎣1 0 1⎦ ⎣0 0 3⎦⎠" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P,D = A.diagonalize()\n", "P,D" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAABLCAMAAADDCbAzAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRO/NZondIrtsRPdGkQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAoRJREFUWAntmeFy\npCAQhFlRk+iKGt7/XQN4DtPoOCG3l6qr0h9xpJ0PGFF7o3n4tDXmRdu88Yx5eNuGrXsR10yR1vgI\nfryKmTlTDbi3bnLyIEAuwN3Y504P0TNUq5+XQ/ufBpA5uG9s4y/A0xgJ7imAUebgkNBegde0bjrp\nFJRrwD6BBy8sH5QrwL23sQiDb09rUcgV4MW7SHxsuwO8kKvAacQyGOQKcDHXcsiFXAE229Xpri/e\nLteA1zWOchKXG8g14O0OsNc3yC7XgM0cb+lRfFiADGDbjP7ZTOVloePehcehyDUgA5gILwhuMBXx\nLsVdCqoABb+zKsBxUN85WJxzq/AqDWdBOowYHEfm7dES3z2dFx9SkM7B6Dh2XN636d3h59wCEaZz\nMDoOSEoHwziE+XrpQY/pHIyO4whOLXIpMJ2Bi9fsObifk7k4EYt0Bi4cx0muWdxsJddYpAMYHMcZ\nOLS5WOizbdkc2O5nGLiYy1lybBsFC12kR/Db+0eiKIbELMlyr98zLJ/v+TeIYkiMT1ZFBGM6K4VR\nDIkZk9WZvfBbAdM5WDMkU7yZO8EeB0k2LOA4Utnxz2CtXYVFEc6EdBgxYv7u6AZT/e5S3KWgClDw\nO6sCHAf1nQNFBz8DIwbHkXkUXevoZzgYHQfhKFB09DMcjI6DeBQoOvoZDkbHQTwKND2eSH6GgYvX\nLPH2QNPjednPMHDhOHYe7TXdgJ8B8LVhKRwJdQgB+RkG1qaq6VsHu59hYO0/KJqOfoaD0XHADNOB\noqOf4WB0HEewoqOf4WB0HEewoqOfATA4jhOwooOfAfAJ68dNN5hK97+W4h99YOnjB5G2lR01Fe57\nQfrA0rbmCy2KKwb1Df0TAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left[\\begin{matrix}1 & 0 & 0\\\\0 & 3 & 0\\\\0 & 0 & 3\\end{matrix}\\right]$$" ], "text/plain": [ "⎡1 0 0⎤\n", "⎢ ⎥\n", "⎢0 3 0⎥\n", "⎢ ⎥\n", "⎣0 0 3⎦" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P.inv()*A*P" ] }, { "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": "84px", "width": "252px" }, "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 4, "toc_cell": true, "toc_position": { "height": "583px", "left": "0px", "right": "929px", "top": "106px", "width": "212px" }, "toc_section_display": "block", "toc_window_display": true, "widenNotebook": false } }, "nbformat": 4, "nbformat_minor": 2 }