空间向量

线性代数的直观理解 -- Intuition in Linear Algebra

北慕城南 提交于 2019-11-29 10:47:56
受《理解线性代数》启发,结合自身学习的经验,直观的总结我对线性代数的理解。强调直观是因为在这里不纠缠于数学的严谨性,所以如果追求数学严谨性和证明的还是去看教材比较好。 统计的目标是对数表内各种数据进行挖掘从而找出隐含其中的关系,线性代数为统计提供了对数表的表达方式和对数表进行处理的工具。 在初等数学中我们学过函数,用来表示的数据之间一种确定的关系,给定x一定能算出唯一的y。但现实中我们遇到的数据可就没有那么明确的联系了,我们不知道谁和谁有联系,甚至不知道是不是存在联系。因此我们急需一种框架来帮助我们处理这些”不好看”的数据。统计就是为了处理数据而生的,它的目标即挖掘出数据之间的联系,从而抽象出数学模型来做解释或预测。 先来扯句题外话,我们知道数学的本质是抽象。那究竟什么是抽象?抽象就是从不同个体中找相同,这些相同也就是规律和关系。初等数学中学到的函数关系就是一种规律,无论x到底是什么值,它和y之间都存在这样的规律。这也是为什么说数学模型都是错的,但却是有用的原因。抽象忽略了个体差异,只留相同点,利用相同点我们能处理满足此相同点的任何差异个体。 言归正传。回忆下中学解析几何或者大学微积分时我们是如何处理数据的: 我们会把函数f(x)映射到欧几里得空间内笛卡尔坐标系做visualization。在代数上对函数的操作等价于对欧几里得空间中相应函数图像做操作。函数是确定的关系

线性代数之——图和网络

◇◆丶佛笑我妖孽 提交于 2019-11-28 09:52:38
1. 图 一个图由一系列节点以及连接它们的边组成, 关联矩阵 (incidence matrix)则告诉我们 \(n\) 个顶点是怎么被 \(m\) 条边连接的。关联矩阵中的每个元素都是 0,1 或者 -1,在消元过程中这也依然成立,所有的主元和乘数都是 \(\pm1\) 。因此分解 \(A=LU\) 也只包含 0,1 或者 -1,零空间矩阵亦是如此。四个基本子空间的基向量都只包含这些特别简单的元素。 我们来看第一个关联矩阵。注意到每一行都有一个 -1 和 1,这个矩阵在求一个图中六条边上的电压差。 零空间是一条穿过 \(\boldsymbol x=(1,1,1,1)\) 的直线,列空间的维度为 3,主行是行空间的一个基。每个零空间中的向量垂直于行空间中的任意向量。 上面展示了一个有 6 条边 4 个顶点的图,所以矩阵是 6×4 大小的,元素 -1 和 1 告诉我们每个箭头的方向,从节点流出为负,流入节点为正,这是一个有向图。比如,第一行告诉我们有一条边从节点 1 指向节点 2。矩阵的行数为边的数目,列数为顶点的数目。看到一个图后,你就可以直接写出对应的关联矩阵。 第一个图是完全的——每一对节点都有边连接,第二个图是一个树——图中没有回路。它们分别是两个极端,最大的边数为 \(\frac{1}{2}n(n-1)\) ,最小的边数为 \(n-1\) 。 可以看到,B

vector

陌路散爱 提交于 2019-11-28 09:47:04
根据逻辑次序的复杂程度,大致可以将各种数据结构划分为 线性结构 、 半线性结构 与 非线性结构 三大类。 在线性结构中,各数据项按照一个线性次序构成一个整体。最为基本的线性结构统称为序列(sequence),根据其中数据项的 逻辑次序与其物理存储地址的对应关系 不同,又可进一步地将序列区分为 向量 ( vector )和 列表 ( list )。在向量中,所有数据项的物理存放位置与其逻辑次序完全吻合,此时的逻辑次序也称作 秩 ( rank );而在列表中,逻辑上相邻的数据项在物理上未必相邻,而是采用间接定址的方式通过封装后的位置( position )相互引用。 向量结构的高效实现,包括其作为抽象数据类型的接口规范以及对应的算法,尤其是 高效维护动态向量 的技巧。 还将针对 有序向量 ,系统介绍经典的查找与排序算法,并就其性能做一分析对比,这也是本章的重点与难点所在。 引入 复杂度下界 的概念,并通过建立比较 树模型 ,针对基于比较式算法给出复杂度下界的统一界定方法。 一、数组:     若集合S由n个元素组成,且各元素之间具有一个 线性次序 ,则可将它们存放于起始于地址A、 物理位置连续 的一段存储空间,并统称作数组(array),通常以A作为该数组的标识。 对于任何0 < i < j < n,A[i]都是A[j]的 前驱 (predecessor),A[j]都是A[i]的 后继

线性代数之——对角化和伪逆

