線性代數
線性空間
指向量空間,在線性空間里,定義了向量加法與標量乘法
其中標量乘法對向量加法有分配律
我們稱標量乘與向量加為線性組合
線性無關
如果一組向量中不存在一個子集使得其能線性組合出該組向量中的另一向量
線性基
也稱線性空間的基底,即最小的一組能線性表示出整個線性空間的向量組
向量
點積
對於兩個 \(k\) 維向量 \(\vec a,\vec b\),其點積 \(\vec a\cdot \vec b=\sum_{i=0}^{k-1}a_ib_i\)
顯然,點積對加法有分配律 \((\vec a+\vec b)\cdot \vec c=\vec a\cdot \vec c+\vec b\cdot \vec c\)
向量正交化
對於一組線性無關的向量組,構造一組向量使得其組成的線性空間與原向量組等價,且兩兩垂直,模長為單位長度
考慮一個個向量處理,對於第 \(i\) 個向量 \(\vec{v_i}\),我們只需讓取系數 \(a_{i,j}\) 得到 \(\vec{v_i'}=\vec{v_i}+\sum_{j=0}^{i-1} \vec{v_j’}a_{i,j}\)
我們考慮由於 \(v_j'\) 兩兩垂直,我們把 \(v_i\) 拆成向量 \(\vec a+\vec b\) 使得 \(\vec a\bot \vec{v_j'},\vec b//\vec{v_j'}\)
考慮 \(\vec b\) 實際上是 \(\vec{v_j'}\) 到 \(\vec{v_i}\) 的投影,寫個點積求模長,把 \(\vec b\) 減掉即可
矩陣
矩陣,為一個按矩形排列的復數集合,將 \(n\) 行 \(m\) 列的矩陣簡稱為 \(n\times m\) 矩陣
矩陣的轉置
對於 \(n\times m\) 的矩陣 \(A\),稱一個滿足 \(A^{T}_{i,j}=A_{j,i}\) 的 \(m\times n\) 矩陣 \(A^{T}\) 為 \(A\) 的轉置
矩陣運算
對於 \(n\times m\) 矩陣 \(A,B\)
定義數乘 \(vA=C\)
滿足 \(C\) 是 \(n\times m\) 矩陣且 \(c_{i,j}=v*a_{i,j}(i\in[1,n],j\in[1,m])\)
定義矩陣加法 \(A+B=C\)
滿足 \(C\) 是 \(n\times m\) 矩陣且 \(c_{i,j}=a_{i,j}+b_{i,j}(i\in[1,n],j\in[1,m])\)
減法類似
矩陣加減法均有交換結合律,對數乘有結合律
對於 \(n\times m\) 矩陣 \(A\) 與 \(m\times p\) 矩陣 \(B\)
定義矩陣乘法 \(A\times B=C\)
滿足 \(C\) 是 \(n\times p\) 矩陣且 \(c_{i,j}=\sum_{k=1}^ma_{i,k}b_{k,j}(i\in[1,n],j\in[1,p])\)
矩乘沒有交換律,但有結合律
時間復雜度 \(O(nmp)\)
for(int i=1;i<=n;i++)
for(int k=1;k<=m;k++)
for(int j=1;j<=p;j++)
c[i][j]=add(c[i][j]+1ll*a[i][k]*b[k][j]%mod);
這樣一段矩乘代碼內存訪問更為連續,常數較小
特別的,對於 \(n\times n\) 矩陣 \(A\)
定義 \(A^k\) 為 \(A^{k-1}\times A\) ,且 \(A^1=A\)
一般采取矩陣快速冪在 \(O(n^3logk)\) 的復雜度內得到 \(A^k\)
在OI中,可以重新定義矩陣乘法,例如 \(\min+\) 矩乘
需注意應滿足結合律才可采用矩陣快速冪算法
矩陣變換
矩陣的初等行變換
- 交換兩行
- 以非零實數乘以某行
- 將某行替換為它與其它行倍數的和
我們試圖通過初等行變換消元,得到原多個向量組成的線性空間的一組基
這個過程用高斯消元實現,高斯校園后下三角矩陣變為0,稱為行階梯形
矩陣的秩
對於一個 \(n\times m\) 的矩陣 \(A\)
行秩:矩陣 \(n\) 個行向量中線性無關的極大數目
列秩:矩陣 \(m\) 個列向量中線性無關的極大數目
行秩=列秩,稱為 \(\text{rank}(A)\)
滿秩:稱行秩為行數的矩陣行滿秩,同理可得列滿秩定義
對於一個方陣,若其秩為階數則稱其為滿秩矩陣
矩陣的逆
若方陣 \(A\) 滿秩,\(A\) 存在逆矩陣 \(A^{-1}\)
滿足 \(A\times A^{-1}=A^{-1}\times A=I\)
矩陣求逆可以考慮將矩陣 \(A\) 高消成 \(I\) 的過程
由於矩陣初等變換本質是給矩陣乘一個矩陣
那么,\(A\times B=I\),則 \(B\) 為 \(A^{-1}\),實現考慮 \(I\times B=B\),即可
結論
\((AB)^{-1}=B^{-1}\times A^{-1}\)
\((AB)^{T}=B^{T}\times A^{T}\)
\((A^T)^{-1}=(A^{-1})^T\)
行列式
對於一個 \(n\times n\) 的矩陣 \(A\)
定義其行列式 \(\det(A)\) 為一個與矩陣 \(A\) 對應的標量
\(\det(A)=\sum_{p}(-1)^{\tau(p)}\prod_{i=1}^na_{i,p_i}\)
其中,\(p\) 為一個1到n的排列,\(\tau(p)\) 表示該排列的逆序對數
行列式的性質
- 對換行列式兩行(列)的位置,行列式的值反號
- 把行列式的某一行(列)乘上實數 \(k\) ,行列式的值乘以 \(k\)
- 將某行(列)的倍數加到其它行(列)上,行列式的值不變
- 行階梯形矩陣的行列式為主對角線的乘積
綜上,我們可以利用高斯消元求解行列式
從行列式的定義出發
考慮 \(\sum_p\prod a_{i,p_i}\) 實際上是一個滿二分圖匹配的方案數
套上 \((-1)^{\tau(p)}\) 實際上跟二分圖匹配時交點個數的奇偶性,答案為偶方案-奇方案
循環矩陣的行列式
計算 \(\begin{vmatrix}c_0&c_1&...&c_{n-1}\\c_1&c_2&...&c_0\\\vdots&\vdots&\ddots&\vdots\\c_{n-1}&c_0&\dots&c_{n-2}\end{vmatrix}\)
相關多項式 \(F(x)=\sum_{i=0}^{n-1}c_ix^i\)
\(\det(A)=\prod_{j=0}^{n-1}F(\omega_n^j)\)
范德蒙德行列式
其形如 \(A=\begin{vmatrix}1&1&...&1\\x_0&x_1&...&x_n\\\vdots&\vdots&\ddots&\vdots\\x_0^n&x_1^n&\dots&x_n^n\end{vmatrix}\)
\(\det(A)=\prod_{0\leq i<j\leq n}(x_j-x_i)\)
值得一提的是范德蒙德矩陣與多項式很有關聯
左乘一個表示多項式系數的行向量得到的行向量本質是對於 \(x_0\dots x_n\) 多點求值的結果
克萊姆法則
對於線性方程組,記其系數矩陣為 \(A\),增廣矩陣最后一列為 \(B\)
若 \(\det(A)\neq 0\),則方程組有唯一解 \(x_i=\dfrac{\det(A_i)}{\det(A)}\)
其中,\(A_i\) 指將 \(A\) 的第 \(i\) 列換成 \(B\) 得到的矩陣
大概能和行列式有特殊性質的系數矩陣聯合使用
