矩阵加法

矩阵快速幂模板

血红的双手。 提交于 2020-04-07 08:33:16
第一部分:矩阵的基础知识 1.结合性 (AB)C=A(BC). 2.对加法的分配性 (A+B)C=AC+BC,C(A+B)=CA+CB . 3.对数乘的结合性 k(AB)=(kA)B =A(kB). 4.关于转置 (AB)'=B'A'. 一个矩阵就是一个二维数组,为了方便声明多个矩阵,我们一般会将矩阵封装一个类或定义一个矩阵的结构体,我采用的是后者。(弱鸡的我也直只会用结构体实现) 第二部分:矩阵相乘 若A为n×k矩阵,B为k×m矩阵,则它们的乘积AB(有时记做A·B)将是一个n×m矩阵。前一个矩阵的列数应该等于后一个矩阵的行数,得出的矩阵行数等于前一个矩阵的行数,列数等于后一个矩阵的行数。 其乘积矩阵AB的第i行第j列的元素为: 举例:A、B均为3*3的矩阵:C=A*B,下面的代码会涉及到两种运算顺序,第一种就是直接一步到位求,第二种就是每次求一列,比如第一次,C00+=a00*b00,C01+=a00*b01……第二次C00+=a00*b10,C01+=a01*b11……以此类推。。。 C00 = a00*b00 + a01*b10 + a02*b20 C01 = a00*b01 + a01*b11 + a02*b21 C02 = a00*b02 + a01*b12 + a02*b22 C10 = a10*b00 + a11*b10 + a12*b20 C11 = a10

矩阵快速幂&T1

