矩阵乘法

线性代数基础知识(三)—— 矩阵乘法

谁说胖子不能爱 提交于 2020-01-05 22:13:13
矩阵 A ∈ R m × n 和 B ∈ R n × p 的乘积为矩阵 : 其中: . 请注意,矩阵A的列数应该与矩阵B的行数相等,这样才存在矩阵的乘积。有很多种方式可以帮助我们理解矩阵乘法,这里我们将通过一些例子开始学习。 2.1 向量的乘积 给定两个向量x,y ∈ R n ,那么x T y的值,我们称之为向量的 内积 或 点积。它 是一个由下式得到的实数: . 可以发现,内积实际上是矩阵乘法的一个特例。通常情况下x T y = y T x。 对于向量x ∈ R m , y ∈ R n (大小不必相同),xy T ∈ R m×n 称为向量的 外积 。外积是一个矩阵,其中中的每个元素,都可以由 得到,也就是说, . 我们举个例子说明外积有什么用。令 1 ∈ R n 表示所有元素都是1的n维向量,然后将矩阵 A ∈ R m × n 的每一列都用列向量 x ∈ R m 表示。使用外积,我们可以将A简洁的表示为: . 2.2 矩阵 - 向量的乘积 对于一个矩阵 A ∈ R m × n 和向量 x ∈ R n ,他们的乘积为向量 y = Ax ∈ R m 。理解矩阵向量乘法的方式有很多种,我们一起来逐一看看。 以行的形式书写A,我们可以将其表示为Ax的形式: . 也就是说, y 第 i 行的元素等于A的第 i 行与x的内积 . 咱们换个角度,以列的形式表示A,我们可以看到: . 换言之,

机器学习需要的数学总结

落花浮王杯 提交于 2020-01-05 22:10:59
数学知识 数学知识总括 微积分(高等数学) 线性代数 概率论与数理统计 凸优化 微积分 微积分学,数学中的基础分支。内容主要包括函数、极限、微分学、积分学及其应用。函数是微积分研究的基本对象,极限是微积分的基本概念,微分和积分是特定过程特定形式的极限 微积分/高等数学。在机器学习中,微积分主要用到了微分部分,作用是求函数的极值,就是很多机器学习库中的求解器(solver)所实现的功能。在机器学习里会用到微积分中的以下知识点: 导数和偏导数的定义与计算方法 梯度向量的定义 极值定理,可导函数在极值点处导数或梯度必须为0 雅克比矩阵,这是向量到向量映射函数的偏导数构成的矩阵,在求导推导中会用到 Hessian矩阵,这是2阶导数对多元函数的推广,与函数的极值有密切的联系 凸函数的定义与判断方法 泰勒展开公式 拉格朗日乘数法,用于求解带等式约束的极值问题 其中最核心的是记住多元函数的泰勒展开公式,根据它我们可以推导出机器学习中常用的梯度下降法,牛顿法,拟牛顿法等一系列最优化方法: 线性代数 线性代数的理论是计算技术的基础,同系统工程,优化理论及稳定性理论等有着密切联系,随着计算技术的发展和计算机的普及,线性代数作为理工科的一门基础课程日益受到重视。线性代数这门课程的特点是概念比较抽象,概念之间联系很密切。内容包括行列式,矩阵,向量空间,线性方程组,矩阵的相似对角化,二次型

线性代数

放肆的年华 提交于 2020-01-05 22:07:51
线性相关和生成子空间   如果逆矩阵 A -1 存在,那么式子 A x = b 肯定对于每一个向量 b 恰好存在一个解。但是,对于方程组而言,对于向量 b 的某些值,有可能无解或者存在无限多解。存在多于一个解但是少于无限多个解的情况是不可能发生的;因为如果 x 和 y都是某方程组的解,则 z = αx + (1-α)y, (α取任意实数)也是该方程组的解。   形式上,一组向量的线性组合,是指每个向量乘以对应标量系数之后的和,即:∑ i x i v (i) ,一组向量的生成子空间(span)是原始向量线性组合后所能抵达的点的集合。 在线性代数里,矢量空间的一组元素中,若没有矢量可用有限个其他矢量的线性组合所表示,则称为 线性无关或线性独立 (linearly independent),反之称为 线性相关 (linearly dependent)。    例如在三维欧几里得空间R的三个矢量(1, 0, 0),(0, 1, 0)和(0, 0, 1)线性无关;但(2, 0, 1),(1, 0, 1)和(3, 1, 2)线性相关,因为第三个是前两个的和。   确定 A x = b 是否有解,相当于确定向量 b 是否在 A 列向量的生成子空间中。这个特殊的生成子空间被称为 A 的列空间 (column space)或者 A的值域(range)。 范数   范数(norm)函数可以衡量向量大小

