{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": "true" }, "source": [ "# Table of Contents\n", "

1  定義と解説
2  
3  python
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " 線形代数(Linear Algebra II) 行列式 \n", "
\n", "
\n", " cc by Shigeto R. Nishitani, 2018-03-16 \n", "
\n", "\n", "* file: /Users/bob/python/doing_math_with_python/linear_algebra/LA-I.ipynb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 定義と解説\n", "\n", "行列式は英語でdeterminant(決定するもの)で,\n", "行列の性質を代表する**数**です.\n", "\n", "* 定義\n", " * ${\\rm sgn}$関数は,順列に対して符号を決定する関数\n", "\n", "$$\n", "\\begin{array}{rl}\n", "{\\rm sgn}(p,q,\\ldots,s)& = \n", "\\left\\{\\begin{array}{ccc}\n", "1 & ; & (p,q,\\ldots,s)が偶順列 \\\\\n", "-1 & ; & (p,q,\\ldots,s)が奇順列 \n", "\\end{array} \\right. \\\\\n", "&= (-1)^m ; (p,q,\\ldots,s) \\overset{\\rm m回の互換}{\\rightarrow}\n", "(1,2,\\ldots,n)\n", "\\end{array}\n", "$$\n", "\n", " * $A=[a_{ij}]$行列の行列式($|A|, \\det A, \\det[a_{ij}], |a_1,a_2, \\ldots, a_n|$)\n", "$$\n", "\\left(\\begin{array}{cccc}\n", " a_{11} & a_{12} & \\ldots & a_{1n} \\\\\n", "a_{21} & a_{22} & \\ldots & a_{2n} \\\\\n", "\\vdots & \\vdots & & \\vdots \\\\\n", "a_{n1} & a_{n2} & \\ldots & a_{nn} \\\\\n", "\\end{array}\\right) \n", "= \\sum {\\rm sgn}(p,q,\\ldots,s) a_{1p}a_{2p}\\cdots a_{ns}\n", "$$\n", "ここに$\\sum$は$\\{1,2,\\ldots,n\\}$のすべての順列$(p,q,\\ldots,s)$について加えることを意味する.\n", "\n", " * 以下の行列式表記 $|a_1,a_2, \\ldots, a_n|$で$a_1,\\ldots$は列ベクトルを意図している.\n", " * サラスの方法(たすき掛け)\n", "\n", "* 基本性質\n", " * $|^t A|=|A|$ 転置しても行列式の値は変わらない\n", " * 行について成り立つ性質は列についても成り立つ\n", " * **n重線形性**\n", "$$\n", "\\left|a_1\\cdots \\lambda a_j' + \\mu a_j'' \\cdots a_n \\right| =\n", "\\lambda\\,\\left|a_1\\cdots a_j' \\cdots a_n\\right| + \n", "\\mu\\, \\left|a_1\\cdots a_j'' \\cdots a_n\\right|\n", "$$\n", " * **交代性**\n", "$$\n", "\\left|a_1\\cdots a_j \\cdots a_k \\cdots a_n \\right| =\n", "- \\left|a_1\\cdots a_k \\cdots a_j \\cdots a_n \\right|\n", "$$\n", "\n", "* 余因数(余因子)展開\n", " * 小行列式$D_{ij}$として,余因数は$A_{ij}=(-1)^{i+j}D_{ij}$\n", "\n", "* 逆行列\n", " * 余因子行列,随伴行列 ${\\rm adj}A$ ;\n", "$(i,j)$成分$a_{ij}$の余因子$A_{ij}$を$(j,i)$成分とする行列\n", " * 逆行列の公式\n", "$$\n", "A^{-1} = \\frac{1}{|A|} {\\rm adj} A = \\frac{1}{|A|} ^t|A_{ij}|\n", "$$\n", " * $n$次正方行列が正則(逆行列を持つ) $ \\iff |A| \\neq 0$\n", "\n", "* 行列式と階数\n", "$$\n", "{\\rm rank}A = n \\iff Aは正則(逆行列を持つ) \\iff |A| \\neq 0\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 紙\n", "\n", "![LA-II](./figs/LinearAlgebra-II.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# python" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-2.0" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "from pprint import pprint\n", "import scipy.linalg as linalg\n", "#linear algebra\n", "np.set_printoptions(precision=3, suppress=True)\n", "\n", "a = np.array([[1,2],[3,4]])\n", "linalg.det(a)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-2. , 1. ],\n", " [ 1.5, -0.5]])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.inv(a)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-9.62193288008469e-16\n", "array([[ 1.892e+16, -5.404e+15, -2.702e+15],\n", " [ 3.783e+16, -1.081e+16, -5.404e+15],\n", " [ 1.892e+16, -5.404e+15, -2.702e+15]])\n" ] } ], "source": [ "a = np.array([[1,-2,3],[2,-3,4],[3,-8,13]])\n", "pprint(linalg.det(a))\n", "pprint(linalg.inv(a))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8.0\n", "array([[ 0.125, -0.125, 0.375],\n", " [ 0.625, 0.375, -0.125],\n", " [ 0.375, 0.625, 0.125]])\n" ] } ], "source": [ "a = np.array([[1,2,-1],[-1,-1,2],[2,-1,1]])\n", "pprint(linalg.det(a))\n", "pprint(linalg.inv(a))" ] }, { "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 }