落爺英雄遲暮 提交于 2020-04-07 08:19:00
T1 知识储备 在写这一题之前,我们首先要了解矩阵乘法(我就是因为不懂弄了好久...) 矩阵的运算()-----(信息学奥赛一本通之提高篇) 矩阵的加法减法是十分简单的,就是把2个矩阵上对应的位置相加减 矩阵乘法 1.我们要满足A矩阵的列数和B矩阵的行数相等 2.如果A是一个n*r的矩阵,B是一个r*m的矩阵,那么A和B的乘积C是一个n*m的矩阵 3.C i,j= a i,1 *b 1,j +a i,2 *b 2,j +a i,3 *b 3,j +...+a i,r *b r,j ; 由以上我们要得出一个重要的结论,就是:矩阵乘法满足结合律即A*B+A*C=A*(B+C) 方阵乘幂 A是一个方阵,将A连成n次,即:C=A n 如果不是方阵就不能进行乘幂运算,然后由我们上面得出来的矩阵乘法满足结合律,因此我们可以用快速幂的方法求解解 矩阵乘法的应用 1.通过状态矩阵和状态转移矩阵相乘可以快速得到一次DP的值 2.求矩阵相乘的结果是要做很多次乘法,这样的效率非常慢甚至不如原来的DP转移.所以我们可以先算后面的转移矩阵,并将其与初始矩阵相乘得到结果,算法的时间复杂度为log(n)级别 矩阵快速幂 恩恩,直接上代码 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define FOR(i,a,b) for(register ll i

Keyle的3D数学-学习手札

ⅰ亾dé卋堺 提交于 2020-03-28 07:46:33
数学复习笔记 不断更新中 1.向量 在3D数学中 向量的基本运算有 归一化 ,加法与减法 ,点乘 与叉乘 。 点乘公式如下 所指为 a向量与b向量的夹角 , = 反余弦(ab点乘 / a与b的模相乘) 叉乘公式如下 具体用法在这里 ttp://www.cnblogs.com/Keyle/p/4506699.html 2.矩阵 一般来说矩阵式这样的 矩阵的加法,减法也是一样 性质 矩阵的乘法 向量乘以一个3*3的矩阵 例题 重点看例3 在矩阵中AB!=BA 矩阵的线性变换 (1)利用矩阵做向量的旋转 旋转公式如下 (2)利用矩阵缩放 基本概念 矩阵缩放公式 (3)投影矩阵 首先分为两种透视投影与正交投影,正交投影其实是一个降维的过程(三维变二维) 公式如下 通用投影矩阵 (4)镜像矩阵 任意镜像矩阵公式,我们用n来指定一个平面 (5)矩阵的切变 2D切变公式如下 3D切变如下 (6)矩阵的行列式 公式如下 注意只有方阵才有行列式计算,他的计算结果是一个标量,对角交叉相乘最后相加 3D矩阵计算公式如下 (7)矩阵的逆 性质 计算公式 其中adjM为标准伴随矩阵 其中的 C{11} 叫做代数余子式矩阵 计算方式为 ===> 一个完整的计算方式如下 代数余子矩阵计算比较复杂 实际运用 V是一个向量 我们通过M旋转矩阵进行了旋转,现在要回到原来的位置,那么我们再乘以M矩阵的逆,也就是等于v

R 语言-基础

人盡茶涼 提交于 2020-03-26 07:52:37
R语言 1997年成为GNU项目 开源免费 R官方网址 www.r-project.org R是数据分析领域的语言 小巧灵活,通过扩展包来增强功能 绘图功能 代码简单 开发环境 R + RStudio 1、数据类型 character 字符 numeric 数值型,实数或小数 integer 整型 complex 复数型 logical 逻辑型 类似于boollean 2、数据结构 Vector 向量 Factor 因子 Array 数组 Matrix 矩阵 Data Frame 数据框 List 列表 一维:向量、因子 向量属于数值型变量,因子对应于分类变量 二维:矩阵、数据框 矩阵中元素的数据类型是一致的,数据框由向量组成,每个向量中的数据类型保持一致,向量间的数据类型可以不一致,类似于表结构。 三维:数组、列表 数组用的比较少,多维数据结构;列表可以包含上面所有的数据结构 3、向量 向量表示一组数据,数据类型一致,向量可以表示行或者列 c() 如: : 如: 1:10 seq(from(开始), to(到), by(步长), length.out(指定向量的元素个数), along.with(长度与指定的向量长度相同)) 提取子集: 数字下标(正数:获取指定元素,从1开始,负数:排除的意思) which()函数(按条件来进行筛选) #向量 (x1<- c(10,11,12

机器学习(吴恩达) 第3章 线性代数复习(选修)

牧云@^-^@ 提交于 2020-03-16 21:44:22
@[TOC]机器学习(吴恩达) 第3章 线性代数复习(选修) (这一节是很基础的线性代数) 3-1 矩阵和向量 矩阵:是指由数字组成的矩形阵列,并写在方括号内。 (1) 矩阵中某个元素的表达 向量:是只有一列的矩阵。 3-2 加法和标量乘法 加减法 标量乘法 3-3 矩阵向量乘法 3-4 矩阵乘法 3-5 矩阵乘法特征 不服从交换律。 服从结合律。 单位矩阵 3-6 逆和转置 逆矩阵 转置 (持续更新中…) 来源: CSDN 作者: qq_37034291 链接: https://blog.csdn.net/qq_37034291/article/details/104905198

矩阵的加、减、乘、除、求逆运算的实现

爷,独闯天下 提交于 2020-03-15 19:42:31
1、矩阵的加减乘除求逆运算的概念:   (1)矩阵概念 有 m n 个数排列成一个 m 行 n 列,并括以方括弧(或圆括弧)的数表称为 m 行 n 列矩阵。   (2)矩阵加法:   (3)矩阵乘法:   (4)矩阵的求逆运算   (5)矩阵的除法:     分成两种(1)A\B=inverse(A)*B (2)B/A=B*inverse(A),理解上可能有误,不过是按照这两种方式来运算的。。 2、要求:   要求很简单:编写一个实现矩阵(向量)的+ - * / 求逆运算的类(女友的一个作业题) 3、实现代码    View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #define col 3 4 #define row 3 5 class matrix//类的定义 6 { 7 private: 8 double m[col][row];//矩阵设置为私有的, 9 public: 10 matrix(){}//无参数的构造函数 11 matrix(double a[col][row]);//有参数的构造函数 12 matrix Add(matrix &b);//加法运算声明 13 matrix Sub(matrix &b);//减法运算声明 14 matrix Mul(matrix &b);//乘法运算声明 15 matrix

线性代数(四)置换,转置,向量空间

让人想犯罪 __ 提交于 2020-03-09 08:39:50
置换矩阵P 置换矩阵(permutations)P是行重新排列了的单位矩阵。对于n×n的矩阵来说一共有n!种行变换的形式。所有的置换矩阵均是可逆的。 在求矩阵的逆,解方程组Ax=b,这些情况下如果出现主元位置为0的时候,就需要使用行互换。 A=LU,其中L为下三角矩阵,U为上三角矩阵。 P-1 = PT ,PTP = I P矩阵的转置乘以本身等于单位矩阵。 转置矩阵 转置(transpose)记作T,一个3行2列的矩阵,他的转置矩阵为2行3列,且(AT)ij = Aji。 对称矩阵 对称矩阵(symmetric matrices),一个矩阵为对称矩阵意味着它经过转制之后该矩阵没有变化。AT=A。 一个矩阵乘以他的转置矩阵,得到的矩阵一定是对称矩阵。RTR is always symmetric。 但是为什么呢? 我们利用定义来证明(RTR)T = RTRTT = RTR,注意这里的矩阵的转置的转置是原矩阵。验证完毕。 向量空间 向量空间(Vector Spaces) 举个例子,R2称为一个平面有所有的2维向量组成的向量空间。为了防止在运算过程中超出向量空间的范围,向量空间必须对数乘和加法两种运算是封闭的或者说对线性组合封闭。R2的子空间必须是过原点的线段,也可以是它本身。第三种R2的子空间是零向量。 这里没听太明白。。。 来源: CSDN 作者: CZZ_CS 链接: https:

2 线性代数基础

感情迁移 提交于 2020-03-05 15:56:11
转自: https://blog.csdn.net/longxinchen_ml/article/details/51629328 1 基本概念和符号 线性代数可以对一组线性方程进行简洁地表示和运算。例如,对于这个方程组: 这里有两个方程和两个变量,如果你学过高中代数的话,你肯定知道,可以为x1 和x2找到一组唯一的解 (除非方程可以进一步简化,例如,如果第二个方程只是第一个方程的倍数形式。但是显然上面的例子不可简化,是有唯一解的)。在矩阵表达中,我们可以简洁的写作: 其中: 很快我们将会看到,咱们把方程表示成这种形式,在分析线性方程方面有很多优势(包括明显地节省空间)。 1.1 基本符号 以下是我们要使用符号: 符号 A ∈ R m×n 表示一个m行n列的矩阵,并且矩阵A中的所有元素都是实数。 符号x ∈ R n 表示一个含有n个元素的向量。通常,我们把n维向量看成是一个n行1列矩阵,即列向量。如果我们想表示一个行向量(1行 n 列矩阵),我们通常写作 x T ( x T 表示x的转置,后面会解释它的定义)。 一个向量x的第 i 个元素表示为x i : 我们用 a ij (或 A ij , A i , j ,等) 表示第 i 行第 j 列的元素: 我们用 a j 或 A : , j 表示A矩阵的第 j 列元素: 我们用 a T i 或 A i , : 表示矩阵的第i行元素:

R语言矩阵matrix函数

依然范特西╮ 提交于 2020-02-11 09:39:09
矩阵是元素布置成二维矩形布局的R对象。 它们包含相同原子类型的元素。尽管我们可以创建只包含字符或只逻辑值的矩阵,但是它们没有多大用处。我们使用的是在数学计算中含有数字元素矩阵。 使用 matrix()函数创建一个矩阵。 语法 R语言中创建矩阵的基本语法是: matrix(data, nrow, ncol, byrow, dimnames) 以下是所使用的参数的说明: data - 是这成为矩阵的数据元素输入向量。 nrow - 是要创建的行数。 ncol - 要被创建的列的数目。 byrow - 是一个合乎逻辑。如果为True,那么输入向量元素在安排的行。 dimname - 是分配给行和列名称。 示例 创建矩阵取向量的数量作为输入 # Elements are arranged sequentially by row. M <- matrix(c(3:14), nrow=4, byrow=TRUE) print(M) # Elements are arranged sequentially by column. N <- matrix(c(3:14), nrow=4, byrow=FALSE) print(N) # Define the column and row names. rownames = c("row1", "row2", "row3", "row4")

矩阵快速幂

会有一股神秘感。 提交于 2020-02-07 18:13:49
这周学习了矩阵快速幂,就在这里记录下我的一下理解吧。 要学习矩阵快速幂,首先得先知道“矩阵”和“快速幂”的写法。 先说快速幂 顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为O(log₂N),与朴素的O(N)相比效率有了极大的提高。 ——百度百科 以NOIP2013的麦森数为例题,讲一下快速幂 从文件中输入P(1000<P<3100000),计算2^P-1的位数和最后500位数字(用十进制高精度数表示) 本题显然要使用高精度运算。对2^P-1位数可以用公式log10(2^P-1)+1来求。因为2^P最后一位不可能为0,所以原式可化简为log10(2^P)+1=P*log10(2)+1。于是就能快速得到麦森数的位数了。 我们主要看求最后500位的运算。这显然要用到高精度。但是使用普通的高精度运算,时间复杂度就为P*500^2=2500P。对于最大的P=3100000,显然超时。那有没有更快的算法呢? 这就要牵扯到二进制了,二进制一直是很神奇的一个东西。 以十进制数5举例子,5的二进制为101,这可以通过取模然后反过来得到。看一下101是怎样表示5的。 二进制逢二进一。所以十位上的数就表示这个数有几个2,这就像十进制的十位表示这个数有几个10一样。所以像十进制一样往上推,百位上的数就表示这个数有几个2^2,千位上的数就表示这个数有几个2^3……那么根据这样,就可以看出,101=1