定义:若对于矩阵 \(\text A\) 存在矩阵 \(\text B\) 和可逆矩阵 \(\Phi\) 满足 \(\text B=\Phi^{-1}\text A\Phi\) ,那么我们称 \(\text A\) 相似于 \(\text B\) ,记做 \(\text A\sim\text B\)
相似有如下性质:
- 反身性: \(\text A\sim\text A\)
- 对称性: 如果 \(\text A\sim\text B\) ,那么 \(\text B\sim\text A\)
- 传递性: 如果 \(\text A\sim\text B,\text B\sim\text C\) ,那么 \(\text A\sim\text C\)
相似矩阵有如下性质:
- 两者的秩相等
- 两者的行列式值相等
- 两者拥有同样的特征值,尽管相应的特征向量一般不同
- 两者拥有同样的特征多项式
- 两者可逆性相同,若均可逆,那么两者的逆矩阵同样相似
博主仅对第四点进行证明:
\[\begin{aligned} 0=|\lambda\text E-\text B|=&|\Phi^{-1}\lambda\Phi-\Phi^{-1}\text A\Phi|\ =&|\Phi^{-1}(\lambda\text E-\text A)\Phi|\ =&|\Phi^{-1}|\times|\lambda\text E-\text A|\times|\Phi|\ =&0\ \Rightarrow&|\lambda\text E-\text A|=0 \end{aligned} \]
假设一个矩阵 \(\text A\) 与对角矩阵 \(\text B\) 相似,那么有
问题转化为求桥接矩阵 \(\Phi\) ,这个就各凭本事了
还有大概会用到的定理如下:
若 \(n*n\) 矩阵 \(\text A\) 能被矩阵对角化当且仅当 \(\text A\) 有 \(n\) 个线性无关的特征向量 \(v_1,v_2...v_n\) ,且 \(\Phi_{i,j}=v_{j,i}\)。
问题转化为快速求特征向量,那么考虑怎么快速求矩阵的特征多项式.
先来一个不带脑子的做法,直接用 \(dft+\)高消\(+idft\) ,时间复杂度 \(O(n^4)\) ,实现可以用插值或者Bluestein
然后考虑用相似矩阵来优化运算,先来个 \(suncongbo\) 队长教育我的做法:
假设最初的矩阵是 \(\text A\) ,我们每次给 \(\text A\) ,左乘一个初等行变换矩阵,然后右乘一个初等列变换矩阵。
考虑最后能消成什么矩阵,发现是上海森堡矩阵,因为假如在消其它行第 \(i\) 列的时候用第 \(i\) 行去消的话会在做列变换的时候影响第 \(i\) 行,这样没有达到预期的效果,于是用第 \(i+1\) 行去消,最后消出来就是上海森堡矩阵。
这个玩意儿怎么快速求特征多项式呢?
简单观察后发现最后一行只有两列有值,那么枚举选的是哪一列,如果选第 \(n\) 列,就是 \(\lambda-a_{n,n}\) 乘以左上角子矩阵的特征多项式,若选第 \(n?1\) 列,那么接下来一定是若干个第 \(n?i\) 行选第 \(n?i-1\) 列,然后会有一行 \(j\) 选第 \(n\) 列,由于 \(a_{n?1,n?2},a_{n?2,n?3}...a_{j+1,j},a_{j,n}\) 都不含变量 \(\lambda\) 所以直接递推即可,复杂度 \(O(n^3)\)。
原文:https://www.cnblogs.com/ldxcaicai/p/12727745.html