<jupyter_start><jupyter_text>メモ

理工系の数理 線形代数 永井敏隆 永井敦 裳華房

を読む。  ベクトルの基本演算<jupyter_code># ベクトルの基本演算
%%latex
\bm{a} = \begin{pmatrix}
    a_1 \\
    \vdots \\
    a_n
\end{pmatrix}, \quad
\bm{b} = \begin{pmatrix}
    b_1 \\
    \vdots \\
    b_n
\end{pmatrix}
\in \mathrm{R}^n , \quad p \in \mathrm{R} \ 
に対して、\\
\\
和 \quad \bm{a} + \bm{b} = 
\begin{pmatrix}
    a_1 + b_1 \\
    \vdots \\
    a_n + b_n
\end{pmatrix}, \quad 
スカラー倍 \quad p\bm{a}= 
\begin{pmatrix}
    pa_1\\
    \vdots \\
    pa_n
\end{pmatrix}, \quad \\
\\
内積 \quad (\bm{a}, \  \bm{b}) = a_1 b_1 + \dots + a_n b_n , \quad
大きさ \quad ||\bm{a}|| = \sqrt {a_1^2 +\dots + a_n^2 } \\
\\
(n=3 のとき) \ 外積 \quad \bm{a} \times \bm{b} = 
\begin{pmatrix}
    a_2 b_3 - a_3 b_2 \\
    a_3 b_1 - a_1 b_3 \\
    a_1 b_2 - a_2 b_1
\end{pmatrix}
# ベクトルの基本演算
from sympy import *
a, a_1, a_2, a_3 = symbols ('a, a_1, a_2, a_3')
a = Matrix([a_1, a_2, a_3])
b, b_1, b_2, b_3 = symbols ('b, b_1, b_2, b_3')
b = Matrix([b_1, b_2, b_3])
p = symbols('p')
display (a)
display (b)
display(a+b)
display(p*a)
display(a.dot(b))
display(a.norm())
display(a.cross(b))

# 行列の基本演算
%%latex
\displaystyle
A = (a_{ij}),\quad B= (b_{ij}) \quad (1 \leq i, j \leq n) \ に対して、\\
\\
AB = (a_{ij})(b_{ij}) = (c_{ij}), \quad c_ij=\sum_{k=1}^{n}a_{ik}b_{kj} \\
\\
転置行列 \quad {}^t\!A (a_{ij}) \quad (行と列の入れ替え) \\
\\
A が対称 (反対称) 行列 \quad \overset{定義}{\Longleftrightarrow} \quad {}^t\!A = A \quad (-A)\\
\\
A が直交行列 \quad \overset{定義}{\Longleftrightarrow} \quad {}^t\!AA = E

from sympy import *
a_ij,b_ij,c_ij=symbols('a_ij,b_ij,c_ij')
A,B,i,j = symbols('A,B,i,j')
A= MatrixSymbol('A',3,3)
display(Eq(A, (a_ij)))
display(Eq(B, (b_ij)))
display(1 <= i)
display(j<= n)
display(A*B)
display(Eq(a_ij * b_ij, c_ij))
display(Eq(c_ij, Sum(a_ij * b_ij, (k, 1, n))))
display(A.T*A)
display(Eq(A.T*A, A))
display(Eq(A.T*A, -A))
E = MatrixSymbol('E',3,3)
display(Eq(A.T*A, E))<jupyter_output><empty_output><jupyter_text>行基本変形

1. ある行と他の行を入れ替える。
1. ある行を何倍かして他の行に加える。
1. ある行を定数 (0 でない) 倍する。<jupyter_code># 2,3次行列式
%%latex
\left|
\begin{array}{ccc}
    a_1 & a_2 \\
    b_1 & b_2 
\end{array}
\right| = a_1 b_2 - a_2 b_1 \\
\  \\
\left|
\begin{array}{ccc}
    a_1 & a_2 & a_3 \\
    b_1 & b_2 & b_3 \\
    c_1 & c_2 & c_3
