矩阵外积与内积

一个行向量乘以一个列向量称作向量的内积,又叫作点积,结果是一个数;

一个列向量乘以一个行向量称作向量的外积,外积是一种特殊的克罗内克积,结果是一个矩阵,

假设和b分别是一个行向量和一个列向量,那么内积、外积分别记作,为了讨论方便,假设每个向量的长度为2。

注意:外积在不同的地方定义方式不太一样,这里不详细讨论

定义了内积和外积以后,我们讨论矩阵的乘法。矩阵是由向量组成的,因此对矩阵不同角度的抽象,将矩阵乘法转换为向量乘法,可以使我们从不同的角度去理解矩阵的乘法。首先我们可以对于一个矩阵A(假设行和列的大小都是2),我们可以即可以把它看作由两个行向量组成的列向量,

,又可以看作是由两个列向量组成的行量,我们表示列向量,表示行向量

 

这样矩阵A和矩阵B的乘积按照不同的角度就可以组成四种理解方式。

一、 A是由行向量组成的列向量,B是由列向量组成的行向量

                              

此时AB乘积变为了两个新的向量的外积形式,按照外积定义,我们有

注意到这里面每一个都是一个向量,因此就是一个内积,计算结果就是AB矩阵第i行第j列中的元素。因此,我们可以看到,矩阵乘积是两个向量的外积,并且外积矩阵中的每一个元素是一个内积。这种方式是最直接的理解方式。

二、 A是由列向量组成的行向量,B也是由列向量组成的行向量

令C = AB, 我们考虑C的每一个列向量:

同理:

因此,矩阵C的每一个列向量,是A的列向量的一个线性组合,该线性组合中的系数是的各个元素。从这个角度说C的每一列都存在于A的列向量空间内。

三、 A是由行向量组成的列向量,B也是由行向量组成的列向量


类似于上面的情况,不过我们现在考虑C的每一个行向量:


同理:


因此,矩阵C的每一个行向量,是B的行向量的一个线性组合,该线性组合中的系数是的各个元素。从这个角度说C的每一个行向量都存在于B的行向量空间内。

四、 A是由列向量组成的行向量,B也是由行向量组成的列向量


此时AB乘积变为了两个新的向量的内积形式。按照内积定义我们有:


注意到是一个外积形式,因为是一个列向量,是一个行向量,因此C是由各个外积矩阵相加得到的。

 

根据以上分析,我们可以将第一种和第四种方式放到一起,第二种和第三种放到一起分别进行理解。第一种方式先将A抽象为列向量,将B抽象为行向量,从而将矩阵乘法变为了一种外积的形式,而外积矩阵中的每一个元素是一个行向量和一个列向量的内积。这种方式每次得到C的一个元素

第四种理解方式先将A抽象为行向量,将B抽象为列向量,从而将矩阵乘法变为了一种内积形式,内积的各个组成部分又是一个外积。这种方式每次不是得到C的一个元素,而是将C看作是多个矩阵相加组成的,每次计算得到一个加数矩阵。

第二种方式将矩阵A、B都抽象为行向量,行向量的每个组成是一个列向量,A乘以B的每一个列向量得到一个新的列向量,并且该列向量存在于A的列向量空间内,A乘以B相当于是对A进行了列变换。第三种方式则将A乘以B看作是对B进行了行变换。

如果想对一个矩阵进行行变换,可以左乘一个矩阵;相应的如果想对矩阵进行列变换,可以右乘一个矩阵。这种思想被应用到高斯消元的过程中。

 

最后我们总结一下矩阵C(C=AB)到底是什么,C是一个矩阵,是一个多面孔的矩阵。它既是列向量组成的行向量,每个列向量是A的列空间的线性组合,又是行向量组成的列向量,每个行向量是B的行空间的线性组合;它是一个内积,内积的每个成分是一个外积,同时它又是一个外积,外积矩阵的每一个元素是一个内积。

向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组;


向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量


点乘公式


对于向量a和向量b:


                                                           


a和b的点积公式为:



要求一维向量a和向量b的行列数相同。


点乘几何意义


点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,有公式:




推导过程如下,首先看一下向量组成:





定义向量:




根据三角形余弦定理有:




根据关系c=a-b(a、b、c均为向量)有:




即:



向量a,b的长度都是可以计算的已知量,从而有a和b间的夹角θ:




根据这个公式就可以计算向量a和向量b之间的夹角。从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为:


     a·b>0    方向基本相同,夹角在0°到90°之间

     a·b=0    正交,相互垂直  

     a·b<0    方向基本相反,夹角在90°到180°之间 


叉乘公式


两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。


对于向量a和向量b:




a和b的叉乘公式为:




其中:




根据i、j、k间关系,有:




叉乘几何意义


在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。


在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。如下图所示: 



在二维空间中,叉乘还有另外一个几何意义就是:aXb等于由向量a和向量b构成的平行四边形的面积。




### 矩阵内积的定义计算方法 矩阵内积通常指的是两个相同大小的矩阵对应位置元素相乘后再求和的操作。这种操作也被称为 **Frobenius 内积**,其形式化表达为: \[ A \cdot B = \sum_{i=1}^{m}\sum_{j=1}^{n} A[i,j] \times B[i,j] \] 其中 \(A\) 和 \(B\) 是形状相同的矩阵 (即均为 \(m \times n\))。 #### Python 实现矩阵内积 以下是基于 NumPy 的一种实现方式,能够高效完成矩阵内积运算: ```python import numpy as np def frobenius_inner_product(matrix_a, matrix_b): """ 计算两个矩阵的 Frobenius 内积 参数: matrix_a: 第一个输入矩阵 (NumPy 数组) matrix_b: 第二个输入矩阵 (NumPy 数组) 返回: float 类型的结果代表两者的 Frobenius 内积值 """ if matrix_a.shape != matrix_b.shape: raise ValueError("矩阵尺寸不匹配,无法进行内积运算") result = np.sum(matrix_a * matrix_b) # 对应元素相乘后求和 return result # 测试代码 matrix_a = np.array([[1, 2], [3, 4]]) matrix_b = np.array([[5, 6], [7, 8]]) inner_product_result = frobenius_inner_product(matrix_a, matrix_b) print(f"Frobenius 内积结果: {inner_product_result}") ``` 上述代码通过 `np.sum` 函数实现了逐元素相乘后的总和计算[^4]。这种方法适用于任意大小一致的二维数组,并且具有较高的数值稳定性。 另外需要注意的是,在处理大规模数据集时,内存消耗可能成为瓶颈之一。因此对于超大型稀疏矩阵场景下,则需考虑采用专门优化过的库或者算法来降低资源占用率[^2]。 ### 关于矩阵分解中的应用实例 在推荐系统等领域中经常需要用到低秩近似技术来进行预测评分等工作流程当中涉及到大量关于用户偏好建模方面的工作内容。此时会运用到 SVD(Singular Value Decomposition 单值分解)等相关理论知识去构建模型参数估计过程当中的核心部分—也就是寻找合适的 P,Q 权重向量组合使得最终重建出来的目标函数误差最小化从而达到较好的拟合效果[^3].
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值