老师教的差不多全还回去了。
向量
向量点积
点积(Dot product)也叫标量积(Scalar product)。在Euclidean空间也称内积(Inner product)。对应元素相乘后相加,结果是一个标量,也就是一个数。
对于向量
在二维和三维空间,的几何意义是在方向上的投影,即:
Python中可以使用np.dot(a,b)实现两个向量点积的计算。
向量叉积
叉积(Cross product)又称矢量积(Vector product)或外积(Outer product),结果是一个向量。
对向量 两者叉积为 和的法向量,也就是 和构成的平面的法向量。
注意上面是行列式计算, 分别是方向上的单位向量。
最终向量的模:
当向量 和共起点时,模为两个向量构成平行四边形的面积。
Python中可以使用np.cross(a,b)实现两个向量点积的计算。
矩阵
矩阵点乘
假设矩阵为阶,矩阵为阶,左矩阵的列数必须和右矩阵的行数相等。结果是一个的矩阵。记为。
两个矩阵的点乘结果,即两个矩阵相乘的结果。
Python提供了np.inner(A,B) 函数实现两个矩阵点乘的计算。
点积和点乘是两个不同的数学概念,点积用于两个向量间的计算,点乘是两个矩阵间的运算。
矩阵叉积
矩阵似乎并没有叉积这个概念,但是Python和Matlab中都有对矩阵叉积的函数:np.cross 和cross 。
对于两个矩阵 和的叉积运算,使用的是向量叉积的计算方法,返回的矩阵的是 和的列之间的独立叉积。
比如等于 与的叉积。
哈达玛积
哈达玛积(Hadamard product )也叫元素积(Element-wise product, Point-wise product)或逐项积,要求两个矩阵维度一致。对应元素逐项相乘,结果仍然是一个矩阵。记为,注意和上述矩阵乘法的运算符区分开。
对于两个矩阵 和:
哈达玛积计算为:
Python中使用np.multiply或者*运算符实现哈达玛积。
弗罗比尼乌斯内积
弗罗比尼乌斯内积(Frobenius Inner Product),也要求两个矩阵维度一致,结果是一个标量,可以看作是矩阵上的“点积”(相比向量的点积)。记为。弗罗比尼乌斯内积计算为:
克罗内克积
克罗内克积(Kronecker product)用于两个任意大小的矩阵,是一种将两个矩阵组合成一个新的更大矩阵的运算。记为。
对于两个矩阵 和,克罗内克积计算为:
若矩阵 和分别为:
则克罗内克积为:
Python中使用np.kron 实现。
参考文章
[1] 矩阵乘法 - 维基百科,自由的百科全书
[2] 带你一次搞懂点积(内积)、叉积(外积)-CSDN博客
评论