张量与向量的点积是否具交换性?指标记法及运算选择疑问
矩阵-向量乘法的交换性问题:A.n vs n.A
首先得澄清一个关键误解:你提到的 A.n 和 n.A 并不是传统意义上的向量点积(点积是两个同维度向量之间的运算,结果是标量),而是二阶张量(矩阵)与向量的缩并/乘法运算——这两者本质是完全不同的操作,自然不满足交换性。
咱们用指标记法再拆解得更清楚些:
A.n = A_i,j * n_j:这里遵循爱因斯坦求和约定,对重复的j指标求和,最终得到的是一个以i为自由指标的向量。简单说,这是把矩阵A的列向量,用n的分量作为系数做线性组合,结果是和A行数一致的列向量。n.A = n_i * A_i,j:同样是求和,但这次是对i指标求和,得到的是以j为自由指标的向量。这相当于把n当作行向量,去线性组合矩阵A的行向量,结果是和A列数一致的行向量。
举个具体的数值例子就一目了然了:假设A是2×2矩阵:
A = [[1, 2], [3, 4]]
向量n = [5, 6]^T(列向量):
A.n的结果是[1*5 + 2*6, 3*5 + 4*6] = [17, 39](列向量)- 若把
n当作行向量[5,6],n.A的结果是[5*1 + 6*3, 5*2 + 6*4] = [23, 34](行向量)
显然两者结果完全不同。
那该怎么选择用A.n还是n.A?核心看你要实现的运算逻辑:
- 如果是想让矩阵
A对列向量n做线性变换(比如求解线性方程组Ax=b、空间坐标变换这类场景),或者用n的分量组合A的列向量,就用A.n(矩阵右乘列向量)——这也是线性代数应用里最常见的情况。 - 如果需要用
n的分量去组合A的行向量,或者把n作为行向量参与运算(比如计算加权的行向量统计值),就用n.A(行向量左乘矩阵)。
另外还要注意维度匹配:矩阵乘法要求前一个 operand 的列数等于后一个的行数,所以m×n的矩阵A只能右乘n维列向量,左乘m维行向量——维度不匹配的话运算根本无法进行,这也从侧面印证了两者是完全独立的操作。
内容的提问来源于stack exchange,提问作者Anand Bharadwaj
相关产品推荐
相关产品推荐

