$a_{ij}$ 第i行第j列 $$ A = \begin{pmatrix}a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \end{pmatrix} $$
矩阵A的列数必须和向量的元素个数一致
矩阵A的行数没有限制
矩阵T实际上将向量a转换成了向量b
可以把矩阵理解成向量的函数
矩阵A的列数必须和矩阵B的行数一致
A是mk的矩阵,B是kn的矩阵,则结果矩阵为m*n的矩阵
矩阵乘法不遵守交换律 $A \cdot B \neq B \cdot A$ 即使可以相乘(如方阵)结果也可能不一样
矩阵乘法遵守:$(A \cdot B) \cdot C = A \cdot (B \cdot C) \neq (B \cdot C) \cdot A$
矩阵乘法遵守:$A \cdot (B+C) = A \cdot B + A \cdot C$ 或 $(B+C) \cdot A = B \cdot A + C \cdot A$
矩阵的幂: $A^k = A \cdot A \cdot ... \cdot A$
只有方阵才可以进行矩阵的幂运算
$(A+B)^2 = A^2 + A \cdot B + B \cdot A + B^2 \neq A^2 + 2AB + B^2$
$P=\begin{pmatrix} 0 & 0 \\ 4 & 0 \\ 5 & 3 \end{pmatrix}$
$P^T = \begin{pmatrix} 0 & 4 & 5 \\ 0 & 0 & 3 \end{pmatrix}$
if $A = (a_{ij})$ then $A^T = (a_{ji})$
$(A^T)^T = A$
$(A+B)^T = A^T + B^T$
$(k \cdot A)^T = k \cdot A^T$
$(A \cdot B)^T = B^T \cdot A^T$
import numpy as np
# 矩阵的创建
# 默认是以行为存储单位
A = np.array([[1,2],[3,4]])
print("矩阵A:",A)
print("矩阵A的形状:",A.shape)
print("矩阵A的转置矩阵:",A.T)
print("矩阵A的第二行第二列:",A[1,1])
print("矩阵A的第一行:",A[0]) # 取特定行 或者 A[0,:]
print("矩阵A的第二列:",A[:,1]) # 取特定列
# 矩阵的基本运算
B = np.array([[5,6],[7,8]])
print("A + B = {}".format(A+B))
print("A * 10 = {}".format(A*10))
print("A x B = {}".format(A.dot(B)))
$I_n = (i_{kj})\left\{ \begin{array}{ll} 1 & \mbox{if } k = j \\ 0 & \mbox{if } k \neq j \end{array} \right.$
$I_n = \begin{pmatrix} 1 & 0 & ... & 0 \\ 0 & 1 & ... & 0 \\ ... & ... & ... & ... \\ 0 & 0 & ... & 1 \end{pmatrix}$
$I \cdot A = A$
$A \cdot I = A$
回忆:数字系统: $x \cdot (x^{-1})=1$
数字系统中只有0没有倒数,而矩阵中有无数矩阵是没有逆矩阵的,一旦找到矩阵有逆矩阵,则成为可逆矩阵,或者叫非奇异矩阵(non-singular),因为99.999%的随机生成的矩阵都是可逆的。
矩阵中 $AB = BA = I$ ($I$是单位矩阵),则称B是A的逆矩阵,记做: $B = A^{-1}$
对于矩阵A,存在矩阵B,满足$AB = BA = I$ ,矩阵A可逆,B唯一;
不可逆的矩阵称为奇异矩阵(singular)
如果 $BA = I$,则称B是A的左逆矩阵;
如果 $AC = I$,则称C是A的右逆矩阵;
如果一个矩阵A既存在左逆矩阵B,又存在右逆矩阵C,则B=C
可逆矩阵一定是方阵,只有方阵才有可能可逆,非方阵一定不可逆
$ A^0 = I $
$ A^{-1} = A的逆矩阵 $
$ A^{-2} = (A^{-1})^2 (A的逆矩阵的平方)$
# 单位矩阵
I = np.identity(2)
print(I)
print("A.dot(I)={}".format(A.dot(I)))
print("I.dot(A)={}".format(I.dot(A)))
# 逆矩阵
invA = np.linalg.inv(A)
print("invA: ",invA)
print("invA.dot(A)={}".format(invA.dot(A)))
C = np.array([[1,2,3], [4,5,6]])
np.linalg.inv(C) # 报错“Last 2 dimensions of the array must be square”,因为C不是方阵
$(A \cdot B)^T = B^T \cdot A^T$
$(A \cdot B)^{-1} = B^{-1} \cdot A^{-1}$
一起记忆,但只在有些特定情况下,转置才等于逆,不能混为一谈。
$ (A^T)^{-1} = (A^{-1})^T $
$ \begin{pmatrix}1 & 2 \\ 4 & 5 \end{pmatrix} \cdot \begin{pmatrix}x \\ y \end{pmatrix} $
= $\begin{pmatrix}x + 2y\\ 4x + 5y \end{pmatrix}$ (行视角)
= $\begin{pmatrix} 1 \\ 4 \end{pmatrix} x + \begin{pmatrix} 2 \\ 5 \end{pmatrix} y $ (列视角)