矩阵一些定义
矩阵乘法理解
矩阵乘法规则分析
矩阵乘法模板
#include <bits/stdc++.h>
using namespace std;
const int maxn=107;
int c[maxn][maxn],a[maxn][maxn],b[maxn][maxn],n;
void multi(int a[][maxn],int b[][maxn],int n){
//n是矩阵大小,n<maxn,二维数组传参,
//第一维可以省略,第二维不可以省略
memset(c,0,sizeof c);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
int sum=0;
for(int k=0;k<n;k++)
sum+=a[i][k]*b[k][j];
c[i][j]=sum;
}
}
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&b[i][j]);
multi(a,b,n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
printf("%d ",c[i][j]);
printf("
");
}
return 0;
}
矩阵快速幂模板
#include <bits/stdc++.h> #define ll long long #define mod 1000000007 using namespace std; struct Mat{ //结构体存矩阵 ll m[101][101]; }; Mat a,e;//a是输入的矩阵,e是单位矩阵 ll n,p; Mat Mul(Mat x,Mat y){ //矩阵乘 Mat c; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) c.m[i][j]=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) c.m[i][j] = c.m[i][j] % mod + x.m[i][k] * y.m[k][j] % mod; return c; } Mat pow(Mat x,ll y){ //矩阵快速幂 Mat ans=e; while(y){ if(y&1) ans=Mul(ans,x); x=Mul(x,x); y>>=1; } return ans; } int main(){ cin>>n>>p; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a.m[i][j]; for(int i=1;i<=n;i++) e.m[i][i]=1; Mat ans=pow(a,p); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cout<<ans.m[i][j] % mod<<" "; cout<<endl; } return 0; }
(单位阵:对角线上是1的矩阵)
线性方程组(就是n元一次方程组)
高斯消元
dalao对高斯消元的理解
高斯消元详细代码讲解
数学期望