我的未来我决定 提交于 2019-11-28 09:14:42
这部分我们通过选择更好的基底来产生更好的矩阵。当我们的目标是对角化矩阵时,一个选择可以是一组特征向量基底,另外一个选择可以是两组基底,输入基底和输出基底是不一样的。这些左右奇异向量是矩阵四个基本子空间中标准正交的基向量,它们来自于 SVD。 事实上,所有对 \(A\) 的分解都可以看作是一个基的改变。在这里,我们只关注两个突出的例子,有一组基的 \(\Lambda\) 和有两组基的 \(\Sigma\) 。 \(S^{-1} AS=\Lambda\) 如果输入和输出基都是 \(A\) 的特征值。 \(U^{-1} AV=\Sigma\) 如果这些基分别是 \(A^TA\) 和 \(AA^T\) 的特征值。 只有当 \(A\) 是方阵并且有 \(n\) 个不相关的特征向量时,我们才能将其对角化成 \(\Lambda\) 。而通过 SVD,任意矩阵都可以对角化成 \(\Sigma\) 。如果一个矩阵是对称的、反对称的或者正交的,那么有 \(A^TA=AA^T\) ,在这种情况下,奇异值是特征值的绝对值,上面的两个对角化形式除了一个 \(-1\) 或者 \(e^{i\theta}\) 的因子外是相同的。 另外,注意 Gram-Schmidt 分解 \(A=QR\) 只选择了一个新的基底,也就是通过 \(Q\) 给出的输出正交基,而输入基底则是标准基由 \(I\) 给出

线性代数之——线性相关性、基和维数

拈花ヽ惹草 提交于 2019-11-28 04:28:04
1. 线性相关性 矩阵 \(A\) 的列是 线性不相关的 当且仅当 \(Ax=\boldsymbol0\) 的唯一解是 \(x=\boldsymbol0\) 。没有其它的线性组合能给出零向量。 在三维空间中,如果三个向量 \(v_1, v_2, v_3\) 不在同一个平面中,那它们就是不相关的,只有 \(0v_1+0v_2+0v_3\) 能给出零向量。如果三个向量 \(v_1, v_2, v_3\) 位于同一个平面中,那它们就是相关的。 一系列向量 \(v_1, v_2\cdots v_n\) 是 线性不相关的 当且仅当给出零向量的唯一线性组合是 \(0v_1+0v_2\cdots +0v_n\) 。 如果一个线性组合给出零向量,但不是所有的系数都为零,那么它们就是相关的。 矩阵 \(A\) 的列是 线性不相关的 当且仅当其秩 \(r=n\) 。这时候有 \(n\) 个主元没有自由变量,零空间中只有一个零向量。 假设在一个矩阵有 5 列,每一列都属于 \(R^3\) ,那它们肯定是线性相关的。因为矩阵最多有 3 个主元,那就意味着至少有 5-3=2 个自由变量。 如果 \(n>m\) ,那么在 \(R^m\) 中的 \(n\) 个向量一定是线性相关的。 一系列向量可以扩充出(span)一个空间如果它们的线性组合填满了这个空间。列空间就是所有的列扩充出的子空间。

OpenGL光照1:颜色和基础光照

这一生的挚爱 提交于 2019-11-27 10:57:19
本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 的内容为插入注释,可以先跳过 前言 我们简要提到过该如何在OpenGL中使用颜色(Color),但是我们至今所接触到的都是很浅层的知识,现在我们要更深入地讨论什么是颜色,并且还会为学习光照(Lighting)创建一个场景 颜色 首先你要知道我们一直在使用有限的数值来模拟真实世界中无限的颜色,所以并不是所有现实世界中的颜色都可以用数值来表示的,然而我们仍能通过数值来表现出非常多的颜色,甚至你可能都不会注意到与现实的颜色有任何的差异 颜色可以数字化的由红色(Red)、绿色(Green)和蓝色(Blue)三个分量组成,它们通常被缩写为RGB,仅仅用这三个值就可以组合出任意一种颜色 例如,要获取一个 橙色(Coral) 色的话,我们可以定义这样的一个颜色向量: glm::vec3 coral(1.0f, 0.5f, 0.31f); 我们在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色,换句话说,那些不能被物体所吸收(Absorb)的颜色(被拒绝的颜色)就是我们能够感知到的物体的颜色 太阳光能被看见的白光其实是由许多不同的颜色组合而成的,看下图

06-列空间和零空间

流过昼夜 提交于 2019-11-27 10:27:19
一、向量空间   线性代数是研究向量和矩阵的一门数学,矩阵也是向量构成的,所以线性代数主要是研究向量,向量空间以及向量线性组合性质的一门科学。  我们知道向量有几种基本的运算,向量加法,就是向量里的每一个分量对应相加,向量与一个标量相乘,就是向量里的每一个分量与该标量相乘,即: $\mathbf{u}+\mathbf{v}=\left(u_{1}+v_{1}, u_{2}+v_{2}, \dots u_{n}+v_{n}\right)$ $k \mathbf{u}=\left(k u_{1}, k u_{2}, \ldots, k u_{n}\right)$  我们先说一下什么是空间,这样一个空间有些什么最基本的特点。以三维空间为例: 1: 由很多(实际上是无穷多个)位置点组成 2: 这些点之间存在相对的关系 3: 可以在空间中定义长度、角度 4: 这个空间可以容纳运动,这里我们所说的运动是从一个点到另一个点的移动(变换),而不是微积分意义上的“连续”性的运动   其中第四条: 容纳运动是空间的本质特征。   如果把向量看成是空间中的一个个点,那么向量的变换就是这个点在空间中的运动。所以说,向量空间也是一个集合,这个集合对向量的加法和数乘是封闭的  也就是说, 只要向量在这个空间内,那么向量按照加法和数乘的方式运动,就会一直在这个空间里 。所以

