开发者学堂课程【大数据学习-数学基础及应用:向量、矩阵应用介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/354/detail/4178
向量、矩阵应用介绍
内容介绍:
一、向量在游戏引擎中的应用
二、矩阵奇异值分解及其应用
一、向量在游戏引擎中的应用:
1.背景:游戏引擎中的 VR 和 AR 的应用非常广泛,负责一些三维图层的生成以及渲染以及一些物理逻辑的应用。所以就举一个向量在游戏引擎中的例子。
2.点乘:向量的点承在游戏引擎中用来判断敌人的位置
例:确定了玩家位置以及敌人位置,对于一个相同的坐标原点来说,都是向量。
敌人位置E;玩家位置P;V=E-P
F:指向玩家面对的方向的向量
D=V*F 为正数敌人在玩家的身前,为负数则敌人在玩家身后
原理:a*b 点乘就是 a 的模 ×b 的模夹角的余弦,如果夹角大于90度则为小于0,敌人在玩家身后;如果夹角小于90度则大于0,敌人在玩家身前。
3.叉乘:(右手法则从 a 向量的位置叉乘到 b 向量的位置,最终结果向量的方向是大拇指的方向)力矩物理模拟原理。所以在物理模拟中叉乘是可以模拟力矩物理现象。
当一个力施加到一个对象上时,它将使对象产生旋转运动(如果力并非施加在对象的重心)。这个旋转力被称作力矩。
计算方式:给定力 F,以及从重心到受力点的向量 r,力矩 N=rxF。
4.碰撞检测:
把小球的位置看成一个向量,这个向量的长度(模)大于或等于圆的半径r时,即判断发生了碰撞。大圆是小球活动范围,也可以堪称圆型墙壁。碰撞后在现实生活中还会反弹,反弹方向如何定义,可以看图中 v 项量与 y 轴有 a 夹角,在一种非常理想的碰撞条件下,只要把速度向量取反,得到 vo,再求出I与 vo 之间的夹角 a,再让 v0 旋转2*a 的角度,得到 v1,因为是理想的碰撞情况我们认为 a 和 b 相等。所以 v1 就是小球碰撞后弹出去的方向,以上是向量在碰撞检测中的应用。
二、矩阵奇异值分解及其应用
1.奇异值分解(Singular Value Decomposition)
一种矩阵分解形式,与 lu 分解以及特征值分解是并列的矩阵分解形式。它将一个矩阵分解为三个子矩阵,分别代表了左奇异向量,奇异值矩阵以及右奇异向量。
A=U∑VT
A是一个 M*N 的矩阵,那么得到的 U 是一个 M*M 的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),∑是一个 M*N 的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),VT 是一个 N*N 的矩阵,里面的向量也是正交的,V 里面的向量称为右奇异向量)
2.潜在语义索引(Latent Semantic Indexing,LSI)
将语义相关内容融合到搜索引擎中,用来提高搜索引擎的效率
行:表示一个词在哪些 title 中出现了
列:表示一个 title 中有哪些词
title 表示文章的主题/标题
例:book 这个词在 T3和 T4文章中出现一次
经过矩阵的奇异值分解之后,大的矩阵被分解成三个矩阵,左侧的左奇异矩阵,中间的奇异值矩阵和右侧的右奇异矩阵,奇异值矩阵是3*3维度的矩阵,通过 svd 的分解,认为他的潜在语义包含三类语义,这些文章以及单词总共的类别都在这三个大类别中,中间的矩阵表示的是词类、文章类的相关性,相关性数值越大表示相关性越强。
从下图可以看出左奇异矩阵和右奇异矩阵都有三个维度
如下图,将左奇异向量和右奇异向量都取后2维,投影到一个平面上,可以同时对词和文档(title)进行聚类。红色的类别包括 T1和 T3,词包括 stock 和 market,可以认为在这个类别中,不管是文章还是关键词表示的是证券、金融、市场方面的内容,用户检索文档,是用语义级别(近义词集合)去检索,而不是之前的词的级别,大大提升检索效率,这也是潜在语义索引最大的好处在。