代数与概率

矩阵一些定义

矩阵乘法理解

矩阵乘法规则分析

 

 

矩阵乘法模板 

#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对高斯消元的理解

高斯消元详细代码讲解

数学期望

原文地址:https://www.cnblogs.com/aprincess/p/11803831.html