线性代数
矩阵的定义
由
- 行数与列数都等于
n 的矩阵称为n 阶矩阵或n 阶方阵。
矩阵加法
若
则
矩阵减法
若
则
矩阵数乘
若
则
矩阵乘法
若
则
-
一个
n\times k 的矩阵和一个k\times m 的矩阵相乘,得到一个n\times m 的矩阵。 -
用途——优化线性递推
构造一个 n 阶矩阵 A ,使得:
那么
其中
- 用线性代数相关知识 + FFT 可以将线性递推的时间复杂度优化到
O(nlognlogk) 。
矩阵行列式
一个 n 阶矩阵的行列式记为
一个
一个 n 阶矩阵的行列式等于其任意行(或列)的元素与对应的代数余子式乘积之和,即:
其中,
-
n 阶矩阵某两行(列)交换,行列式
\times (-1) 。 -
矩阵某一行(列)加上或减去另一行(列),行列式不变。
-
矩阵某一行(列)
\times k ,行列式\times k 。
高斯消元
bool Gauss(){
for(int i=1;i<=n;i++){
int mx=i;
for(int j=i+1;j<=n;j++) if(fabs(M[j][i])>fabs(M[mx][i])) mx=j;
for(int j=1;j<=n+1;j++) swap(M[i][j],M[mx][j]);
if(fabs(M[i][i])<=1e-7) return 0;
for(int j=1;j<=n;j++) if(j!=i){
double tmp=M[j][i]/M[i][i];
for(int k=i+1;k<=n+1;k++) M[j][k]-=M[i][k]*tmp;
}
}
for(int i=1;i<=n;i++) M[i][n+1]/=M[i][i],M[i][i]=1;
return 1;
}