OI与线性代数
作者:互联网
OI与线性代数
特别鸣谢
本博客\(50\%\)以上贺自本校高二巨佬lwlaymh
这是他的博客:https://lwlaymh.github.io
另外有\(15\%\)左右贺自洛谷题解,CSDN或知乎
仅为个人学习所用
高中向量基础
向量
仅含一列的矩阵称为列向量,或简称向量.
包含两个元素的向量如下所示:
\[\overrightarrow{w}=\begin{bmatrix} w_1\\ w_2 \end{bmatrix} \]其中\(w_1\)和\(w_2\)是任意实数,我们称形如这样的包含两个元素的向量集合为\(\mathbb{R}^2\).
二维向量对应一条二维平面坐标系中的起点为原点的有向线段.
向量的模长
为了不与后面讲的行列式冲突,我们将向量的模长写作双竖线
如向量\(\vec a\)的模长记作\(||\vec a||\)
向量的运算
两个向量相等当且仅当它们对应位置的元素相等.
两个向量的和为它们对应位置之和所构成的向量.
向量数乘一个数即该向量的每个位置都乘上这个数的结果向量.
向量的运算满足以下性质:
\[\begin{array}{c} 1.\overrightarrow{u}+\overrightarrow{v}=\overrightarrow{v}+\overrightarrow{u} \\ 2.(\overrightarrow{u}+\overrightarrow{v})+\overrightarrow{w}=\overrightarrow{u}+(\overrightarrow{v}+\overrightarrow{w})\\ 3.\overrightarrow{u}+\overrightarrow{0}=\overrightarrow{u}\\ 4.\overrightarrow{u}+(-\overrightarrow{u})=\overrightarrow{0}\\ 5.c(\overrightarrow{u}+\overrightarrow{v})=c\overrightarrow{u}+c\overrightarrow{v}\\ 6.(c+d)\overrightarrow{u}=c\overrightarrow{u}+d\overrightarrow{u}\\ 7.c(d\overrightarrow{u})=(cd)\overrightarrow{u}\\ 8.1\overrightarrow{u}=\overrightarrow{u} \end{array} \]子空间
我们定义\(\mathbb{R}^n\)的一个子空间是它的一个子集\(H\),具有以下三个性质:
向量的线性组合
给定\(\mathbb{R}^n\)中向量\(\overrightarrow{v_1}\),\(\overrightarrow{v_2},\cdots,\overrightarrow{v_p}\)和标量\(c_1,c_2,\cdots,c_p.\)
我们称向量\(\overrightarrow{y}=c_1\overrightarrow{v_1}+c_2\overrightarrow{v_2}+\cdots+c_p\overrightarrow{v_p}\)为向量\(\overrightarrow{v_1},\overrightarrow{v_2},\cdots,\overrightarrow{v_p}\)以\(c_1,c_2,\cdots,c_p\)为权的线性组合.
对于向量\(\overrightarrow{v_1},\overrightarrow{v_2},\cdots,\overrightarrow{v_p}\),我们称它们的所有线性组合所成的集合为\(Span\{\overrightarrow{v_1},\overrightarrow{v_2},\cdots,\overrightarrow{v_p}\}\),也称为由\(\overrightarrow{v_1},\overrightarrow{v_2},\cdots,\overrightarrow{v_p}\)所生成的\(\mathbb{R}^n\)的子集.
不难发现,\(Span\)集合是\(\mathbb{R}^n\)的一个子空间,所以我们又称其为由\(\overrightarrow{v_1},\overrightarrow{v_2},\cdots,\overrightarrow{v_p}\)所生成的子空间.
我们考虑\(Span\)的几何意义:
对于\(\mathbb{R}^2\),当\(\vec{v_1}\)和\(\vec{v_2}\)不在一条直线上的时候,\(Span\{\vec{v_1},\vec{v_2}\}\)显然对应了整个平面.
对于\(\mathbb{R}^3\),当\(\vec{v_1}\)和\(\vec{v_2}\)不在一条直线上的时候,\(Span\{\vec{v_1},\vec{v_2}\}\)显然对应了三维空间中的一个过\(\vec{v_1},\vec{v_2}\)这两条直线的平面.
要判断\(\overrightarrow{b}\)是否在\(Span\{\overrightarrow{v_1},\overrightarrow{v_2},\cdots,\overrightarrow{v_p}\}\)中,即判断向量方程\(x_1\overrightarrow{v_1}+x_2\overrightarrow{v_2}+\cdots+x_p\overrightarrow{v_p}=\overrightarrow{b}\)是否有解.
平面向量数量积
已知两个非零向量\(\vec a,\vec b\),那么\(||\vec a||||\vec b||\cos \theta\)(\(\theta\)是\(a\)与\(b\)的夹角)叫做\(\vec a\)与\(\vec b\)的数量积或内积。记作\(\vec a\cdot \vec b\)。两个向量的数量积等于它们对应坐标的乘积的和。
即:若\(\vec a=(x_1,y_1),\vec b=(x_2,y_2)\),则\(a\cdot b=x_1\cdot x_2+y_1\cdot y_2\)
另外,如果使用矩阵乘法的方法表示数量积,那么有
\[x\cdot y=x^Ty=y^Tx \]可以从另一个角度解释为什么数量积运算具有交换律
性质
设 \(\vec a,\vec b\)为非零向量,则
-
设 \(\vec e\)是单位向量,且\(\vec e\)与 \(\vec a\)的夹角为\(\theta\),则 \(\vec e\cdot \vec a= \vec a\cdot \vec e=|| \vec a|||| \vec e||\cos\theta\)
-
\(\vec a\perp \vec b= \vec a\cdot \vec b=0\)
-
\(||\vec a\cdot \vec b||≤||\vec a||\cdot||\vec b||\),当且仅当\(\vec a\)与\(\vec b\)共线时,即\(\vec a//\vec b\)时等号成立
-
\(\cos\theta=\frac{\vec a\cdot \vec b}{||\vec a||||\vec b||}\)(\(\theta\)为向量\(\vec a,\vec b\)的夹角)
-
零向量与任意向量的数量积为\(0\)。
运算律
-
交换律: \(\vec a\cdot \vec b= \vec b\cdot \vec a\)
-
数乘结合律:\((\lambda \vec a)\cdot \vec b= \lambda( \vec a\cdot \vec b)= \vec a\cdot(\lambda \vec b)\)
-
分配律:\((\vec a+\vec b)\cdot \vec c= \vec a\cdot\vec c+ \vec b\cdot\vec c\)
几何意义
数量积 \(\vec a\cdot\vec b\)等于 \(\vec a\)的长度\(||\vec a||\)与 \(\vec b\)在 \(\vec a\)的方向上的投影\(||\vec b||\cos\theta\)的乘积
- 注意:投影和两向量的数量积都是数量,不是向量
向量正交
如果两个向量数量积不为\(0\),那么称这两个向量不正交,否则正交
向量的叉积(内积)
在空间中有两个向量:\(\vec a=(x_1,y_1,z_1)\), \(\vec b=(x_2,y_2,z_2)\),\(\vec a\)与 \(\vec b\)之间夹角为 \(\theta\)。
从代数角度计算:
\[\vec a\times \vec b=(y_1z_2-z_1y_2,z_1x_2-x_1z_2,x_1y_2-y_1x_2) \]从几何角度计算:
( \(\vec n\)为 \(\vec a\)与 \(\vec b\)所构成平面的单位向量)
\[\vec a\times \vec b=||\vec a || ||\vec b||\sin\theta \vec n \]其运算结果是一个向量,并且与这两个向量都垂直,是这两个向量所在平面的法线向量。使用右手定则确定其方向。
几何意义:
如果以向量\(\vec a\)和\(\vec b\) 为边构成一个平行四边形,那么这两个向量外积的模长与这个平行四边形的面积相等。
子空间的基
\(\mathbb{R}^n\)中子空间\(H\)的一组基是\(H\)中一个线性无关集,它生成\(H\).
子空间的坐标系
假设\(\mathcal{B}=\{\vec {b_1},\vec{b_2},\cdots,\vec{b_p}\}\)是子空间\(H\)的一组基.对于\(H\)中的任意向量\(\vec x\),若\(\vec x=c_1\vec{b_1}+c_2\vec{b_2}+\cdots+c_p\vec{b_p}\),那么我们称\(\mathbb{R}^p\)中的向量\([\vec x]_{\mathcal{B}}=\begin{bmatrix}c_1\\c_2\cdots\\c_p\end{bmatrix}\)为\(\vec x\)相对于\(\mathcal{B}\)的坐标向量,或称\(\vec x\)的\(\mathcal{B}-\)坐标向量.
子空间的维数
非零子空间\(H\)的维数(记作\(\dim H\))是\(H\)的任意一个基的向量个数,零子空间\(\{\vec 0\}\)的维数定义为\(0\).
基定理
设\(H\)是\(\mathbb{R}^n\)的\(p\)维子空间,\(H\)中任何恰好由\(p\)个元素组成的线性无关集构成\(H\)的一个基.
矩阵与行列式基础
矩阵
我们称有\(m\)行\(n\)列的矩阵为\(A_{m\times n}\),其中第\(i\)行第\(j\)列的元素称作\(a_{i,j}\).
也可以将其中中的列写作\(\mathbb{R}^m\)中向量的形式,即写作\(A_{m\times n}=\begin{bmatrix}\vec{a_1}&\vec{a_2}&\cdots&\vec{a_n}\end{bmatrix}.\)
线性无关与线性相关
称\(\mathbb{R}^n\)中一组向量\(\{\vec{v_1},\vec{v_2},\cdots,\vec{v_p}\}\)是线性无关的,当且仅当向量方程\(x_1\vec{v_1}+x_2\vec{v_2}+\cdots+x_p\vec{v_p}=\vec{0}\)仅有零解.
反之,称为线性相关,即存在一组不全为\(0\)的数\(c_1,c_2,\cdots,c_p使c_1\vec{v_1}+c_2\vec{v_2}+\cdots+c_p\vec{v_p}=\vec{0}\),这个式子也被称为\(\{\vec{v_1},\vec{v_2},\cdots,\vec{v_p}\}\)之间的线性相关关系.
这里有一个通俗的解释,我有b站,微博,知乎三个社交软件,有京东,淘宝,拼夕夕三个购物网站。
对于我而言,三个社交软件相互不可替代,那么称这三个社交软件线性无关;相反对于三个购物软件,相互之间可以替代,留一个就行了,所以它们之间是线性相关的
矩阵各列的线性无关
考虑矩阵
\[A=\begin{bmatrix}\vec{a_1}&\vec{a_2}&\cdots&\vec{a_n}\end{bmatrix} \]考虑矩阵方程\(A\vec{x}=\vec{0}\),显然\(A\)中的各列的每一个线性相关关系对应于方程\(A\vec{x}=\vec{0}\)的一个非零解.
向量的集合
定理1
两个向量的集合\(\{\vec{v_1},\vec{v_2}\}\)线性相关,当且仅当其中一个向量是另一个向量的倍数.这个集合线性无关,当且仅当其中任一个向量都不是另一个向量的倍数.
定理2
两个或更多向量的集合\(S=\{\vec{v_1},\vec{v_2},\cdots,\vec{v_p}\}\)线性相关,当且仅当其中至少有一个向量是其它向量的线性组合.
定理3
若一个向量组的向量个数超过每个向量的元素个数,那么这个向量组线性相关.
也就是说,\(\mathbb{R}^n\)中任意向量组\(\{\vec{v_1},\vec{v_2},\cdots,\vec{v_p}\}\)在\(p>n\)时线性相关.
证明:
考虑矩阵\(P=\begin{bmatrix}\vec{v_1}&\vec{v_2}&\cdots&\vec{v_p}\end{bmatrix}\),由于行比列少,该方程一定存在自由变量,即一定存在非零解.
- 若\(\mathbb{R}^n\)中任意向量组\(\{\vec{v_1},\vec{v_2},\cdots,\vec{v_p}\}\)中包含零向量,则其线性相关.
变换
由\(\mathbb{R}^n\)到\(\mathbb{R}^m\)的一个变换\(T\)时一个规则,它把\(\mathbb{R}^n\)中每个向量\(\vec{x}\)对应\(\mathbb{R}^m\)中的一个向量\(T(\vec x)\).
集合\(\mathbb{R}^n\)称为\(T\)的定义域,而\(\mathbb{R}^m\)称为\(T\)的余定义域,符号\(T:\mathbb{R}^n\rightarrow \mathbb{R}^m\)说明了这一点.
对于\(\mathbb{R}^n\)中的向量\(\vec{x}\),\(\mathbb{R}^m\)中向量\(T(\vec x)\)称为\(\vec x\)在\(T\)作用下的像.所有像\(T(\vec x)\)的集合称为\(T\)的值域.
若\(\mathbb{R}^m\)中的每个\(\vec b\)是\(\mathbb{R}^n\)中至少一个\(\vec x\)的像,则称这样的变换为把\(\mathbb{R}^m\)映射到\(\mathbb{R}^n\)上的,又叫满射.
若\(\mathbb{R}^m\)中的每个\(\vec b\)是\(\mathbb{R}^n\)中至多一个\(\vec x\)的像,则称这样的变换为一对一映射,又叫单射.
矩阵变换
即定义\(T:\mathbb{R}^n\rightarrow \mathbb{R}^m为T(\vec x)=A\vec x\),其中\(A\)是一个\(m\times n\)的矩阵.
线性变换
变换\(T\):\(\mathbb{R}^n\rightarrow \mathbb{R}^m\)是线性的,当且仅当它满足以下两个条件:
- 对\(T\)的定义域中一切的向量\(\vec{u},\vec{v}\),满足\(T(\vec{u}+\vec v)=T(\vec u)+T(\vec v)\).
- 对\(T\)的定义域中一切的向量\(\vec u\)和数\(c\),满足\(T(c\vec u)=cT(\vec u)\).
矩阵变换显然是线性变换.
线性变换有以下的两个性质:
\[T(\vec 0)=\vec 0\\ T(c\vec u+d\vec v)=cT(\vec u)+dT(\vec v) \]如果我们将第二条性值稍加推广,有:
\[T(c_1\vec v_1+c_2\vec v_2+\cdots+c_p\vec v_p)=c_1T(\vec v_1)+c_2T(\vec v_2)+\cdots+c_pT(\vec v_p) \]又被称作叠加原理.
定理4
设\(T:\mathbb{R}^n\rightarrow \mathbb{R}^m\)是线性变换,则存在唯一的矩阵\(A\)使得对\(\mathbb{R}^n\)中的一切\(\vec{x}\),满足\(T(\vec x)=A\vec x\).
事实上,\(A\)是\(m\times n\)的矩阵,它的第\(j\)列是向量\(T(\vec {e_j})\),其中\(\vec{e_j}\)是\(\mathbb{R}^n\)中单位矩阵\(E_n\)的第\(j\)列.
也即\(A=\begin{bmatrix}T(\vec e_1)&T(\vec{e_2})&\cdots&T(\vec e_{n})\end{bmatrix}\).
称\(A\)为变换\(T\)的标准矩阵.
\(A\)显然是唯一的,因为如果存在另一个\(B\)也满足这样,通过假设\(\vec x\)是单位矩阵\(E_n\)的某一列可以证明二者一定是相等的矩阵.
定理5
设\(T:\mathbb{R}^n\rightarrow \mathbb{R}^m\)是线性变换,\(A\)是\(T\)的标准矩阵,则\(T\)是单射当且仅当方程\(A\vec x=\vec 0\)仅有零解.
证明:
因为\(T\)是线性的,所以有\(T(\vec0)=\vec 0\),如果方程\(A\vec x=\vec 0\)有非零解,显然存在\(\vec x\)满足\(T(\vec x)=\vec 0\),即\(T\)不是单射的.
而若T不是单射的,则一定存在不相等的两个向量\(\vec u\)和\(\vec v满足T(\vec u)=T(\vec v)=\vec b\).
有\(T(\vec u-\vec v)=\vec 0\),则方程存在非零解.
定理6
设\(T:\mathbb{R}^n\rightarrow \mathbb{R}^m\)是线性变换,\(A\)是\(T\)的标准矩阵,则:
- \(T\)是\(\mathbb{R}^n\)到\(\mathbb{R}^m\)的满射,当且仅当\(A\)的列生成\(\mathbb{R}^m\).
- \(T\)是\(\mathbb{R}^n\)到\(\mathbb{R}^m\)的单射,当且仅当\(A\)的列线性无关.
1的证明基于下文线性方程组部分的定理10
2的证明基于定理5
差分方程
如果有矩阵\(A\)使\(\overrightarrow{x_{k+1}}=A\vec{x_k},k\in \mathbb{N}\),称该式子为线性差分方程.
行列式
一个矩阵\(A\)的行列式记作\(det(A)\)或\(|A|\)
2阶与3阶行列式的计算
对于一个二阶行列式
\[\left | \begin{matrix} {a}&{b}\\{c}&{d} \end{matrix}\right | =ad-bc \]对于一个三阶行列式
\[\left | \begin{matrix} {a_1}&{a_2}&{a_3}\\{b_1}&{b_2}&{b_3}\\{c_1}&{c_2}&{c_3} \end{matrix}\right | =\\a_1b_1c_1+a_2b_3c_1+a_3b_1c_2-a_3b_2c_1-a_2b_1c_3-a_1b_3c_2 \]矩阵运算
定义矩阵加法:若矩阵\(A\)和\(B\)都是\(m\times n\)矩阵,则它们的和也是\(m\times n\)矩阵,且元素为\(A\)和\(B\)中对应元素的加和.
定义标量乘法:若\(c\)是标量而\(A\)是一个\(m\times n\)矩阵,则\(cA\)是一个\(m\times n\)矩阵,且元素为\(A\)中对应元素的\(c\)倍.
定义矩阵乘法:若\(A\)是\(m\times n\)矩阵,\(B\)是\(n\times p\)矩阵,那么它们的乘积\(AB_{i,j}=\sum_{k=1}^nA_{i,k}B_{k,j}.\)
矩阵乘法也可以表示为:若\(A\)是\(m\times n\)矩阵,\(B\)是\(n\times p\)矩阵,且\(B=\begin{bmatrix}\vec{b_1}&\vec{b_2}&\cdots&\vec{b_p}\end{bmatrix}\)那么它们的乘积
\[AB=\begin{bmatrix}A\vec{b_1}&A\vec{b_2}&\cdots&A\vec{b_p}\end{bmatrix} \]若\(AB=BA\)我们称\(A\)和\(B\)彼此可交换.
定义乘幂\(A^k\)为\(k\)个\(A\)连续相乘的乘积.
转置矩阵
对于矩阵
\[A= \begin{bmatrix} {1}&{3}&{4}&{5}\\{2}&{6}&{1}&{9} \end{bmatrix} \]它的转置矩阵是
\[A^T= \begin{bmatrix} {1}&{2}\\{3}&{6}\\{4}&{1}\\{5}&{9} \end{bmatrix} \]转置矩阵不影响矩阵的行列式
形式化地定义为
对于\(m\times n\)矩阵\(A\),它的转置是一个\(n\times m\)矩阵,该矩阵的列是由\(A\)的对应行构成的,记作\(A^T\),即\(A^T_{i,j}=A_{j,i}\).
特殊矩阵
1. 单位矩阵
\[\begin{bmatrix} {1}&{0}&{\cdots}&{0} \\{0}&{1}&{\cdots}&{0} \\{\vdots}&{\vdots}&{\ddots}&{\vdots} \\{0}&{0}&{\cdots}&{1} \end{bmatrix} \]2. 行矩阵和列矩阵
只有\(1\)行或者\(1\)列的矩阵,又称为行向量,列向量
3. 对角矩阵
\[\begin{bmatrix} {a_1}&{0}&{\cdots}&{0} \\{0}&{a_2}&{\cdots}&{0} \\{\vdots}&{\vdots}&{\ddots}&{\vdots} \\{0}&{0}&{\cdots}&{a_n} \end{bmatrix} \]可以简记为\(A=diag(a_1,a_2,\cdots,a_n)\)
4. 标量矩阵
当对角矩阵中的值全部相等,那么这个矩阵就是标量矩阵
5. 单位矩阵
标量矩阵中的值全为\(1\),就是单位矩阵,简写为\(E\)
6. 零矩阵
值全为\(0\)的矩阵,简写为\(O_{n\times m}\)
7. 上/下三角矩阵
下三角矩阵
\[\begin{bmatrix} {a_{1,1}}&{0}&{\cdots}&{0} \\{a_{2,1}}&{a_{2,2}}&{\cdots}&{0} \\{\vdots}&{\vdots}&{\ddots}&{\vdots} \\{a_{n,1}}&{a_{n,2}}&{\cdots}&{a_{n,m}} \end{bmatrix} \]上三角矩阵
\[\begin{bmatrix} {a_{1,1}}&{a_{1,2}}&{\cdots}&{a_{1,m}} \\{0}&{a_{2,2}}&{\cdots}&{a_{2,m}} \\{\vdots}&{\vdots}&{\ddots}&{\vdots} \\{0}&{0}&{\cdots}&{a_{n,m}} \end{bmatrix} \]特殊性质:三角矩阵的行列式是其主对角线上元素的乘积
8. 方阵
\(n=m\)的矩阵就是方阵,只有方阵才有行列式
9. 对称矩阵
若一个方阵转置后不变,那么称这个方阵是一个对称矩阵
换句话说,如果我们要证明一个矩阵是对称矩阵,那就是要证明\(A^T=A\)
其他矩阵
有一些更为复杂的矩阵/行列式将会在下文介绍,如Householder矩阵,阶梯矩阵,伴随矩阵,范德蒙德行列式等
对矩阵乘法与行列式的理解
一个秩为\(k\)的矩阵本质上是一个\(k\)维空间中的线性变换,或者可以将其看做一种映射
一个矩阵的行列式是它映射时的映射系数,可以类别成相似比
矩阵的运算律
矩阵加法
设\(A,B,C\)为相同维数的矩阵,\(r\),\(s\)为标量,则有:
\[A+B=B+A.\\ (A+B)+C=A+(B+C)\\ r(A+B)=rA+rB\\ (r+s)A=rA+sA\\ r(sA)=(rs)A \]矩阵乘法
设\(A\)为\(m\times n\)矩阵,\(B\)和\(C\)的维数使下列各式的乘积有定义,\(c\)是标量,有:
乘法结合律:\((AB)C=A(BC)\).
乘法左分配律:\(A(B+C)=AB+AC\).
乘法右分配律:\((B+C)A=BA+CA\).
\(c(AB)=(cA)B=A(cB)\).
乘法恒等式:\(E_mA=A=AE_n\).
转置矩阵
设A和B的维数使下列各式的乘积有定义,\(c\)是标量,有:
\[(A^T)^T=A.\\ (A+B)^T=A^T+B^T.\\ (rA)^T=rA^T.\\ (AB)^T=B^TA^T \]矩阵的基本变换
- 交换两行(列)的元素
- 将某一行的元素乘上一个\(k\)
- 将某一行的元素乘上一个\(k\)后加到另一行上
它们对行列式的影响分别为
- 变号
- 乘\(k\)
- 不变
线性方程组
定义
包含变量\(x_1,x_2\cdots,x_n\)的线性方程是形如\(a_1x_2+a_2x_2+\cdots+a_nx_n=b\)的方程,其中b与系数是实数或复数,通常是已知数.
线性方程组是由一个或几个包含相同变量\(x_1,x_2,\cdots,x_n\)的线性方程组成的.
线性方程组的解
线性方程组的解是一组数\(\{s_1,s_2,\cdots,s_n\}\),用这组数分别代替\(x_1,x_2,\cdots x_n\)时所有方程的两边相等.
线性方程组所有可能的解的集合称为线性方程组的解集.
等价的线性方程组
若两个线性方程组有相同的解集,则称这两个方程组是等价的.
相容的线性方程组
我们称一个线性方程组是相容的,当且仅当它有一个解或无穷多个解,否则,称其为不相容的.
一个线性方程组要么无解,要么有一个解,要么有无穷多个解.
线性方程组的系数矩阵和增广矩阵
考虑以下m个线性方程所组成的线性方程组:
\[\begin{cases} a_{1,1}x_1+a_{1,2}x_2+...+a_{1,n}x_n=b_1\\ a_{2,1}x_1+a_{2,2}x_2+...+a_{2,n}x_n=b_2\\ ...\\ a_{m,1}x_1+a_{m,2}x_2+...+a_{m,n}x_n=b_m \end{cases} \]我们称它的系数矩阵为:
\[\begin{bmatrix} a_{1,1}&a_{1,2}&...&a_{1,n}\\ a_{2,1}&a_{2,2}&...&a_{2,n}\\ ... &...&...&...\\ a_{m,1}&a_{m,2}&...&a_{m,n} \end{bmatrix} \]两个系数矩阵是等价的当且仅当它们所对应的线性方程组是等价的.
而称它的增广矩阵为:
\[\begin{bmatrix} a_{1,1}&a_{1,2}&...&a_{1,n}&b_1\\ a_{2,1}&a_{2,2}&...&a_{2,n}&b_2\\ ... &...&...&...&...\\ a_{m,1}&a_{m,2}&...&a_{m,n}&b_m \end{bmatrix} \]两个增广矩阵是等价的当且仅当它们所对应的线性方程组是等价的.
矩阵的初等行变换
考虑如何解一个线性方程:根据我们已有的知识,等式可以任意两端加减相等的两项,也可以同时乘以一个不为0的数,同时等式的顺序并不重要.
我们用这一点来考虑如何解线性方程组.这里主要是考虑如何对线性方程组的增广矩阵进行变换.
由上面的知识,我们意识到对线性方程组的增广矩阵进行以下变换,是不会改变其解集的:
考虑矩阵的三种初等变换
- (倍加变换)把某一行换成它本身与另一行的倍数的和,记作\(R_i+kR_j\rightarrow R_i\).
- (对换变换)把两行对换,记作\(R_i\leftrightarrow R_j\).
- (倍乘变换)把某一行的所有元素乘以同一个非零数\(k\),记作\(kR_i\rightarrow R_i,k\ne0\).
由此可以发现,两个增广矩阵是等价的当且仅当其中一个增广矩阵可以通过若干次初等行变换变为另一个增广矩阵.
我们可以使用这些初等行变换来变换一个矩阵,使得它有一些特殊性质.
阶梯形矩阵
若矩阵的一行的元素全为\(0\),称这一行为矩阵的一个零行,否则称为非零行.
非零行的最左边的非零元素称为该行的先导元素.
若一个矩阵有以下性质,则称它为阶梯形矩阵\((REF)\):
- 每一个非零行都在零行之上
- 某一行的先导元素所在的列位于前一行先导元素的右边
- 某一先导元素所在列下方元素都是\(0\)
- 若一个矩阵还满足以下性质,则称它为简化阶梯形\((RREF)\)
- 每一非零行的先导元素是\(1\)
- 每一先导元素\(1\)是该元素所在列唯一的非零元素
显然,任意一个矩阵都可以通过若干次初等行变换变为一个阶梯形矩阵或简化阶梯形矩阵.
一个矩阵所对应的阶梯形矩阵中先导元素的位置,被称为这个矩阵的一个主元位置,包含一个主元位置的列称为主元列.
注意:这里的位置是矩阵中的位置而非元素的位置,这也就是说主元位置上的元素可以不是最终的主元位置上的元素移动而来的.
定理7:简化阶梯形矩阵的唯一性
每个矩阵通过初等行变换只有可能对应唯一一个简化阶梯形矩阵.
证明:暂略
解线性方程组
考虑将线性方程组的增广矩阵通过初等行变换变换为一个简化阶梯形矩阵,我们称对应于主元列的变量为主变量,其它变量称为自由变量
如果线性方程组是相容的,显然我们可以使用自由变量表示主变量,从而得到一组解.我们得到的主变量的关于自由变量的表达式称作解集的参数表示.
这也意味着,如果没有自由变量,该方程组只有一解;如果有自由变量,由于自由变量取值任意,该方程组有无数组解.
而考虑何时线性方程组不相容,由于自由变脸取值任意,显然唯一的不相容可能性只是出现了\(0x_1+0x_2+\cdots+0x_n=b,b\ne 0\)的情况.
以上的分析过程引出定理2.
定理8:存在与唯一性定理
线性方程组相容的充要条件是增广矩阵的最右列不是主元列.
若线性方程组相容,则它的解集可能有两种情形:
没有自由变量时,只有一个解
有自由变量时,有无数个解
矩阵方程
设\(A\)是\(m\times n\)的矩阵,它的各列是\(\vec{a_1},\vec{a_2},\cdots,\vec{a_n}\),若\(\vec{x}\)是\(\mathbb{R}^n\)中的向量,则\(Ax\)即\(A\)的各列以\(\vec{x}\)中对应元素为权的线性组合,也就是:
如果令\(\vec{b}\in\mathbb{R}^m\),那么上式可以写成\(A\vec{x}=\vec{b}\),我们把形如这样的方程称作矩阵方程.
定理9
若\(A\)是\(m\times n\)矩阵,它的各列为\(\vec{a_1},\vec{a_2},\cdots\vec{a_n}\),而\(\vec{b}\in\mathbb{R}^m,\vec{x}\in\mathbb{R}^n\),那么:
矩阵方程\(A\vec{x}=\vec{b}\),向量方程\(x_1\vec{a_1}+x_2\vec{a_2}+\cdots+x_n\vec{a_n}=\vec{b}\),增广矩阵为
\[\begin{bmatrix}\vec{a_1}&\vec{a_2}&\cdots&\vec{a_n}&\vec{b}\end{bmatrix} \]的线性方程组有相同的解集.
定理10
若\(A\)是\(m\times n\)矩阵,它的各列为\(\vec{a_1},\vec{a_2},\cdots\vec{a_n}\),那么以下命题逻辑等价:
-
\(\forall \vec b\in\mathbb{R}^m\),方程\(A\vec{x}=\vec{b}\)有解.
-
\(\forall \vec b\in\mathbb{R}^m,\vec{b}\)是\(A\)的列的一个线性组合.
-
\(A\)的各列生成\(\mathbb R^m\).
-
\(A\)在每一列都有一个主元位置.
定理11
若\(A\)是\(m\times n\)矩阵,它的各列为\(\vec{a_1},\vec{a_2},\cdots\vec{a_n}\),而\(\vec{u},\vec{v}\in\mathbb{R}^n\),那么:
\[A(\vec{u}+\vec{v})=A\vec{u}+A\vec{v}\\ A(c\vec{u})=c(A\vec{u}) \]齐次线性方程组
若一个线性方程组可以被写成\(A\vec{x}=\vec{0}\)的形式,其中\(A\)是\(m\times n\)的矩阵,\(\vec{x}\)是\(\mathbb{R}^n\)中的向量,称其为齐次线性方程组.
显然齐次线性方程组至少有一个解,即\(\vec{x}=\vec{0}\),这个解称作线性齐次方程组的零解.
而满足\(\vec{x}\ne\vec{0}\)的解称作线性齐次方程组的非零解.
根据定理2,显然其存在非零解的充要条件是该方程至少有一个自由变量.
考虑自由变量的取值任意,而且主变量一定是由若干个自由变量乘以定值之和得到的.
我们把这些定值看作向量,把自由向量看作权重,我们发现:齐次线性方程组的解集总可以表示为\(Span\{\vec{v_1},\vec{v_2},\cdots,\vec{v_{p}}\}\),当然,如果该方程组仅有零解,那表示为\(Span\{\vec{0}\}\).
把解表示为\(Span\{\vec{v_1},\vec{v_2},\cdots,\vec{v_{p}}\}\)中元素的形式,称之为解的参数向量形式.
定理12
对于方程\(A\vec{x}=\vec{b}\),它的解一定可以写成\(\vec{x}=\vec{p}+\vec{x’}\)的形式,其中\(\vec{x’}\)是方程\(A\vec{x}=\vec{0}\)的一组解,\(\vec{p}\)是方程\(A\vec{x}=\vec{b}\)的一组特解.
对于该定理的几何意义,我们考虑\(\vec{x}\in \mathbb{R}^2\)中,即\(\vec{x}=\vec{p}+t\vec{u}\),如果我们把它看为向量加法的形式,它的解集应该是在一条直线上的任意向量,这条直线即\(\vec{u}\)所在直线沿向量\(\vec{p}\)方向平移后的直线.
高斯消元法求解线性方程组
算法流程
-
由最左的非零列开始,这是一个主元列。主元位置在该列顶端。
-
在主元列中选取一个非零元作为主元。若有必要的话,对换两行使这个元素移到主元位置上。
-
用倍加行变换将主元下面的元素变成\(0\).
-
暂时不管包含主元位置的行以及它上面的各行,对剩下的子矩阵使用上述的三个步骤直到没有非零行需要处理为止。
-
由最右面的主元开始,把每个主元上方的各元素变成\(0\).若某个主元不是1,用倍乘变换将它变成\(1\).
对每一行重复上述步骤。
最后,我们就得到了原矩阵的简化阶梯形。
代码
void gauss()
{
F(i,0,n-1)
{
int now=i;
F(j,i,n-1)//选择绝对值大的那个数作为主元
if(fabs(A[j][i]-A[now][i])<=eps) now=j;
F(j,0,n)
swap(A[i][j],A[now][j]);//交换位置
if(fabs(A[i][i])<=eps)
{
puts("No Solution");
flag=false;
return;
}
F(j,i+1,n) A[i][j]/=A[i][i];//将该位的系数化为1
F(j,0,n-1)
if(i!=j)
F(k,i+1,n) A[j][k]-=A[j][i]*A[i][k];
//将其他方程的该列化为0
}
}
高斯-约旦消元法
转自洛谷题解
算法流程
相对于传统的高斯消元,约旦消元法的精度更好、代码更简单,没有回带的过程。
约旦消元法大致思路如下:
- 选择一个尚未被选过的未知数作为主元,选择一个包含这个主元的方程。
- 将这个方程主元的系数化为1。
- 通过加减消元,消掉其它方程中的这个未知数。
- 重复以上步骤,直到把每一行都变成只有一项有系数。
用矩阵表示每一项系数以及结果
代码
#include<bits/stdc++.h>
#define re register
#define il inline
#define debug printf("Now is %d\n",__LENE__);
using namespace std;
#define maxn 105
#define D double
D a[maxn][maxn];
int n;
int main()
{
scanf("%d",&n);
for(re int i=1;i<=n;++i)
{
for(re int j=1;j<=n+1;++j)
{
scanf("%lf",&a[i][j]);
}
}
for(re int i=1;i<=n;++i)//枚举列(项)
{
re int max=i;
for(re int j=i+1;j<=n;++j)//选出该列最大系数
{
if(fabs(a[j][i])>fabs(a[max][i]))
//fabs是取浮点数的绝对值的函数
{
max=j;
}
}
for(re int j=1;j<=n+1;++j)//交换
{
swap(a[i][j],a[max][j]);
}
if(!a[i][i])//最大值等于0则说明该列都为0,肯定无解
{
puts("No Solution");
return 0;
}
for(re int j=1;j<=n;++j)//每一项都减去一个数(即加减消元)
{
if(j!=i)
{
re D temp=a[j][i]/a[i][i];
for(re int k=i+1;k<=n+1;++k)
{
a[j][k]-=a[i][k]*temp;
//a[j][k]-=a[j][i]*a[i][k]/a[i][i];
}
}
}
}
//上述操作结束后,矩阵会变成这样
/*
k1*a=e1
k2*b=e2
k3*c=e3
k4*d=e4
*/
//所以输出的结果要记得除以该项系数,消去常数
for(re int i=1;i<=n;++i)
{
printf("%.2lf\n",a[i][n+1]/a[i][i]);
}
return 0;
}
高斯消元法在OE中的应用
- 求解线性齐次方程组
- 求解逆矩阵
- \(n\)维圆心求解问题
- 求解成环DP
- 多项式插值
常系数齐次线性递推
问题
给定一个线性递推数列
\[\lbrace f_i \rbrace \]的前\(k\)项 \(f_0\cdots f_{k-1}\)和其递推式\(f_n=\sum_{i=1}^ka_if_{n-i}\)的各项系数\(a_i\),求\(f_n\)
矩阵快速幂做法
我们构造它的初始矩阵为
\[A= \begin{equation*} \begin{bmatrix} {f_0}&{f_1}&{f_2}&{\cdots}&{f_{k-1}} \end{bmatrix} \end{equation*} \]加速矩阵为
\[B= \begin{bmatrix} {0}&{0}&{0}&{\cdots}&{0}&{a_1} \\{1}&{0}&{0}&{\cdots}&{0}&{a_2} \\{0}&{1}&{0}&{\cdots}&{0}&{a_3} \\{\vdots}&{\vdots}&{\vdots}&{\ddots}&{0}&{a_{k-1}} \\{0}&{0}&{0}&{\cdots}&{1}&{a_k} \end{bmatrix} \]由此,时间复杂度为\(O(k^3\log n)\)
瓶颈在于如何快速求出加速矩阵\(A^{n-k+1}\)
为了解决这个问题,我们可以引出常系数齐次线性递推
先介绍一些前置知识
特征值与特征向量
矩阵乘上列向量仍然是一个列向量
若对于矩阵\(A\),存在一个列向量\(\vec v\)和一个常数\(\lambda\),使得
\[A\vec v=\lambda\vec v \]那么称\(\vec v\)为矩阵\(A\)的特征向量,\(\lambda\)为矩阵\(A\)的特征值,上面那个方程称为矩阵\(A\)的特征方程
令\(\vec v\)为初始矩阵,\(A\)为加速矩阵,那么有方程
\[\begin{bmatrix} {a_1}&{a_2}&{a_3}&{\cdots}&{a_{k-1}}&{a_k} \\{0}&{0}&{0}&{\cdots}&{0}&{1} \\{0}&{0}&{0}&{\cdots}&{1}&{0} \\{\vdots}&{\vdots}&{\vdots}&{\ddots}&{\vdots}&{\vdots} \\{0}&{1}&{0}&{\cdots}&{0}&{0} \end{bmatrix} \times \begin{bmatrix} {f_k}\\{f_{k-1}}\\f_{k-2}\\\vdots\\f_{1} \end{bmatrix} = \begin{bmatrix} {f_k+1}\\{f_{k}}\\f_{k-1}\\\vdots\\f_{2} \end{bmatrix} =\lambda\vec v= \begin{bmatrix} {\lambda f_k}\\{\lambda f_{k-1}}\\\lambda f_{k-2}\\\vdots\\\lambda f_{1} \end{bmatrix} \]发现
\[f_i=\lambda f_{i-1}=\lambda ^2 f_{i-2}=\cdots=\lambda ^{i-1} f_1 \]又因为
\[f_{k+1}=a_1f_k+a_2f_{k-1}+\cdots+a_kf_{1} \]将\(f_i\)全部换成\(f_1\)
那么有
\[\lambda^kf_1=a_1\lambda ^{k-1}f_1+a_2\lambda ^{k-2}f_1+\cdots+a_k\lambda ^0f_1 \\\lambda^k=a_1\lambda ^{k-1}+a_2\lambda ^{k-2}+\cdots+a_k\lambda ^0 \\\lambda^k-a_1\lambda ^{k-1}-a_2\lambda ^{k-2}-\cdots-a_k\lambda ^0=0 \]我们设
\[\varphi(x)=\lambda^k-a_1\lambda ^{k-1}-a_2\lambda ^{k-2}-\cdots-a_k\lambda ^0 \]写高级点
\[\varphi(x)=\lambda ^k-\sum_{i=1}^ka_i\lambda^{k-i} \]此时称\(\varphi(x)\)为矩阵\(A\)的特征多项式
它也可以这样表示
\[A\vec v=\lambda\vec v \\(A-E\lambda)\vec v=0 \]特征多项式
\[\varphi(x)=\mid A-E\lambda\mid \]考虑当\(x=A\),有
\[\varphi(A)=\mid A-EA\mid=0 \]即对于矩阵\(A\)的特征多项式\(\varphi(x)\),有\(\varphi(A)=0\),这被称为\(Cayley-Hamilton定理\)
常系数齐次线性递推
前置知识说完了,考虑我们原先的问题
如何快速求出\(A^{n-k+1}\)
我们将问题简化为求\(A^n\),这与上面那个问题在规模上是等价的
考虑多项式除法/取模
\[x^n=\varphi(x)g(x)+r(x) \]其中\(g(x),r(x)\)为两个多项式,此时我们可以利用前面学到的多项式取模求得\(r(x)\),但这有什么用呢?
将其改为矩阵的形式
\[A^n=\varphi(A)g(A)+r(A) \]由\(Cayley-Hamilton定理\)可知,\(\varphi(A)=0\)
那么有
\[A^n=r(x) \]由多项式取模的定义,\(\deg (r(x))< k\),复杂度有了保证
所以我们把原来的矩阵\(A\)带入求出的多项式\(r(x)\),设它为
\[r(x)=\sum_{i=0}^{k-1}c_ix^i \]我们在两边乘上\(\vec v\),然后推导
\[r(A)\vec v\sum_{i=0}^{k-1}c_iA^i\vec v_0 \\A^{n-k+1}\vec v_0=\sum_{i=0}^{k-1}c_iA^i\vec v_0 \\\vec v_n=\sum_{i=0}^{k-1}c_i\vec v_i \]这样就成功将矩阵快速幂转化成了倍增\(+\)多项式乘法,时间复杂度降为\(O(k^2\log n)\),搞个FFT或者NTT可以将复杂度降为\(O(k\log k\log n)\)
逆矩阵
可逆矩阵
称一个\(m\times n\)的矩阵\(A\)是可逆的,当且仅当\(\exist C_{n\times m}\)满足\(CA=E_{n}\)且\(\exist D_{n\times m}\)满足\(AD=E_{m}\).
可以证明,该定义等价于:
称一个\(n\times n\)的矩阵\(A\)是可逆的,当且仅当\(\exist C_{n\times n}\)满足\(CA=AC=E_{n}\),我们记\(C=A^{-1}\),对于一个可逆矩阵\(A\),\(C\)是唯一的.
不可逆矩阵又被称为奇异矩阵.
证明如下:
考虑\((CA)D=C(AD)=D=C\),显然\(C=D\).
如果存在\(D\)是\(A\)的另一个逆矩阵,显然\((CA)D=C(AD)=D=C\).
引理1
设\(A\)是\(m\times n\)矩阵且\(CA=E_n\),则方程\(A\vec x=\vec 0\)只有零解,且\(n\leq m\).
证明:
考虑方程\(A\vec{x}=\vec 0\)等价于方程\(CA\vec x=C\vec 0\),即\(E_n \vec x=\vec 0\),显然只有零解.
而且如果\(m< n\),一定有自由变量,不可能只有零解.
引理2
设\(A\)是\(m\times n\)矩阵且\(AD=E_n\),则\(\forall \vec b\in\mathbb{R}^m\),方程\(A\vec x=\vec b\)有解,且\(m\leq n\).
证明:
考虑恒等式\(AD\vec b=\vec b\),显然\(\vec x=D\vec b\)即是一个解且是唯一解.
根据线性方程组部分的定理10,显然\(m\leq n\).
由上面两条引理得知:若\(A\)是可逆的,则\(A\)必为方阵.
逆矩阵的运算
若\(A\)是可逆矩阵,则\(A^{-1}\)也可逆且\((A^{-1})^{-1}=A\).
若\(A\)和\(B\)都是可逆方阵,则\(AB\)也可逆且\((AB)^{-1}=B^{-1}A^{-1}\).
证明:
第一条根据逆矩阵的唯一性,显然可证明.
第二条考虑\((AB)^{-1}(AB)=E=B^{-1}(A^{-1}A)B\),而显然有\(ABB^{-1}A^{-1}=E\),虽然矩阵不满足消去律,但根据逆矩阵定义显然可证明.
初等矩阵
将单位矩阵经过一次初等行变换得到的矩阵称作初等矩阵.
不难发现,对任意\(m\times n\)矩阵进行初等行变换一定等价于将其左乘一个初等矩阵.
对于\(R_i\leftrightarrow R_j\):
\[E_{x,y}= \begin{cases} 1 &x=i,y=j\\ 1 &x=j,y=i\\ 1 &x=y,x\ne i,x\ne j\\ 0 &Otherwise \end{cases}\\ \]对于\(kR_i\rightarrow R_i,k\ne0\):
\[E_{x,y}= \begin{cases} k &x=y,x=i\\ 1 &x=y,x\ne i\\ 0 &Otherwise \end{cases}\\ \]对于\(R_i+kR_j\rightarrow R_i,i\ne j\):
\[E_{x,y}= \begin{cases} k &x=i,y=j\\ 1 &x=y\\ 0 &Otherwise \end{cases}\\ \]考虑如下事实:行变换是可逆的,那么初等矩阵显然是可逆的.
这引出下面对逆矩阵的判定方法.
矩阵逆的存在性的判定
\(n\times n\)矩阵是可逆的,当且仅当\(A\)行等价于\(E_n\),也即\(A\)可以通过一系列初等行变换变换为\(E_n\).
如果\(A\)可以通过一系列初等行变换变换为\(E_n\),根据初等矩阵的知识,这等价于:
\[E_1E_2\cdots E_pA=E_n \]由于初等矩阵显然可逆,我们有\(A=(E_1E_{2}\cdots E_p)^{-1}\),根据上文提到的逆矩阵的运算方法,有\(A^{-1}=(E_1E_2\cdots E_p)\).
如果\(A\)是可逆矩阵,那么显然\(A\)的简化阶梯形是\(E\),也即二者行等价.
或者,如果一个方阵的行列式不为\(0\),那么这个方阵也是可逆矩阵
求解逆矩阵
若\(A\)可逆,我们考虑将\(A\)和\(E\)放在同一个\(n\times 2n\)的矩阵中,记作
\[\begin{bmatrix}A &E \end{bmatrix} \]根据逆矩阵的存在性判定,它显然行等价于
\[\begin{bmatrix} E&A^{-1} \end{bmatrix} \]另外,考虑将\(E\)写作
\[\begin{bmatrix} \vec {e_1}&\vec{e_2}&\cdots&\vec{e_n} \end{bmatrix} \]的形式,则我们发现上述过程等价于求若干个形如\(A\vec x_i=\vec e_i\)的方程的解,并且
\[A^{-1}=\begin{bmatrix}\vec{x_1}&\vec{x_2}&\cdots&\vec{x_n}\end{bmatrix}. \]方阵的判定
设\(A\)为\(n\times n\)方阵,下列命题等价:
- \(A\)是可逆矩阵.
- \(A^T\)是可逆矩阵.
- 存在矩阵\(C\)满足\(CA=E_n\).
- 存在矩阵\(D\)满足\(AD=E_n\).
- \(A\)行等价于\(E_n\).
- \(A\)有\(n\)个主元位置.
- \(A\)的各列生成\(\mathbb{R}^n\).
- \(A\)的各列线性无关.
- 方程\(A\vec{x}=\vec{0}\)仅有零解.
- \(\forall \vec{b}\in \mathbb{R}^n\),方程\(A\vec{x}=\vec{b}\)有唯一解.
- 线性变换\(\vec{x}\rightarrow A\vec {x}\)是单射.
- 线性变换\(\vec{x}\rightarrow A\vec{x}\)是满射.
证明:
根据我们已经证明了\((1)\)和\((5)\)等价,根据线性方程组部分定理10,我们可以证明\((1),(5),(6),(7),(8),(9),(10)\)等价.
考虑可逆矩阵定义部分的引理1和2,我们有\((3)\)是\((9)\)的充分条件,\((4)\)是\((10)\)的充分条件,又因为\((1)\)是\((3)\)和\((4)\)的充分条件,而\((1),(9),(10)\)等价,因此\((1),(3),(4)\)等价.
而若\(A\)有\(n\)个主元位置,显然\(A^T\)也有\(n\)个主元位置,显然\((1),(6),(2)\)等价.
又根据定理6,\((11)(12)\)与\((1)\)等价.
由此可以发现,这十二个命题全部等价.
矩阵进阶
可逆线性变换
称线性变换\(T:\mathbb{R}^n\rightarrow \mathbb{R}^n\)是可逆的,当且仅当存在线性变换\(S:\mathbb{R}^n\rightarrow \mathbb{R}^n\)满足:
\[\forall \vec x\in \mathbb{R}^n,S(T(\vec x))=\vec x. \\ \forall \vec x\in \mathbb{R}^n,T(S(\vec x))=\vec x. \]可逆线性变换的判定
一个线性变换是可逆的,当且仅当其标准矩阵是可逆的.
这个证明是显然的.
分块矩阵
我们考虑将一个矩阵看作若干个子矩阵的拼接,类似于我们求逆矩阵时做的那样:将若干个矩阵拼接起来.
换句话说,我们尝试将矩阵看作元素放入矩阵中,并尝试根据基本的矩阵运算去做这种矩阵的运算.
分块矩阵的矩阵加法:若矩阵\(A\)和\(B\)维数相同且都以同样的方式分块,则矩阵的和\(A+B\)也以同样的方式分块且每一块都是\(A\)和\(B\)对应块的和.
分块矩阵的标量乘法:若\(c\)是一个常数,\(A\)是一个分块矩阵,则\(cA\)是\(A\)的子矩阵乘\(c\)再以同样的方式组合起来的结果.
分块矩阵的矩阵乘法
若矩阵\(A\)和\(B\)的维数使得\(AB\)有定义,并且\(A\)列的分法与\(B\)行的分法一致,那我们显然可以直接将矩阵作为元素来直接进行矩阵乘法.
由上面的讨论引出下面的定理
定理10
若\(A\)是\(m\times n\)矩阵,\(B\)是\(n\times p\)矩阵,我们定义\(row_i(A)\)为\(A\)的第\(i\)列,\(col_i(A)\)为\(A\)的第\(i\)行,则:
\[AB=\begin{bmatrix}col_1(A)&col_2(A)&\cdots&col_n(A)\end{bmatrix}\begin{bmatrix}row_1(B)\\row_2(B)\\\vdots \\row_n(B)\end{bmatrix} \]证明是显然的.
矩阵的列空间与零空间
矩阵\(A\)的列空间是\(A\)的各列的线性组合的集合,记作\(Col A\).
换句话说,若
\[A_{m\times n}=\begin{bmatrix}\vec{a_1}&\vec{a_2}&\cdots&\vec{a_n}\end{bmatrix} \]则\(Col A=Span(\vec{a_1},\vec{a_2},\cdots,\vec{a_n})\).
矩阵\(A\)的零空间是齐次方程\(A\vec x=\vec 0\)的所有解的集合,记作\(Nul A\).
我们不难证明矩阵\(A_{m\times n}\)的零空间一定是\(\mathbb{R}^n\)的一个子空间.
要求一个矩阵的零空间的基,即要求其所代表的解的参数向量形式.
定理13
矩阵\(A\)的主元列构成\(A\)的列空间的基.
我们先考虑简化阶梯型矩阵的情况,则该定理显然.又考虑矩阵的各列之间的线性关系可以用方程\(A\vec x=\vec 0\)表示,而一个矩阵化为简化阶梯型后的关系显然是不变的,因此上述定理得证.
矩阵的秩
矩阵\(A\)的秩(记作\(rank~A\))定义为\(A\)的列空间的维数.
不难发现一个矩阵的秩即其主元列的个数.
与秩有关的性质
- 也等于一个矩阵经过高斯消元消成阶梯矩阵之后的行数
- 矩阵的初等行变换不改变矩阵的秩
- 矩阵的秩不会超过矩阵的行数,也不会超过矩阵的列数
- 乘积矩阵的秩不超过每个因数矩阵的秩
- 一个矩阵的秩为\(0\),那么这个矩阵就是零矩阵
- 若\(rank~A=1\),那么该矩阵的各行各列成比例(必须保证矩阵中至少存在一个非零元素)
- 向量非零的充分必要条件是其秩为\(1\)
定理14:秩定理
如果一个矩阵\(A\)有\(n\)列,则\(rank~A+\dim~Nul~A=n\).
可逆矩阵定理
(该定理是定理8的进一步扩展)
设\(A\)为\(n\times n\)方阵,下列命题等价:
- \(A\)是可逆矩阵.
- \(A^T\)是可逆矩阵.
- 存在矩阵\(C\)满足\(CA=E_n\).
- 存在矩阵\(D\)满足\(AD=E_n\).
- \(A\)行等价于\(E_n\).
- \(A\)有\(n\)个主元位置.
- \(A\)的各列生成\(\mathbb{R}^n\).
- \(A\)的各列线性无关.
- 方程\(A\vec{x}=\vec{0}\)仅有零解.
- \(\forall \vec{b}\in \mathbb{R}^n\),方程\(A\vec{x}=\vec{b}\)有唯一解.
- 线性变换\(\vec{x}\rightarrow A\vec {x}\)是单射.
- 线性变换\(\vec{x}\rightarrow A\vec{x}\)是满射.
- \(A\)的列向量构成\(\mathbb{R}^n\)的一个基.
- \(Col~A=\mathbb{R}^n\).
- \(\dim Col~A=n\).
- \(rank~A=n\).
- \(Nul~A=\{\vec 0\}\).
- \(\dim~Nul~A=0\).
齐次线性方程组的基础解系
定义
对于\(m\)个方程,\(n\)个未知数的齐次线性方程组\(Ax=0\) ,系数矩阵记为\(A\),齐次线性方程组总有零解,不存在无解的情况,且其有非零解的等价条件为\(rank~A\),即系数矩阵\(A\)中的列向量\(a_1,a_2,\cdots,a_n\)线性相关。而且齐次线性方程组的解向量的线性组合仍然是该线性方程组的解。证明如下:
设\(x_1,x_2\)是\(Ax=0\)的两个不相等的解向量,即有:
\[Ax_1=0,Ax_2=0 \]令\(x=k_1x_1+k_2x_2\),其中 \(k_1,k_2\)为任意实数,即\(x\)称为\(x_1,x_2\)的线性组合,且有:
\[Ax=A(k_1x_1+k_2x_2)=k_1(Ax_1)+k_2(Ax_2)=0 \]即可得,\(x\)也是\(Ax=0\)的解。
把由齐次线性方程组\(Ax=0\)的解所构成的集合称为解空间,它的维数为\(n-rank~A\)。 该解空间中的一组基就成为该线性方程组的一组基础解系。换句话说,基础解系是由\(n-rank~A\)个线性无关的解向量构成的,基础解系的解向量个数是确定的,但解向量是不确定的,只要两两之间线性无关即可。基础解系的任意线性组合构成了该齐次线性方程组\(Ax=0\)的一般解,也称通解
证明
要证明一组向量为齐次线性方程组 的基础解系时,必须满足以下三条:
- 这组向量是该方程组的解;
- 这组向量必须是线性无关组,即基础解系各向量线性无关;
- 方程组的任意解均可由基础解系线性表出,即方程组的所有解都可以用基础解系的量来表示。
另外,这组向量所含向量的个数\(s=n-rank~A\),其中\(n\)是未知量的个数,即系数矩阵\(A\)的列数
性质
总结一下,齐次线性方程组的基础解系有以下三条重要性质
- \(Ax=0\)主变量有\(rank~A\)个
- \(Ax=0\)自由变量有\(n-rank~A\)
- \(Ax=0\)的基础解系有\(n-rank~A\)个向量
- \(A\)对应的阶梯矩阵的行数为\(rank~A\)
行列式进阶
定义
对于一个\(n\times n\)方阵\(A\),记它的第\(i\)行第\(j\)列的元素为\(a_{i,j}\),以及一个\(1\sim n\)的排列\(p\),记
\[\lambda_A(p)=(-1)^{\tau(p)}\prod_{i=1}^na_{i,p_i} \]其中\(\tau(p)\)是\(p\)中的逆序对的个数,那么有
\[|A|=\det A=\sum_p\lambda_A(p)=\sum_p\big((-1)^{\tau(p)}\prod_{i=1}^{n}a_{i,p_i}\big) \]\(|A|,\det A\)都是\(A\)的行列式的意思,都是一个具体的数值,按照上式计算的时间复杂度是\(O(n \cdot \log n \cdot n!)\)
拉普拉斯展开
对于一个\(n\times n\)的方阵\(A\),\(1\le i\le n\),有
\[|A|=\sum_{j=1}^{n}a_{i,j}C_{i,j} \]其中 \(A_{i, j}\)指矩阵 \(A\)删去第 \(i\)行和第 \(j\)列的所有元素后并按照原来的元素顺序排列形成的一个 \((n - 1) \times (n - 1)\)的行列式,称为元素\(a_{i,j}\)的余子式,其中\(C_{i,j}=(-1)^{i+j}A_{i,j}\)记作代数余子式,记其所对应的矩阵为\(M_{i,j}\)
证明:
由定义可知,对于所有的\(\lambda_A(p)\),都\(\exist x\)使得\(x\in\lbrace a_{i,1},a_{i,2},\cdots,a_{i,n}\rbrace\),那么就一定能够找到一个\(j\)得到这个因子\(a_{i,j}\)和满足\(p_i=j\)的排列\(p\),然后删掉\(p_i\)这个元素并将所有大于\(j\)的位置减去\(1\),得到新的\(1\sim n-1\)排列\(q\)
这说明\(n,i,j\)确定时,所有\(p\)构成的集合与\(q\)构成的集合构成了一个双射的关系
我们设这个映射为\(\xi(p)=q\),先不考虑符号,那么有
\[\begin{aligned} \vert\frac{\sum_p\lambda_A(p)[p_i=j]}{a_{i,j}}\vert&=\vert\sum_p\lambda_{M_{i,j}}(\xi(p))[j=p_i]\vert\\\vert\frac{\sum_p\lambda_A(p)[p_i=j]}{a_{i,j}}\vert&=\vert\sum_q\lambda_{M_{i,j}}(q)\vert\\\vert\frac{\sum_p\lambda_A(p)[p_i=j]}{a_{i,j}}\vert&=\vert A_{i,j}\vert\\\vert\sum_p\lambda_A(p)[p_i=j]\vert&=a_{i,j}\vert A_{i,j}\vert \end{aligned} \]下面探讨符号问题,显然\(p\)与\(\xi(p)\)奇偶性的差别本质上就是去掉\(p_{i}=j\)数逆序对的个数,即下面这个式子
\[\begin{aligned} &\sum_{k=1}^{i-1}[p_k>j]+\sum_{k=i+1}^{n}[p_k<j]\\=&\sum_{k=1}^{i-1}[p_k>j]+j-1-\sum_{k=1}^{i-1}[p_k<j]\\=&\sum_{k=1}^{i-1}[p_k>j]+i-1-j+1+\sum_{k=1}^{i-1}[p_k<j]\\=&2\sum_{k=1}^{i-1}[p_k>j]+(i+j)\equiv i+j\pmod 2 \end{aligned} \]所以有
\[\sum_{p}\lambda_A(p)[p_i=j]=(-1)^{i+j}a_{i,j}A_{i,j}=a_{i,j}C_{i,j} \]于是
\[|A|=\sum_{j=1}^n\sum_p\lambda_A(p)[p_i=j]=\sum_{j=1}^na_{i,j}C_{i,j} \]行列式的性质汇总
上文有提到过,下文也有,这里做一个汇总
与矩阵变换相关的行列式性质
- (倍加变换)\(R_i+kR_j\rightarrow R_i\),行列式不变
- (对换变换)\(R_i\leftrightarrow R_j\),行列式取反
- (倍乘变换)\(kR_i\rightarrow R_i,k\ne0\),行列式乘\(k\)
- (转置矩阵)\(A\rightarrow A^T\),行列式不变
- (伴随矩阵)\(A\rightarrow A^*\),\(|A^*|=|A|^{n-1}\)
与行列式计算相关的性质
- 行列式如果某一行或某一列全为\(0\),那么行列式的值为\(0\)
- 如果行列式有一行中只有一个元素\(a_{i,j}\)不为\(0\),那么行列式的值\(|A|=a_{i,j}A_{i,j}\)
- 行列式的值等于任何一行中每个元素与其对应代数余子式乘积的和(拉普拉斯展开)
- 行列式某一行与另一行代数余子式乘积的和等于\(0\)
行列式的快速求法
对矩阵\(A\)的第一行第一列进行拉普拉斯展开,我们能够得到一个结论:如果\(A\)是三角矩阵,那么有
\[|A|=\prod_{i=1}^na_{i,i} \]所以我们对矩阵进行高斯消元,那么求行列式的时间复杂度就降为了\(O(n^3)\)
行列式与线性方程组的关系
- \(|A_n|=0 \Leftrightarrow rank~A< n\Leftrightarrow Ax=0存在非零解,Ax=b无解或存在无穷解\)
- \(|A_n|\neq 0 \Leftrightarrow rank~A= n\Leftrightarrow Ax=0只有零解,Ax=b有唯一解\Leftrightarrow A可逆\)
只适用于未知数个数和方程个数相同的方程组
行列式与矩阵乘法的关系
对于两个\(n\)阶方阵\(A,B\),有
\[|AB|=|BA|=|A||B| \]行列式的意义是对应方阵的映射比例系数,复合映射\(AB\)可以看所是先做\(A\)的映射,再做\(B\)的映射,因此比例系数就是两者的乘积
行列式与逆矩阵之间的关系
- \(|A_n|=0\Leftrightarrow A不可逆\)
- \(|A_n|\neq 0\Leftrightarrow A可逆\)
因此,逆矩阵行列式是原矩阵行列式的倒数
\[|A^{-1}|=\frac 1{|A|} \]伴随矩阵
定义
方阵\(A\)的关于各个元素的代数余子式\(A_{i,j}\)构成了一个新的矩阵
\[\begin{bmatrix} A_{1,1}&A_{2,1}&\cdots &A_{n,1}\\A_{1,2}&A_{2,2} &\cdots &A_{n,2}\\\vdots&\vdots&\ddots&\vdots\\A_{1,n}&A_{2,n}&\cdots&A_{n,n} \end{bmatrix} \]这个矩阵称为原矩阵的伴随矩阵,记作\(A^*\)
另外,我们由上文所提到的行列式的计算性质\((8),(9)\),我们得到
\[AA^*=A^*A=|A|E \]- 伴随矩阵下标排布是原矩阵的转置矩阵的下标
- 伴随矩阵的存在与否与矩阵是否可逆没有关系
二阶矩阵的伴随矩阵的计算
对于矩阵
\[A= \begin{bmatrix} {a}&{b}\\{c}&{d} \end{bmatrix} \]根据定义,可得它的伴随矩阵为
\[A^*= \begin{bmatrix} {d}&{-b}\\{-c}&{a} \end{bmatrix} \]口诀:主交换,列取反
伴随矩阵的性质
公式1
\[AA^*=A^*A=|A|E \]定义式
公式2
\[A^{-1}=\frac1{|A|}A^* \]逆矩阵的另一种定义方式
公式3
\[A^*=|A|A^{-1} \]可以求出可逆矩阵的伴随矩阵
公式4
\[(A^{-1})^*=(A^*)^{-1}=\frac1{|A|}A \]伴随矩阵的逆矩阵和逆矩阵的伴随矩阵相等,都等于原矩阵除以其行列式的值
公式5
\[(A^*)^T=(A^T)^* \]伴随矩阵的转置与转置矩阵的伴随等价,可以根据伴随矩阵的构成和代数余子式的性质证明
公式6
我们知道:
两边同时取行列式
\[|AA^*|=|A||A^*|=||A|E|=|A|^n\\|A||A^*|=|A|^n\\|A^*|=|A|^{n-1} \]上面的证明前提条件是A是可逆的(在约掉时,默认了其值不为\(0\))
但是伴随矩阵存在与否与\(A\)是否可逆无关,因此上述方法只能证明\(A\)是非奇异矩阵的情况。
继续接着:\(|A||A^*|=|A|^n\)证明
用\(A-\lambda E\)替换\(A\)
\[|A-\lambda E||(A-\lambda E)^*|=|A-\lambda E|^n \]存在\(\lambda > t\)时,\(A-\lambda E\)是可逆矩阵
\[|(A-\lambda E)^*|-|A-\lambda E|^{n-1}=0 \]对于任意\(\lambda\)使得等号左端的有限次多项式恒为\(0\),令\(\lambda=0\)
\[|A^*|=|A|^{n-1} \]这就是公式6
伴随矩阵的行列式值等于原矩阵行列式值的 \(n-1\)次方;
一个矩阵行列式值若不为\(0\),则它的伴随矩阵的行列式值必然不为\(0\);
矩阵可逆和它的伴随可逆互为充要条件
公式7
\[(AB)^*=B^*A^* \]如果\(A,B\)均可逆,两矩阵之积的伴随等于矩阵伴随的反向积
\[(AB)^{-1}=\frac{1}{|AB|}(AB)^*=\frac{1}{|A||B|}=\frac{1}{|A||B|}B^*A^*=\frac1{|B|}B^*\frac1{|A|}A^*=B^{-1}A^{-1} \]如果两矩阵可逆,两者之积的逆等于两者逆矩阵的反向积
公式8
\[(kA)^*=k^{n-1}A^* \]给矩阵乘以常数倍后求伴随,相当于该矩阵的伴随乘以常数的\(n-1\)次方
公式9
\[(A^*)^*=|A|^{n-2}A~~~(n\ge 2) \]一个矩阵的伴随的伴随等于它行列式的\(n-2\)次方乘以它本身
零积秩不等式
若\(A,B\)都是\(n\)阶方阵,那么有
\[AB=O\Rightarrow rank~A+rank~B\le n \]证明:
首先,\(A=O\)或\(B=O\)时显然成立,下面主要探讨\(A,B\)均不为零矩阵的情况
将矩阵\(B\)和零矩阵\(O\)按列分块,得到
\[B= \begin{bmatrix} b_1&b_2&\cdots&b_n \end{bmatrix} ,O= \begin{bmatrix} 0&0&\cdots&0 \end{bmatrix} \]由\(AB=O\),得到
\[A\times \begin{bmatrix} b_1&b_2&\cdots&b_n \end{bmatrix} = \begin{bmatrix} 0&0&\cdots&0 \end{bmatrix} \\\Rightarrow Ab_i=0~~~~1\le i\le n \]由于\(A,B\)均不是零矩阵,这就意味着齐次线性方程组\(Ax=0\)存在非零解,而\(B\)矩阵中的每一个\(b_i\)都是齐次线性方程组的解,因此我们可以得到\(b_i\)是诸基础解系的线性组合
设\(Ax=0\)的基础解系为\(c_1,c_2,\cdots,c_t\),其中\(t=n-rank~A\)
因此\(b_i\)就可以表示为由\(c_1\)到\(c_t\)的线性组合
\[\begin{aligned} b_i&=k_{1,i}c_1+k_{2,i}c_2+\cdots+k_{t,i}c_t\\&= \begin{bmatrix} c_1&c_2&\cdots&c_n \end{bmatrix} \times \begin{bmatrix} k_{1,i}\\\vdots\\k_{t,i} \end{bmatrix} \\&=Ck_i \end{aligned} \]于是有
\[\begin{aligned} B&= \begin{bmatrix} b_1,b_2,\cdots,b_n \end{bmatrix}\\&= \begin{bmatrix} Ck_1&Ck_2&\cdots&Ck_n \end{bmatrix}\\&=C \begin{bmatrix} k_1&k_2&\cdots&k_n \end{bmatrix}\\&=C_{n\times t}K_{t\times n} \end{aligned} \]其中
\[\begin{bmatrix} K_{1,1}&\cdots&K_{1,n}\\\vdots&\ddots&\vdots\\K_{t,1}&\cdots&K_{t,n} \end{bmatrix} \]根据与秩有关的性质\((2),(3)\),我们得到
\[rank~B\le \min\{rank~C,rank~K\} \]由于\(A\)是非零矩阵,因此它的矩阵大于\(0\),所以就有
\[t=n-rank~A< n \]又因为\(C,K\)的秩一定不超过\(t\),所以有
\[rank~B\le n-rank~A \]所以
\[rank~A+rank~B\le n \]零积秩不等式的推广
非方阵情况
\[A_{m\times n}B_{m\times s}=O\Rightarrow rank~A+rank~B\le n \]西尔维斯特不等式
\[A_{m\times n}B_{m\times s}=W_{m\times s}\Rightarrow rank~A+rank~B-n\le rank~W \]证明就算了,我不会
伴随矩阵的秩
-
当\(rank~A=n\)时
显然有\(|A|\neq 0\),即\(A\)是非奇异矩阵,那么就有\(|A^*|=|A|^{n-1}\neq 0\),因此\(A^*\)也是非奇异矩阵,它是满秩的,因此\(rank~A^*=n\)
-
当\(rank~A=n-1\)
那么就有\(AA^*=|A|E=O\),由零积秩不等式我们得到\(rank~A+rank~A^*\le n\),得到\(rank~A^*\le 1\)
同时,\(rank~A=n-1\)意味着\(A\)至少有一个\(n-1\)阶子式不为\(0\)即\(A\)至少存在一个不为\(0\)的代数余子式,因此\(A^*\)中至少存在一个不为\(0\)的元素,这也就说明\(A^*\)不是零矩阵,有\(rank~A^*\ge 1\)
所以有\(rank~A^*=1\)
-
当\(rank~A< n-1\)
那么就有\(A\)的全体\(n-1\)阶子式都为\(0\),\(A\)的全体代数余子式为\(0\),所以\(A^*=0\),所以\(rank~A^*=0\)
因此,有
\[rank~A^*= \begin{cases} n~~~~(rank~A=n)\\1~~~~(rank~A=n-1)\\0~~~~(rank~A< n-1) \end{cases} \]克拉默法则
考虑一个未知数个数和方程个数相等的齐次线性方程组\(Ax=b\),若\(|A|\neq 0\)那么有\(x=A^{-1}b\),将\(x\)写出来
\[x= \begin{bmatrix} x_1\\x_2\\\vdots\\x_n \end{bmatrix} \]下面考虑如何用\(A\)和\(b\)表示出\(x_k~~~(1\le k\le n)\)
我们将\(A,b\)也写出来
\[A= \begin{bmatrix} a_{1,1}&\cdots&a_{1,n}\\\vdots&\ddots&\vdots\\a_{n,1}&\cdots &a_{n,n} \end{bmatrix} ,b= \begin{bmatrix} b_1\\b_2\\\vdots\\b_n \end{bmatrix} \]我们对上面的式子进行进一步的推导
\[x=A^{-1}b=\frac1{|A|}A^*b \]其中
\[A^*= \begin{bmatrix} A_{1,1}&\cdots&A_{n,1}\\\vdots&\ddots&\vdots\\A_{1,n}&\cdots &A_{n,n} \end{bmatrix} \]那么就有
\[A^*b= \begin{bmatrix} b_1A_{1,1}+\cdots+b_nA_{n,1}\\\vdots\\b_1A_{1,n}+\cdots+b_n A_{n,n} \end{bmatrix} \]于是
\[x_k=\frac1{|A|}(b_1A_{1,k}+\cdots+b_nA_{n,k}) \]我们逆用拉普拉斯展开,还原出原来的行列式为
\[x_k= \frac1{|A|} \begin{vmatrix} a_{1,1}&a_{1,2}&\cdots&a_{1,n-1}&a_{1,n}\\\vdots&\vdots&\ddots&\vdots&\vdots\\b_1&b_2&\cdots&b_{n-1}&b_n\\\vdots&\vdots&\ddots&\vdots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n-1}&a_{n,n} \end{vmatrix} \]相当于用\(b\)替换了\(A\)的第\(k\)行
我们记这个行列式为\(|A_k(b)|\)
那么就有
\[x_k=\frac{|A_k(b)|}{|A|} \]这就是克拉默法则
特殊矩阵及特殊行列式
Householder矩阵(反射变换)
这里转自知乎
已知向量\(X\),经过平面反射后得到新的向量\(Y\),其反射平面的法线为 \(u\)(单位向量),则有等式:
\[Y-X=2Z \]现在关键就是求\(Z\)向量,\(Z\)向量的方向已知为\(\mu\),剩余求出\(Z\)的长度即可。
而\(Z\)的长度为\(\mu\)和\(Y\)向量的点乘,故 \(Z=\mu(\mu \cdot Y)\)
故得出 \(Y-X=2Z=2\mu(\mu \cdot Y)\),然后进行化简
\[Y-2\mu(\mu \cdot Y) =X\\ (E-2\mu^{T}\mu ) Y =X \]( \(u^{T}\mu\)会计算得到矩阵),由于\(X\)和\(Y\)是对称的,\(X\)和\(Y\)进行互换即可得到
\(Y=(E-2u^{T}\mu)X =HX\),故可知我们要求的反射矩阵\(H=(E-2u^{T}\mu)\)。
以上推导是三维空间里的推导,如果拓展到N维空间里,则设单位向量为\(u\),矩阵\(H=(E-2u^{T}\mu)\)为Householder初等反射矩阵,该线性变换为初等反射变换。
初等反射矩阵 $H $的性质:
(1)\(H=H^{T}\)
(2)\(HH^{T}=E\)
(3)\(H^{2}=E\)
(4)\(H^{-1}=H\)
(5)\(\det H=-1\)
性质:和初等旋转矩阵类似,以及向量\(X\)和给定单位向量 \(z\) ,存在某个特定初等反射矩阵H经过变换后,得到的新向量为 \(|X|z\) ,即 \(H X=|X|z\) 。
证明:
若 \(X=|X|z\),则设与\(X\)垂直的单位向量 $u \(则它满足\)u\cdot X=0$,对应的反射矩阵 \(H\)为:
\(H=(E-2u^{T}\mu)\),向量\(X\)经过\(H\)变换后可得:
\[HX=(E-2u^{T}\mu)X=X-2u^{T}(u\cdot X)=X=|X|z \]证毕
若\(X\ne|X|z\),则令向量 \(u=\frac{X-|X|z}{|X-|X|z|}\),带入\(HX\)可得:
\[HX=[E-2 (\frac{X-|X|z}{| X-|X|z |})^{T}\frac{X-|X|z}{| X-|X|z |} ]X \\HX=[E-2 \frac{(X-|X|z)^{T}(X-|X|z)}{| X-|X|z |^{2}} ]X \\HX=X-2 \frac{(X-|X|z)^{T}(X-|X|z)X}{| X-|X|z |^{2}} \]观察分子的表达式, \((X-|X|z)^{T}\)和\((X-|X|z)\)和\(X\)是三个向量
\[HX=X-2 \frac{(X-|X|z)^{T}((X-|X|z)\cdot X)}{| X-|X|z |^{2}} \]而 \((X-|X|z)\)和\(X\)的点积为常数,则
\[HX=X-2 \frac{((X-|X|z)\cdot X)}{| X-|X|z |^{2}}\times (X-|X|z) \]我们再对 \(2 \frac{((X-|X|z)\cdot X)}{| X-|X|z |^{2}}\) 进行化简
令向量 \(M=X-|X|z\),则有
\[\begin{aligned} &2 \frac{((X-|X|z)\cdot X)}{| X-|X|z |^{2}}\\=&2\frac{M\cdot X}{|M|^{2}}\\=&2\frac{|M|\cdot |X|\cdot \cos<M,X>}{|M|^{2}}\\=&2\frac{|X|\cdot \cos<M,X>}{|M|} \end{aligned} \]而 \(X\)向量投影到\(M\)方向的模长为\(0.5|M|\),则
\[2 \frac{((X-|X|z)\cdot X)}{| X-|X|z |^{2}}=2\frac{0.5|M|}{|M|}=1 \]带入\(HX\)可得:
\[HX=X-2 \frac{((X-|X|z)\cdot X)}{| X-|X|z |^{2}} *(X-|X|z)=X-1*(X-|X|z)=|X|z \]证毕
Givens矩阵(旋转变换)
初等旋转变换,即通过固定\(n-2\)维不变,选择剩下的两维构成的平面,在这个平面上面做旋转变换
基本结构如下图,在下图中含有变换角度\(\theta\)所在的两个向量,它两构成的平面就是旋转的平面
曼哈顿距离与切比雪夫距离的转化
曼哈顿距离: 以二维举例,对于二维的两点\(p_1(x_1, y_1)\),\(p_2(x_2, y_2)\)它们的曼哈顿距离如下
\[dis = |x_1 - x_2| + |y_1 - y_2| \]切比雪夫距离: 以二维举例,对于二维的两点p1(x_1, y_1),p2(x_2, y_2)它们的切比雪夫距离如下
\[dis = \max\{|x_1 - x_2|, |y_1 - y_2|\} \]曼哈顿距离转切比雪夫距离
首先我们需要注意到为什么要进行转化。
如果求一组点的曼哈顿距离的最大值,是只能两两计算求极值的,时间复杂度显然是\(O(n^2)\)。
但是,如果我们转化成计算切比雪夫的最大值,那么我们只需要首先计算\(\max(x) - \min(x)\),在计算\(\max(y) - \min(y)\)从中区最大值即可,时间复杂度可以降低到\(O(n)\)。
现在我们来进行转化工作。
\[\begin{aligned} dis &= |x_1 - x_2| + |y_1 - y_2| \\&= \max\{x_1 - x_2 + y_1 - y_2, x_1 - x_2 + y_2 - y_1, x_2 - x_1 + y_1 - y_2, x_2 - x_1 + y_2 - y_1\}\\&= \max\{|(x_1 + y_1) - (x_2 + y_2)|, |(x_1 - y_1) - (x_2 - y_2)|\} \end{aligned} \]从上述的变化中我们可以看出,将\((x, y)\)映射到\((x + y, x - y)\)那么计算新空间的切比雪夫距离和原空间的曼哈顿距离是等价的
映射过程如下
\[\begin{bmatrix} x&y \end{bmatrix} \times \begin{bmatrix} 1&1\\1&-1 \end{bmatrix} = \begin{bmatrix} x+y&x-y \end{bmatrix} \]范德蒙德行列式
\[\begin{vmatrix} 1&1&1&\cdots&1\\x_1&x_2&x_3&\cdots&x_n\\x_1^2&x_2^2&x_3^2&\cdots&x_n^2\\\vdots&\vdots&\vdots&\ddots&\vdots\\x_1^n&x_2^n&x_3^n&\cdots &x_n^n \end{vmatrix} =\prod_{1\le j < i\le n}(x_i-x_j) \]证明:
记\(n\)维范德蒙德行列式的值为\(D_n\)
考虑数学归纳法
-
\(n=2\)时,\(D_2=x_2-x_1\)
-
假设\(D_{n-1}\)时结论成立,考虑\(D_n\)
首先要把\(D_n\)降阶,第\(i\)轮从第\(n\)行起用后一行减去前一行的\(x_i\)倍,按第一行进行展开,有
\[\begin{aligned} D_n&=(x_2-x_1)(x_3-x1)\cdots(x_n-x_1)\prod_{2\le j < i\le n}(x_i-x_j)\\&=(x_2-x_1)(x_3-x1)\cdots(x_n-x_1)\prod_{1\le j < i\le n-1}(x_i-x_j)\\&=(x_2-x_1)(x_3-x1)\cdots(x_n-x_1)D_{n-1}\\&=\prod_{1\le j < i\le n}(x_i-x_j) \end{aligned} \]
证毕
矩阵树定理
改自洛谷题解
定义
- 对于无向图,定义 \(D(G)\)为图 \(G\)的度数矩阵,其中:
对于有向图,定义 \(D ^ {in}(G)\)为图 \(G\)的入度矩阵,\(D ^ {out}(G)\)为图 \(G\)的出度矩阵,其中:
\[D(G) ^ {in}~~~(i, j) = \begin{cases} \mathrm{in}_i ~~~(i = j) \\ 0 (i \ne j) \end{cases}\\ D(G) ^ {out}~~~(i, j) = \begin{cases} \mathrm{out}_i ~~~(i = j) \\ 0 (i \ne j) \end{cases} \]- 定义 \(A(G)\)为图 \(G\)的邻接矩阵,其中:
定义图 \(G\)的 拉普拉斯矩阵 \(L(G) = D(G) - A(G)\)。
-
定义无向图 \(G\)的生成树数量为 \(t(G)\),有向图根向树生成树(根为 \(u\),下同)数量为 \(t ^ {root}(G, u)\),有向图叶向树数量为 \(t ^ {leaf}(G, u)\)。
-
定义图 \(G\)的关联矩阵 \(M(G)\)为一个大小为 \(n \times m\)的矩阵,其中(一下的方向对于无向图随意):
-
定义图 \(G\)的减关联矩阵 \(M_0(G)\)为关联矩阵 \(M(G)\)去掉最后一行后的大小为 \((n - 1) \times m\)的矩阵。
-
定义图 \(G\)的子减关联矩阵 \(M_0(G)[S]\)为选出 \(M_0(G)\)中的列构成子集 \(S\),满足 \(|S| = n - 1, S \subseteq \{1, 2, \cdots m\}\)
举个例子:
上图的关联矩阵 \(M\) 和拉普拉斯矩阵 \(L\) 分别是:
\[M= \left[ \begin{matrix} 1 & 0 & 0 & -1 &-1\\ -1& -1 & -1 & 0 & 0\\ 0 & 0 & 1 & 1 & 0\\ 0 & 1 & 0 & 0 & 1 \end{matrix} \right] ,L = \left[ \begin{matrix} 3 & -1 & -1 & -1\\ -1 & 3 & -1 & -1\\ -1 & -1 & 2 & 0\\ -1 & -1 & 0 & 2 \end{matrix} \right] \]容易发现 \(L\) 是对称的。实际上非主对角线上的元素也可以不是\(-1\),因为图 \(G\) 允许重边存在
定理
以下默认所有数均为正整数,图不存在自环但可存在重边。
\[L(G) \begin{pmatrix}1, 2, \cdots i - 1, i + 1, \cdots n \\ 1, 2, \cdots i - 1, i + 1, \cdots n\end{pmatrix} \]表示\(L(G)\)矩阵去掉第\(i\)行第\(j\)列形成的矩阵
无向图矩阵树定理:
\[\forall i \in [1, n], t(G) = \det L(G) \begin{pmatrix}1, 2, \cdots i - 1, i + 1, \cdots n \\ 1, 2, \cdots i - 1, i + 1, \cdots n\end{pmatrix} \]有向图矩阵树定理:
\[\forall i \in [1, n], t ^ {root}(G, i) = \det L^{out}(G) \begin{pmatrix}1, 2, \cdots i - 1, i + 1, \cdots n \\ 1, 2, \cdots i - 1, i + 1, \cdots n\end{pmatrix} \]\[\forall i \in [1, n], t ^ {leaf}(G, i) = \det L^{in}(G) \begin{pmatrix}1, 2, \cdots i - 1, i + 1, \cdots n \\ 1, 2, \cdots i - 1, i + 1, \cdots n\end{pmatrix} \]Best 定理: 设有向欧拉图 \(G\)的欧拉回路数量为 \(ec(G)\),则有:
\[\forall i \in [1, n], ec(G) = t ^ {root}(G, i) \prod\limits_{u \in V} (\deg_u - 1)! \]其中对于欧拉图 \(\mathrm{in}, \mathrm{out}\)均相同,因此 \(\deg\)可任选其一。
若要求欧拉回路起点 \(k\),则以 \(k\)为起点的欧拉回路数量 \(ec(G, k)\)为:
这个不会证,那就不证了吧,毕竟OE不需要证明
无向图无根树生成树矩阵树定理证明
引理1:
\[M \times M ^ {T} = L \]\[\begin{aligned} M \times M ^ {T}(i, j) &= \sum\limits_{k = 1} ^ m M(i, k) \times M ^ {T}(k, j) \\ &= \sum\limits_{k = 1} ^ m M(i, k) \times M(j, k) \\ \end{aligned} \]当且仅当 \(i, j\)都为边 \(k\)的端点时,贡献不为 \(0\)
-
若 \(i = j\)则 \(M(i, k) = M(j, k)\)贡献相等,那么两者乘积贡献 \(1\)。因此总贡献为 \(\deg_i\)
-
若 \(i \ne j\)则 \(M(i, k) \ne M(j, k)\)贡献相反,那么两者乘积贡献 \(-1\)。因此总贡献为 \(-A(i, j)\)。
于是有引理 \(1\)成立
2. 引理 2:
若 \(S\)构成的边集在原图上构成生成树,那么 \(\det M_0[S] = 1 / -1\)否则 \(\det M_0[S] = 0\)
-
先证后者:
若原图没有构成树,那么至少存在一个简单环 \(C(e_{i_1}, e_{i_2}, \cdots e_{i_k})\),记 \(e_{{i_j}_u}, e_{{i_j}_v}\)分别为边 \(e_{i_j}\)的两个端点。
同时,对于 \(M_0[S]\)有如下两点观察: -
对于同一行(处于简单环对应的行),恰好存在两列(简单环对应列)非 \(0\)。
-
对于同一列(简单环对应列),恰好存在两行(处于简单环对应的行)一行为 \(1\)一行为 \(-1\)。(若为最后一行也可视作出现)
-
下面证明 \(M_0[S]\)对应原简单环中的 \(i_1, i_2, \cdots i_k\)列线性相关,考虑依次合并所有列:
我们首先拿第 \(i_1\)列消 \(i_2\)列,因为简单环上两边共点,因此至少存在一行使得两列上均非 \(0\),我们消掉这一行后根据观察 \(2\)必恰好仅有 \(e_{{i_1}_u}, e_{{i_2}_v}\)这两行一行为 \(1\)一行为 \(-1\)。
假设合并到第 \(i_j\)列,若 \(j \ne k\)那么使用 \(i_{j - 1}\)列合并的结果同第一列消第二列的方式消掉第 \(i_j\)列,于是第 \(i_j\)列消完后必恰好在 \(e_{{i_1}_u}, e_{{i_j}_v}\)这两行一行为 \(1\)一行为 \(-1\)。
最后合并到第 \(i_{k - 1}\)列时,此时非 \(0\)两行与原 \(i_k\)列未消时一致,故此时可以将第 \(i_k\)列消为全 \(0\)。
因此这 \(i_1, i_2, \cdots i_k\)列线性相关,\(\det M_0[S] = 0\)。
-
再证前者:
考虑将原行列式消成好算的形式,类似于高斯消元的方式,我们钦定一行的主元拿此行去消所有行。
具体地,若 \(S\)构成的边集为一棵树,那么必定能找到叶子节点 \(u\),此时选出 \(u\)所在的行,必定恰好只存在一列非 \(0\),拿此列去消所有行(事实上只能消掉边的另一个节点所对应的行)。
可以发现这等价于每次在 \(M_0[S]\)中删去树上叶子节点所对应的一条边,故此过程一定可以不断递归直至消去所有边。
最后我们发现,每一行都只剩下恰好一列为其做为叶子时所对应列为 \(1 / -1\),故此时行列式值仅在每行选这些列时非 \(0\),不论逆序对数量,所得行列式值均为 \(1 / -1\)
引理 3(\(\rm Binet - Cauchy\)定理):
定义大小分别为 \(n \times m, m \times n(n \le m)\)的矩阵 \(A, B\)则有:
\[\det(AB) = \sum\limits_{S \subseteq \{1, 2, \cdots m\}, |S| = n} \det(A[S]) \times \det(B[S]) \]其中 \(A[S], B[S]\)分别表示 \(A\)取 \(S\)集合内的列,\(B\)取 \(S\)集合内的行所构成的矩阵。
证明引理 \(3\)之前再给出两条引理
定义 \(\lambda(P)\)为排列 \(P\)的逆序对数量。
引理A:
定义 \(P'\)为 \(P\)的逆排列,即满足 \(P'_{P_i} = i\),那么有:
\[\lambda(P) = \lambda(P') \]不妨转化 \(P'\)的逆序对求法,不难发现等价于给定序列 \(A\),每个元素存在两个关键字 \(x, y\),其中 \(A_{i_x} = p_i, A_{i_y} = i\)。
那么 \(\lambda(P')\)等价于将将序列 \(A\)按照第一关键字排序后以第二关键字为权值的逆序对数量。
在这里等价于按照权值排序后求下标的逆序对,这与直接求原排列的逆序对是等价的。
引理B:
定义 \(P_{Q}\)为排列 \(Q\)与排列 \(P\)的复合,则 \(\lambda(P_{Q})\)与 \(\lambda(P) + \lambda(Q)\)的奇偶性相同。
仿照引理 \(1\)的证明方法,那么左式等价去求给定序列 \(A\),每个元素存在两个关键字 \(x, y\)其中 \(A_{i_x} = Q'_i, A_{i_y} = P_i\)
那么 \(\lambda(P_Q)\)等价于按照第一关键字排序后以第二关键字为权值的逆序对数量。
\(\lambda(P)\),排序利用冒泡排序的过程,可知有效的交换仅有 \(Q'\)的逆序对个。
而我们知道每交换排列里两个元素排列逆序对数奇偶性改变,故总共改变 \(\lambda(P)\)次,所以 \(\lambda(P_Q)\)与 \(\lambda(P) + \lambda(Q)\)奇偶性相同。
首先我们展开等式右侧:
\[\begin{aligned} &\sum\limits_{S \subseteq \{1, 2, \cdots m\}, |S|= n} \det(A[S]) \times \det(B[S]) \\ =& \sum\limits_{S \subseteq \{1, 2, \cdots m\}, |S| = n} \left(\sum\limits_{P} (-1) ^ {\lambda(P)} \prod\limits_{i = 1} ^ n A_{i, S_{P_i}}\right) \times \left(\sum\limits_{Q} (-1) ^ {\lambda(Q)} \prod\limits_{i = 1} ^ n B_{S_i, Q_i}\right) \\ =& \sum\limits_{S} \sum\limits_{P} \sum\limits_{Q} (-1) ^ {\lambda(P) + \lambda(Q)} \prod\limits_{i = 1} ^ n A_{i, S_{P_i}} \times B_{S_i, Q_i} \\ \end{aligned} \]再展开等式左侧:
\[\begin{aligned} &\det(AB) \\ =& \sum\limits_{P} (-1) ^ {\lambda(P)} \prod\limits_{i = 1} ^ n \left(\sum\limits_{j = 1} ^ m A_{i, j} \times B_{j, P_i}\right) \\ =& \sum\limits_{P} (-1) ^ {\lambda(P)} \sum\limits_{R} \left(\prod\limits_{i = 1} ^ n A_{i, R_i} \times B_{R_i, P_i}\right) (|R| = n, \forall i, R_i \in \{1, 2, \cdots m\}) \\ =& \sum\limits_{R} \sum\limits_{P} (-1) ^ {\lambda(P)} \left(\prod\limits_{i = 1} ^ n A_{i, R_i}\right) \times \left(\prod\limits_{i = 1} ^ n B_{R_i, P_i}\right) \end{aligned} \]仔细观察可知,对于可重排列 \(R\),若存在 \(i j, R_i = R_j\)那么交换 \(P_i, P_j\)后后面的积式不变,但逆序对奇偶性改变,因此两者贡献互为相反数可抵消。
因此我们只需钦定每个存在 \(i j, R_i = R_j\)的可重排列 \(R\),让其和交换满足条件的最小 \(P_i, P_j\)交换后的排列 \(P\)的贡献相抵即可。
因为交换最小的 \(i, j\)后依然满足 \(i, j\)为最小的满足条件的点对,因此可以两两唯一配对。
故我们只需枚举不重的序列即可,为此我们首先枚举 \(\{1, 2, \cdots m\}\)的子集,然后枚举一个长度为 \(n\)的排列 \(Q\):
整理即可得到从右侧推导得到的式子。
下面我们只证明矩阵树定理删去最后一行最后一列是正确的(对于删去其余的情况,只需将 \(M_0\)的定义修改成删去改行即可)。
类似于引理 \(1\),我们知道 \(K_0 = M_0 \times M_0 ^ T\)其中 \(K_0\)为 \(K\)去掉最后一行和最后一列得到的方阵。
再根据引理 \(3\),可知:
由引理 \(2\),若边集 \(S\)不构成生成树,则 \(\det(M_0[S]) = 0\),在该式中贡献为 \(0\)。
若边集 \(S\)构成生成树,则 \(\det(M_0[S]) = 1 / -1\),在该式中贡献为 \(1\)。
故可得到 \(\det K_0\)即为原图的生成树数量
标签:end,OI,矩阵,cdots,线性代数,vec,bmatrix,向量 来源: https://www.cnblogs.com/starroadxyz/p/16635817.html