• 矩阵运算


    矩阵

    本蒟蒻刚刚学习矩阵,还很辣鸡。。
    矩阵,顾名思义,就是由数字组成的矩形
    通常用Anm表示一个有n列m行的矩阵,其中aij表示第i列第j行的元素,又称元
    例如:

    1   2
    3   5
    就是一个2*2的矩阵【不会放数学公式所以括号就不画了= =】

    矩阵加法

    两个矩阵相加,首先必须是两个行列n*m都相同的矩阵
    相加就是把相同位置的数加起来得到一个新的n*m的矩阵

    矩阵减法

    类似于矩阵加法,相同位置相减

    矩阵数乘

    表示为a*A,也就是用一个数去乘一个矩阵
    得到一个相同大小的矩阵,每个位置上的数字扩大a倍

    矩阵乘法

    以上三种运算都十分直观而好理解
    但矩阵乘法就很迷了【本蒟蒻表示好难QAQ】

    前提:
    如果两个矩阵A,B能相乘,必须满足  A的列数=B的行数
    比如:
    1 2 3       5 8
    4 5 6       3 4
                   2 6
    这两个矩阵就可以相乘

    怎么乘呢?
    对于上边两个矩阵,相乘结果为:
    (1*5+2*3+3*2)   (1*8+2*4+3*6)
    (4*5+5*3+6*2)   (4*8+5*4+6*6)
    看出来了吗?
    得到的新矩阵的第一列第一个数,为A矩阵的第一行所有数与B矩阵第一列数每个数对应相乘后相加的结果,
    同理,第一列第二个数,等于A矩阵第一行与B矩阵第二列进行同样的操作
    也就是说,对于第i列第j个数,等于A矩阵第i行与B矩阵第j列进行一次对应相乘相加

    矩阵乘法的意义大概就是两组数之间的映射运算关系
    比如方程5x+3y=1
    可以写成:
    5 3     x          =    1
              y
    【没有扩号看着好难看= =】

    为了方便,通常把矩阵写成进结构体,然后重载运算符
    struct Matrix{
    	LL s[maxn][maxn],n,m;
    	Matrix() {n=m=0;fill(s[0],s[0]+maxn*maxn,0);}
    };

    矩阵乘法:
    inline Matrix operator *(const Matrix& a,const Matrix& b){
    	Matrix c;
    	if(a.m!=b.n) return c;
    	c.n=a.n;c.m=b.m;
    	for(int i=1;i<=c.n;i++)
    		for(int j=1;j<=c.m;j++)
    			for(int k=1;k<=a.m;k++)
    				c.s[i][j]=(c.s[i][j]+a.s[i][k]*b.s[k][j]%P)%P;
    	return c;
    }

    矩阵快速幂

    矩阵乘法没有交换律,但满足结合率,所以在对数的快速幂仍然可以运用到矩阵中来
    但矩阵能自乘必须满足自身是方阵(n==m)
    Matrix qpow(Matrix a,LL b){
    	Matrix ans;
    	ans.n=ans.m=a.n;
    	for(int i=1;i<=a.n;i++)
    		for(int j=1;j<=a.m;j++)
    			ans.s[i][j]=(i==j);
    	for(;b;b>>=1,a=a*a)
    		if(b&1) ans=ans*a;
    	return ans;
    }




    我那么弱,没看懂还是看其他dalao的吧QAQ
  • 相关阅读:
    hive0.13.1安装-mysql server作为hive的metastore
    hadoop2.2集群部署教程连接
    hadoop2.4.1伪分布模式部署
    spring cloud (四、服务消费者demo_consumer)
    spring cloud (三、服务提供者demo_provider)
    spring cloud (二、服务注册安全demo_eureka)
    spring cloud (一、服务注册demo_eureka)
    maven里面pom文件的各标签介绍
    如何删除github里面的项目
    用过的工具列表及作用
  • 原文地址:https://www.cnblogs.com/Mychael/p/8282885.html
Copyright © 2020-2023  润新知