Fisher Vector费舍尔向量and FIsher Kernel费舍尔核

喜夏-厌秋 提交于 2019-11-27 08:10:52
之前想了解Fisher Vector(以下简称FV)和 Fisher Kernel(以下简称FK) ,花了很长时间查论文看博客,总算明白了点皮毛,为了以后自己能够记得起来,决定用自己能懂的话码出来。 1、FV的优点 FV和 广泛应用于图像分类、行为识别领域。为什么会广泛应用?肯定是因为FV有别的算法不具备的优点。什么有点呢?下面教科书一般的说明如下: 模式识别方法可以分为生成式方法和判别式方法。生成式注重对类条件概率密度函数的建模,主要反映同类数据之间的相似度,如GMM ;判别式聚焦于直接分类,反映异类数据之间的差异,如SVM 。 二者的优势:1,生成式方法可以处理长度不一的输入数据,2,判别式方法不能处理长度不一的数据但是分类效果较好。 而FV则主要结合两者优势,将生成式模型用于判别式分类器中,这就是FV的优势,那么FV如何拥有这样的优势呢?分析如下: 2、FV的推导 算法的推导过程都很繁复,但是FV的推导真心不算难,仔细学习下,一两天内可以看的很明白,不过知其然未必知其所以然,至于FV是这样推导的没错,但为什么这么推导,现在为止我也没有清晰的认识,反正就是先学着吧。 【样本的处理】 FV本质上是用似然函数的梯度向量来表达一幅图像。这个梯度向量的物理意义就是数据拟合中对参数调优的过程。似然函数是哪里来的呢? (似然函数: 一种关于统计模型参数的函数。给定输出x时

pytorch笔记

南楼画角 提交于 2019-11-27 05:02:38
Tensor tensor.size()返回torch.Size对象,它是tuple的子类,但其使用方式与tuple略有区别。 tensor.shape等价于tensor.size() 需要注意 的是,t.Tensor(*sizes)创建时,系统不会马上分配空间,只会计算剩余的内存是否足够使用,使用到tensor时才会分配,而其他操作都是在创建完tensor后马上进行空间分配。 tensor.view:可以调整tensor的形状,但必须保证总数一致。不会修改自身的数据,共享内存,即更改其中一个,另外一个也会跟着改变。 squeeze和unsqueeze:添加或减少某一维度。 resize:也可用来调整size,但可修改尺寸,如b.resize_(1, 3) CPU tensor与GPU tensor之间的互相转换通过tensor.cuda和tensor.cpu的方法实现。 pytorch的线性函数主要封装了Blas和Lapack,其用法和接口都与之类似。 当遇到Tensor不支持的操作时,可先转成Numpy数组,处理后再转回tensor,其转换开销很小。 tensor分为头信息区(Tensor)和存储区(Storage) 在科学计算中应当避免使用Python原生的for循环,尽量使用向量化的数值计算,有近10倍的速度差。 因此在平时写代码时,就应养成向量化的思维习惯。

Unity基础之:UnityAPI的学习

自闭症网瘾萝莉.ら 提交于 2019-11-26 12:11:25
版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址: http://www.cnblogs.com/raymondking123/ )以及微信公众号"优梦创客" 您可以自由转载,但必须加入完整的版权声明! Quaternion 表示旋转 矩阵 //9个浮点数,数据占用量大,且除了表示旋转外,还表示缩放((0,0),(1,1),(2,2)点表示x,y,z的三个缩放) //显卡使用 欧拉角 rotation,绕x,y,z轴的旋转量 //给定朝向的表示不惟一,通过限定yaw,roll在+-180度,pitch在+-90度可以解决该问题 (pitch,绕右向量旋转,点头;yaw,绕上向量旋转,摇头;roll,绕前方向,转头;常用于飞行模拟) //万向锁 如:一个平行于x轴的向量绕y轴旋转-90度,会平行于z轴,此时所有绕z轴的旋转都不再起作用 轴角对 //用旋转轴,旋转角度的对偶表示旋转 //旋转角无唯一 单位四元数:[1,0] 1是标量,0是零向量 四元数的模,4个数的平方和开根 identity :单位四元数 eulerAngles //返回四元数对应的欧拉角,是一个属性 W,x,y,z w表示转化后的旋转值,x,y,z表示转化后的旋转轴 LookRotation //给定一个方向向量,返回表示该方向旋转的四元数 public static Quaternion