矩阵乘法

矩阵入门

大憨熊 提交于 2019-12-01 12:40:50
什么是矩阵 在数学中,矩阵(Matrix)是一个按照长方阵列排列的 复数 或 实数 集合 ,最早来自于 方程组 的 系数 及 常数 所构成的方阵(摘自某百科) \(n\) 行 \(m\) 列的矩阵大概长这个样子 : \[ A = \left[\begin{array}{c}a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\a_{3,1}& a_{3,2}&\cdots&a_{3,m}\\\cdots&\cdots& &\cdots\\a_{n,1}& a_{n,2}&\cdots&a_{n,m}\end{array}\right] \] 这 \(n \times m\) 个数称为矩阵 \(A\) 的元素,简称为元 数 \(a_{i,j}\) 位于矩阵的第 \(i\) 行第 \(j\) 列 矩阵的基本运算 加法 注意 : 只有 相同大小 的矩阵才可以相加 \[ \left[\begin{array}{c}1&4\\3&2\end{array}\right]+\left[\begin{array}{c}4&2\\5&7\end{array}\right]=\left[\begin{array}{c}5&6\\8&9\end{array}\right] \] 矩阵的加法满足 交换律 和 结合律 即 : \(A

T103763 【模板】矩阵乘法

限于喜欢 提交于 2019-12-01 10:26:11
题目地址 易错点: 应确认好元素乘法顺序. 1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 const int MAXX=2e2,MAXY=2e2; 5 struct Mat{ 6 int x,y; 7 int a[MAXX][MAXY]; 8 }; 9 Mat mull(Mat a,Mat b){ 10 Mat c; 11 c.x=b.x,c.y=a.y; 12 for(int i=1;i<=c.x;i++){ 13 for(int j=1;j<=c.y;j++){ 14 for(int k=1;k<=a.x;k++) 15 c.a[j][i]=c.a[j][i]+a.a[j][k]*b.a[k][i]; 16 } 17 } 18 return c; 19 } 20 int main(){ 21 int x1,y1,x2,y2; 22 scanf("%d%d%d%d",&x1,&y1,&x2,&y2); 23 Mat a,b; 24 a.x=x1,a.y=y1,b.x=x2,b.y=y2; 25 for(int j=1;j<=y1;j++){ 26 for(int i=1;i<=x1;i++){ 27 scanf("%d",&a.a[j][i]); 28 } 29 } 30 for(int j=1

numpy学习

南楼画角 提交于 2019-12-01 08:37:37
NumPy是Python的一种开源的数值计算库。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。 1.导入numpy,创建矩阵,查看维数,形状,大小 2.numpy的创建 创建3行4列0矩阵 3行4列全1矩阵 类似range,生成,并且reshape 从1到10生成5个线段 3.numpy基础运算 array相减 平方 三角函数 判断数大小 矩阵运算 定义矩阵 矩阵乘法 创建随机数,并求元素和,最大元素,最小元素 索引 平均值 中位数 前n位累加(n=1,2,……) 每一行的累差 排序(每行) 非0值 矩阵转置 clip 4.numpy索引 for循环输出每一行 (列) 循环输出每一项 5.numpy合并 合并1 数列加维度 合并2 合并3 6.numpy分割 相等分割 不等分割 分割2 7.numpy深浅拷贝 直接=是浅拷贝 深拷贝 来源: https://www.cnblogs.com/sclu/p/11663901.html

机器学习_数学基础

独自空忆成欢 提交于 2019-12-01 07:58:54
目录 数学基础知识 高等数学 线性代数 概率论和数理统计 数学基础知识 数据科学需要一定的数学基础,但仅仅做应用的话,如果时间不多,不用学太深,了解基本公式即可,遇到问题再查吧。 以下是以前考研考博时候的数学笔记,难度应该在本科3年级左右。 高等数学 1.导数定义: 导数和微分的概念 $f'({{x} {0}})=\underset{\Delta x\to 0}{\mathop{\lim }},\frac{f({{x} {0}}+\Delta x)-f({{x}_{0}})}{\Delta x}$ (1) 或者: $f'({{x} {0}})=\underset{x\to {{x} {0}}}{\mathop{\lim }},\frac{f(x)-f({{x} {0}})}{x-{{x} {0}}}$ (2) 2.左右导数导数的几何意义和物理意义 函数$f(x)$在$x_0$处的左、右导数分别定义为: 左导数:${{{f}'} {-}}({{x} {0}})=\underset{\Delta x\to {{0}^{-}}}{\mathop{\lim }},\frac{f({{x} {0}}+\Delta x)-f({{x} {0}})}{\Delta x}=\underset{x\to x_{0}^{-}}{\mathop{\lim }},\frac{f(x)-f({{x} {0}

行逻辑链接的矩阵乘法

我怕爱的太早我们不能终老 提交于 2019-12-01 07:28:12
Description 对于一个稀疏矩阵,当需要频繁的随机存取任意一行的非零元时,则需要知道每一行的第一个非零元在三元组表中的位置。为此,可以将算法5.2中用来指示“行”信息的辅助数组cpot固定在稀疏矩阵的存储结构中。这种“带行链接信息”的三元组表即为行逻辑链接的顺序表。其类型描述如下: 针对存储于行逻辑链接顺序表的稀疏矩阵,其矩阵相乘的算法与经典算法有所不同。因此,对于两个稀疏矩阵相乘(Q=M×N)的过程可以大致描述如下: 请使用行逻辑链接的顺序表实现两个稀疏矩阵的乘法。 Input 输入的第一行是两个整数r1和c1(r1<200, c1<200, r1*c1 <= 12500),分别表示一个包含很多0的稀疏矩阵的行数和列数。接下来有r1行,每行有c1个整数,用空格隔开,表示第一个稀疏矩阵的各个元素。 之后的一行有两个整数r2和c2(c1=r2<200, c2<200, r2*c2 <= 12500),分别表示一个包含很多0的稀疏矩阵的行数和列数。接下来有r2行,每行有c2个整数,用空格隔开,表示第二个稀疏矩阵的各个元素。 Output 输出两个矩阵的乘积。输出共有r1行,每行有c2个整数,每个整数后输出一个空格。请注意行尾输出换行。 Sample Input 4 5 0 0 0 69 78 0 0 5 0 0 0 0 0 0 0 0 91 2 0 82 5 6 0 18 0

AES算法详解

限于喜欢 提交于 2019-12-01 07:19:56
AES算法简介   AES的全称是Advanced Encryption Standard,意思是高级加密标准。 AES密码分组大小和密钥大小可以为128位、192位和256位。然而AES只要求分组大小为128位。本文只对分组大小128位,密钥长度也为128位的Rijndael算法进行分析。密钥长度为192位和256位的处理方式和128位的处理方式类似,只不过密钥长度每增加64位,算法的循环次数就增加2轮,128位循环10轮、192位循环12轮、256位循环14轮。    AES算法使用逻辑就是:发送方将要发送的明文数据X使用秘钥K进行AES加密后会得到密文Y,将密文进行网络传输,接受方在收到密文Y后使用秘钥K进行AES解密后技能得到明文X,这样即使密文Y在网络上传输时被截获了,没有秘钥也难以破解其真实意思。 AES算法相关数学知识   在AES算法中的MixColumn层中会用到伽罗瓦域中的乘法运算,而伽罗瓦域的运算涉及一些数学知识如下: 素域:   有限域有时也称伽罗瓦域,它指的是由有限个元素组成的集合,在这个集合内可以执行加、减、乘和逆运算。而在密码编码学中,我们只研究拥有有限个元素的域,也就是有限域。域中包含元素的个数称为域的阶。只有当m是一个素数幂时,即m=p n (其中n为正整数是p的次数,p为素数),阶为m的域才存在。p称为这个有限域的特征。 也就是说

一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483

狂风中的少年 提交于 2019-12-01 06:09:22
思想启发来自, 罗博士 的 根据递推公式构造系数矩阵用于快速幂 对于矩阵乘法和矩阵快速幂就不多重复了,网上很多博客都有讲解。主要来学习一下系数矩阵的构造 一开始,最一般的矩阵快速幂,要斐波那契数列Fn=F n-1 +F n-2 的第n项,想必都知道可以构造矩阵来转移 其中,前面那个矩阵就叫做系数矩阵(我比较喜欢叫转移矩阵) POJ3070 Fibonacci 可以试一试 1 #include<cstdio> 2 typedef long long ll; 3 const ll md=10000; 4 struct Mar{ 5 int r,c; 6 ll a[10][10]; 7 Mar(){} 8 Mar(int r,int c):r(r),c(c){ 9 for(int i=0;i<r;i++) 10 for(int j=0;j<c;j++) a[i][j]=0; 11 } 12 }A,T; 13 Mar mul(Mar A,Mar B){ 14 Mar ans(A.r,B.c); 15 for(int i=0;i<A.r;i++) 16 for(int j=0;j<B.c;j++) 17 for(int k=0;k<A.c;k++){ 18 ans.a[i][j]+=A.a[i][k]*B.a[k][j]%md; 19 if(ans.a[i][j]>=md) ans.a[i]

some code about numpy

烂漫一生 提交于 2019-11-30 22:23:11
import numpy as np np.__version__ #版本 #由于python的list不要求存储同样的类型,但是效率不高。 L = [i for i in range(10)] L[5] = "Asuka" #而调用array的效率相比更好,但是它没有将数据当做向量或者矩阵,不支持基本运算,会报错。 #建议用numpy中的array nparr = np.array([i for i in range(10)]) nparr[5] = 100.0 #整数可以换成浮点型 nparr.dtype #数据类型 np.zeros(10) #0向量 np.zeros(10, dtype=float) np.zeros((3, 5)) #0矩阵 np.zeros(shape=(3, 5), dtype=int) np.ones(10) #单位向量 np.ones((3, 5)) #单位矩阵 np.full((3, 5), 666) #填充666 np.full(fill_value=666, shape=(3, 5)) np.arange(0, 20, 2) # 2为step,而且与range相比,是可以用小数的 np.arange(0,10,1.5) np.linspace(0, 20, 11) #等分 np.random.randint(0, 10) #0

向量、矩阵几何意义

主宰稳场 提交于 2019-11-30 20:03:40
向量 点 - 标量 scalar 描述二维、三维空间一个点的坐标。例如点 a(a x , a y ) 或 a(a x , a y , a z ) 向量 - 矢量 (vector) 方向 (direction) 模 (magnitude ,俗称长度 ) 的有向线段 例如 a (a x , a y ) 或 a (a x , a y , a z ), 那这与点有什么区别呢? ( 加 粗 的区别 ) 单位向量 - 归一化运算 normalized vector 对 a (a x , a y ) 归一化运算 = 向量运算 - 加法 ( 向量对向量 ) 加法可以求两向量的半角向量 设向量 a = (a x , a y , a z ) ,向量 b = (b x , b y , b z ) , 向量 c c = a + b = (a x , a y , a z ) + (b x , b y , b z ) = (a x + b x , a y + b y , a z + b z ) 平行四边形法则: 三角形法则:首尾相连 ( 谁在前谁就是结果向量起始点 ) 向量运算 - 减法 ( 向量对向量 ) 向量减法可以求两个向量的相对偏移距离。 例如点 b 相对于点 a 的偏移距离 谁在后谁就是结果向量起始点 c = b – a , 再对 c 取模运算就可得到二者间的距离 向量运算 - 向量乘法 向量与标量

线性回归

♀尐吖头ヾ 提交于 2019-11-30 18:51:43
1. 线性回归 核心公式: w = (X T X) -1 X T Y 流程伪代码: 读入数据,将数据特征x、特征标签y存储在矩阵x、y中 验证 x^Tx 矩阵是否可逆 使用最小二乘法求得 回归系数 w 的最佳估计 核心代码: 1 def standRegres(xArr, yArr): 2 xMat = mat(xArr) 3 yMat = mat(yArr).T 4 # 矩阵乘法的条件是左矩阵的列数等于右矩阵的行数 5 xTx = xMat.T * xMat 6 # 因为要用到xTx的逆矩阵,所以事先需要确定计算得到的xTx是否可逆,条件是矩阵的行列式不为0 7 # linalg.det() 函数是用来求得矩阵的行列式的,如果矩阵的行列式为0,则这个矩阵是不可逆的,就无法进行接下来的运算 8 if linalg.det(xTx) == 0.0: 9 print("This matrix is singular, cannot do inverse") 10 return 11 # 最小二乘法 12 # 求得w的最优解 13 ws = xTx.I * (xMat.T * yMat) 14 return ws 2. 局部加权线性回归 (就是中间乘上权值W) 核心公式: 参数w = (X T WX) -1 X T WY 权值Wi = exp( ||xi - x|| / ( -2*k 2