\end{array}
\right| = a_1 b_2 c_3 + a_2 b_3 c_1 + a_3 b_1 c_2 - a_1 b_3 c_2 - a_2 b_1 c_3 - a_3 b_2 c_1

# 2,3次行列式
from sympy import *
a1,a2,a3,b1,b2,b3,c1,c2,c3 = symbols('a1,a2,a3,b1,b2,b3,c1,c2,c3')
A=Matrix([[a1,a2],[b1,b2]])
display(Eq(Determinant(A), det(A)))
B=Matrix([[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]])
display(Eq(Determinant(B), det(B)))
# 余因子展開 (4次行列式、1行目での余因子展開)
%%latex
\left|
\begin{array}{ccc}
    a_1 & a_2 & a_3 & a_4 \\
    b_1 & b_2 & b_3 & b_4 \\
    c_1 & c_2 & c_3 & c_4 \\
    d_1 & d_2 & d_3 & d_4
\end{array}
\right| 
= a_1 \varDelta_{11} + a_2 \varDelta_{12} + a_3 \varDelta_{13} + a_4 \varDelta_{14} \\
\  \\
= a_1 
\left|
\begin{array}{ccc}
    b_2 & b_3 & b_4 \\
    c_2 & c_3 & c_4 \\
    d_2 & d_3 & d_4
\end{array}
\right| - a_2
\left|
\begin{array}{ccc}
    b_1 & b_3 & b_4 \\
    c_1 & c_3 & c_4 \\
    d_1 & d_3 & d_4
\end{array}
\right| + a_3
\left|
\begin{array}{ccc}
    b_1 & b_2 & b_4 \\
    c_1 & c_2 & c_4 \\
    d_1 & d_2 & d_4
\end{array}
\right| - a_4
\left|
\begin{array}{ccc}
    b_1 & b_2 & b_3 \\
    c_1 & c_2 & c_3 \\
    d_1 & d_2 & d_3
\end{array}
\right| 
# 余因子展開 cofactor expansion の sympy での対応がわからない
# 余因子展開について学んだあとで再挑戦しよう
import sympy.matrices
# help(sympy.matrices.Matrix.cofactor_matrix)
help(sympy.matrices.Matrix)<jupyter_output>Help on class MutableDenseMatrix in module sympy.matrices.dense:

class MutableDenseMatrix(DenseMatrix, sympy.matrices.matrices.MatrixBase)
 |  MutableDenseMatrix(*args, **kwargs)
 |  
 |  Base class for matrix objects.
 |  
 |  Method resolution order:
 |      MutableDenseMatrix
 |      DenseMatrix
 |      sympy.matrices.matrices.MatrixBase
 |      sympy.matrices.matrices.MatrixDeprecated
 |      sympy.matrices.matrices.MatrixCalculus
 |      sympy.matrices.matrices.MatrixEigen
 |      sympy.matrices.matrices.MatrixSubspaces
 |      sympy.matrices.matrices.MatrixReductions
 |      sympy.matrices.matrices.MatrixDeterminant
 |      sympy.matrices.common.MatrixCommon
 |      sympy.matrices.common.MatrixArithmetic
 |      sympy.matrices.common.MatrixOperations
 |      sympy.matrices.common.MatrixProperties
 |      sympy.matrices.common.MatrixSpecial
 |      sympy.matrices.common.MatrixShaping
 |      sympy.matrices.common.MatrixRequired
 |      sympy.printing.defaults.Printable
 |      bu[...]
{'fraction_non_alphanumeric': 0.18335835299163628, 'fraction_numerical': 0.041389663306883984, 'mean_word_length': 2.660910518053375, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '306540', 'license': 'MIT', 'n_tokens_mistral': 2467, 'n_tokens_neox': 2453, 'n_words': 410, 'path': 'linear_nagai.ipynb', 'repo_name': 'kalz2q/myjupyternotebooks', 'size': '4663'}