#!/usr/bin/env python # coding: utf-8 # # Table of Contents #

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