矩阵TG知识总结(矩阵求逆)
Posted yspm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵TG知识总结(矩阵求逆)相关的知识,希望对你有一定的参考价值。
关于矩阵:
(1.) 矩阵加法:直接对应位置加
(2.) 矩阵减法:直接对应位置减
(3.) 矩阵乘法:
[ans_{i,j}=sum^{n}_ {k=1} a_{i,j} imes a_{k,j}
]
这里要求相乘的 (A) 的行和 (B) 的列相同
这里矩阵乘法没有交换律
(4.) 快速幂
重载一下运算符,和普通快速幂一样写
(5.) 高斯消元
(6.) 矩阵求逆
定义:如果 (A imes P equiv e (mod p)) 其中 (A,P) 为可矩阵乘矩阵,(e) 为单位矩阵
那么我们成矩阵(P) 为矩阵 (A) 在 (mod p) 意义下的逆元
求法:
博主只会高斯消元求的一种
先考虑整一个矩阵 (B) 放在 (A) 的右侧,同时对 (A) 进行高斯消元
消成上三角之后接着消成单位矩阵就好了
我们对 (A) 进行得操作对 (B) 进行一样的,然后就没问题了
最后得到的 (B) 就是 (A) 在(mod p) 意义下的逆
(Code:)
#include<bits/stdc++.h>
using namespace std;
namespace yspm{
inline int read()
{
int res=0,f=1; char k;
while(!isdigit(k=getchar())) if(k==‘-‘) f=-1;
while(isdigit(k)) res=res*10+k-‘0‘,k=getchar();
return res*f;
}
const int mod=1e9+7;
inline int ksm(int x,int y)
{
int res=1; for(;y;y>>=1,x=1ll*x*x%mod) if(y&1) res=res*1ll*x%mod;
return res;
}
const int N=510;
int n;
struct mat{
int a[N][N];
inline void clear(){memset(a,0,sizeof(a)); return ;}
inline void update(int id,int val)
{
for(int i=1;i<=n;++i) a[id][i]=a[id][i]*1ll*val%mod;
return ;
}
inline void ch(int x,int y,int val)
{
for(int i=1;i<=n;++i) a[x][i]=((a[x][i]+1ll*a[y][i]*val%mod)%mod+mod)%mod;
return ;
}
inline void swap(int x,int y){for(int i=1;i<=n;++i) swap(a[x][i],a[y][i]); return ;}
int* operator [](int x){return a[x];}
inline void print()
{
for(int i=1;i<=n;++i){for(int j=1;j<=n;++j) printf("%d ",a[i][j]); puts("");}
return ;
}
}A,B;
signed main()
{
n=read(); for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) A[i][j]=read();
for(int i=1;i<=n;++i) B[i][i]=1;
for(int i=1;i<=n;++i)
{
if(!A[i][i])
{
for(int j=i+1;j<=n;++j) if(A[j][i]){ A.swap(i,j),B.swap(i,j); break;}
}
if(!A[i][i]) return puts("No Solution"),0;
int inv=ksm(A[i][i],mod-2); A.update(i,inv); B.update(i,inv);
for(int j=i+1;j<=n;++j) B.ch(j,i,-A[j][i]),A.ch(j,i,-A[j][i]);
}
for(int i=n-1;i>=1;--i) for(int j=i+1;j<=n;++j) B.ch(i,j,-A[i][j]),A.ch(i,j,-A[i][j]);
B.print();
return 0;
}
}
signed main(){return yspm::main();}
用途:我们在处理矩阵的逆运算的时候可以考虑求逆,比如把矩阵作为函数求其逆函数
以上是关于矩阵TG知识总结(矩阵求逆)的主要内容,如果未能解决你的问题,请参考以下文章