shader_线性代数复习提纲

╄→гoц情女王★ 提交于 2020-01-05 22:06:42
MIT线代教程 http://open.163.com/movie/2010/11/7/3/M6V0BQC4M_M6V29E773.html 《转载》 《线性代数》复习提纲 第一部分:基本要求(计算方面) 四阶行列式的计算; N阶特殊行列式的计算(如有行和、列和相等); 矩阵的运算(包括加、减、数乘、乘法、转置、逆等的混合运算); 求矩阵的秩、逆(两种方法);解矩阵方程; 含参数的线性方程组解的情况的讨论; 齐次、非齐次线性方程组的求解(包括唯一、无穷多解); 讨论一个向量能否用和向量组线性表示; 讨论或证明向量组的相关性; 求向量组的极大无关组,并将多余向量用极大无关组线性表示; 将无关组正交化、单位化; 求方阵的特征值和特征向量; 讨论方阵能否对角化,如能,要能写出相似变换的矩阵及对角阵; 通过正交相似变换(正交矩阵)将对称矩阵对角化; 写出二次型的矩阵,并将二次型标准化,写出变换矩阵; 判定二次型或对称矩阵的正定性。 第二部分:基本知识 一、行列式 1.行列式的定义 用n^2个元素aij组成的记号称为n阶行列式。  (1)它表示所有可能的取自不同行不同列的n个元素乘积的代数和;  (2)展开式共有n!项,其中符号正负各半; 2.行列式的计算 一阶|α|=α行列式,二、三阶行列式有对角线法则; N阶(n>=3)行列式的计算:降阶法  定理:n阶行列式的值等于它的任意一行(列

[矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats

旧城冷巷雨未停 提交于 2020-01-04 00:42:03
矩阵快速幂习题 复习矩阵乘法及快速幂模板 乘法模板 快速幂模板 T1:Arc of Dream 题目 题解 code T2:Recursive sequence 题目 题解 code T3:233 Matrix 题目 题解 code T4:Training little cats 题目 题解 code 做题的时候后悔没有保存过模板,还到处去找自己曾经写过的模板,然并卵,还是重新写了一遍,其实如果知道原理,就不用背模板了 每次复习的时候打完就觉得自己记住了,然而 复习矩阵乘法及快速幂模板 具体怎么乘的,移步 百度百科 乘法模板 struct Matrix { int n , m ; LL c [ MAXN ] [ MAXN ] ; Matrix ( ) { memset ( c , 0 , sizeof ( c ) ) ; } Matrix operator * ( const Matrix & a ) const { Matrix res ; res . n = n ; res . m = a . m ; for ( int i = 1 ; i <= n ; i ++ ) for ( int j = 1 ; j <= a . m ; j ++ ) for ( int k = 1 ; k <= m ; k ++ ) res . c [ i ] [ j ] = ( res . c [

算法导论笔记(一):复杂度,分治,随机

落爺英雄遲暮 提交于 2020-01-04 00:10:49
示例与概念 插入排序 归并排序 最坏情况分析与平均情况分析 函数增长的渐进记号 (O(n)) 表示函数增长的上界。即,花费时间不会高于线性增长。 (Theta(n)) 同时表示上界和下界。即,花费时间一定是这个线性增长的。 (Omega(n)) 表示增长的下界。 (o(n)) 表示不渐进紧确的上界。如, (2n =O(n^2)) , (n^2=O(n^2)) , (2n=O(n^2)) ,但 (n^2neq o(n^2)) (omega(n)) 与 (o(n)) 类似,表示不紧确的下界。 此外,常用 (T(n)) 表示所需的实际时间的函数。 分析分治算法,以归并排序为例 归并排序最坏运行时间的递归式: [ T(n)=begin{cases}Theta(1)&text{若} n=1,\ 2T(n/2)+Theta(n)&text{若} n>1. end{cases} ] 除使用主定理外,还可以这样理解递归式的值:将递归过程看做一个二叉树。递归调用中的每一层的总代价均为 (cn) ,其中 (c) 为常数。而二叉树的层数应为 (log_2n+1) 。故,整个算法的代价期望为 (Theta(nlog_2n)) 。 分治法 分治法求最大和的子数组 分解。将数组划分为两个子数组。此时,只存在三种子数组: 全部位于中点左侧的子数组 全部位于中点右侧的子数组 跨越中点的子数组 解决

python---numpy

假如想象 提交于 2020-01-03 02:26:57
一 概述   NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 他也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。 NumPy是 高性能科学计算和数据分析 的基础包。部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成C、C++、Fortran等语言编写的代码的工具。 二 创建矩阵   NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。 ndarray 中的每个元素在内存中使用相同大小的块。 ndarray 中的每个元素是数据类型对象的对象(称为 dtype )。从 ndarray 对象提取的任何元素(通过切片)由一个数组标量类型的 Python

numpy 常用方法2

[亡魂溺海] 提交于 2020-01-03 02:26:42
Python之Numpy基础 一个栗子 >>> import numpy as np >>> a = np.arange(15).reshape(3, 5) >>> a array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) >>> a.shape (3, 5) >>> a.ndim # 数组轴的个数,在python的世界中,轴的个数被称作秩 2 >>> a.dtype.name 'int64' >>> a.itemsize # 数组中每个元素的字节大小。 8 >>> a.size 15 >>> type(a) <type 'numpy.ndarray'> >>> b = np.array([6, 7, 8]) >>> b array([6, 7, 8]) >>> type(b) <type 'numpy.ndarray'> 创建矩阵 对于Python中的numpy模块,一般用其提供的ndarray对象。 创建一个ndarray对象很简单,只要将一个list作为参数即可。 例如: >>> import numpy as np #创建一维的narray对象 >>> a = np.array([2,3,4]) >>> a array([2, 3, 4]) >>> a.dtype dtype('int64') #

numpy库常用基本操作

此生再无相见时 提交于 2020-01-03 02:26:23
NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组。所以这个一维数组就是NumPy中的轴(axes),而轴的数量——秩,就是数组的维数。 1、创建矩阵 Numpy库中的矩阵模块为ndarray对象,有很多属性:T,data, dtype,flags,flat,imag,real,size, itemsize,nbytes,ndim,shape,strides,ctypes,base等等。 1.1采用ndarray对象 import numpy as np #引入numpy库 #创建一维的narray对象 a = np.array([1,2,3,4,5]) #创建二维的narray对象 a2 = np.array([[1,2,3,4,5],[6,7,8,9,10]]) #创建多维对象以其类推 1.2通过函数创建矩阵 1.2.1 arange 1 import numpy as np 2 3 a = np.arange(10) # 默认从0开始到10(不包括10),步长为1 4 print(a) # 返回 [0 1 2 3 4 5 6 7 8 9] 5 6 a1 = np.arange(5,10

#100. 矩阵乘法

天涯浪子 提交于 2020-01-03 01:57:36
题面 代码 没什么好多讲的, \(OI\) 中基本记住定义就行了,矩阵一般也是正方形。 图片摘自百度: 矩阵快速幂(类比数的快速幂)可以优化一些递推的问题: \(0.\) 特判最小的几项? \(1.\) 确定矩阵的大小,转移中用到了什么东西,尽可能小一些,优化常数。然后用矩阵表示出初始状态或直接是单位矩阵。 \(2.\) 构造转移矩阵,大小相同,使得两个矩阵相乘后能转移到后一个状态且不影响相对性。 \(O(npm)\) 来源: https://www.cnblogs.com/May-2nd/p/11681150.html