长春网站建设电话,银行门户网站建设,网站空间为什么都比数据库大,网站排名快速提升刚接触线性代数时#xff0c;很不理解矩阵乘法的计算规则#xff0c;为什么规则定义的看起来那么有规律却又莫名其妙#xff0c;现在参考了一些资料#xff0c;回过头重新总结下个人对矩阵乘法的理解#xff08;严格来说是点乘#xff09;。 理解矩阵和矩阵的乘法#x… 刚接触线性代数时很不理解矩阵乘法的计算规则为什么规则定义的看起来那么有规律却又莫名其妙现在参考了一些资料回过头重新总结下个人对矩阵乘法的理解严格来说是点乘。 理解矩阵和矩阵的乘法可以先理解矩阵和向量的乘法因为矩阵可以看成是不同列向量的集合。
下面从基变换视角理解矩阵的乘法原理基变换视角是将矩阵的每个列向量看成是新基坐标系中的一个基坐标。
先考虑一个规则的 2x2 的矩阵和一个 2x1 的向量之间的乘法例如 [ 1 − 2 1 2 ] [ 1 1 ] [ − 1 3 ] \begin{bmatrix} 1-2 \\ 12 \end{bmatrix} \begin{bmatrix} 1\\ 1 \end{bmatrix} \begin{bmatrix} -1\\ 3 \end{bmatrix} [11−22][11][−13] 后面为了方便描述分别用A表示矩阵a表示等号左边的向量(1, 1)b表示等号右边的向量(-1, 3)。
上面这个乘法过程可以理解为把矩阵A看成一个新的基坐标系(1, 1) 和 (-2, 2) 分别是新基坐标系中的x, y轴。b(1, 1)可以看成是这个新基坐标系视角下坐标表示的一个向量左边乘上一个矩阵A相当于求出在以矩阵A为新的基坐标系的视角下向量(1, 1)在标准的笛卡尔坐标系中的坐标表示。
可视化上面这个计算
import numpy as np
import matplotlib.pyplot as plt# 定义矩阵和向量
A np.array([[1, -2], [1, 2]])
b np.array([1, 1])# 计算变换后的向量
b_transformed A b# 定义标准基
origin np.array([[0, 0], [0, 0]])# 绘制
fig, ax plt.subplots()# 绘制原始向量
ax.quiver(*origin, b[0], b[1], anglesxy, scale_unitsxy, scale1, colorblue, labelOriginal Vector (1,1))# 绘制新基
ax.quiver(*origin, A[0, 0], A[1, 0], anglesxy, scale_unitsxy, scale1, colorred, labelNew x-axis (1,1))
ax.quiver(*origin, A[0, 1], A[1, 1], anglesxy, scale_unitsxy, scale1, colorgreen, labelNew y-axis (-2,2))# 绘制变换后的向量
ax.quiver(*origin, b_transformed[0], b_transformed[1], anglesxy, scale_unitsxy, scale1, colorpurple, labelTransformed Vector (-1,3))# 设置图形属性
ax.set_xlim(-3, 3)
ax.set_ylim(0, 3) # 只显示x轴的上半部分
ax.set_aspect(equal)
plt.grid()# 调整图例位置
plt.legend(locupper left, bbox_to_anchor(0.6, 1), fontsizesmall)
plt.title(Vector Transformation and Basis Visualization)
plt.xlabel(X)
plt.ylabel(Y)plt.show()红色和绿色的向量构成了一个新的坐标基底从这个基底的视角来看棕色的向量还是(1, 1)但是这个新基坐标系下的向量(1, 1)在原笛卡尔坐标系下的表示是(-1, 3)。
所以基变换角度来看矩阵乘向量 A ⋅ b A \cdot b A⋅b可以理解成以矩阵A为新的基底该基底下的向量b在笛卡尔坐标系下的真实位置。
由此理解矩阵乘法的计算规则为什么就是像下面这样前面一个矩阵的第 i 行 x 后一个矩阵的第 j 列结果为新的矩阵的第 ij 个元素 [ 1 − 2 1 2 ] [ 1 1 ] [ − 1 × 1 ( − 2 ) × 1 1 × 1 2 × 1 ] [ − 1 3 ] \begin{bmatrix} 1-2 \\ 12 \end{bmatrix} \begin{bmatrix} 1\\ 1 \end{bmatrix} \begin{bmatrix} -1\times1(-2)\times1\\ 1\times12\times1 \end{bmatrix} \begin{bmatrix} -1\\ 3 \end{bmatrix} [11−22][11][−1×1(−2)×11×12×1][−13] 因为左边矩阵不同的列向量代表新基坐标系中不同维度下的基底后面矩阵列向量中的不同坐标分别表示新的基坐标系中不同维度的坐标而新的基坐标系中不同维度的基坐标轴的坐标表示又可以看成是相对于原笛卡尔坐标系的投影比如新的x轴(1, 1)表示这个轴在笛卡尔坐标系中的x, y轴上的投影分别都是1新的x轴中的一个单位长度等价于原笛卡尔坐标系中x, y轴各自一个单位长度。
因此矩阵乘法之所以规定行乘列的值作为计算的结果本质上是把新基坐标系下一个向量所有维度的坐标在原笛卡尔坐标系下按照不同维度(前面矩阵的行)进行了一个汇总求和。
所以也能理解为什么规定矩阵乘法要求必须前面一个矩阵的列数等于后一个矩阵的行数因为前面矩阵的列数其实就是新的基坐标系的维度后面矩阵的行数其实就是一个向量在这个新基坐标系中各维度下的坐标表示二者维度不同也就没有汇总的必要和意义。
推广到高维的不规则的矩阵比如一个3x2的矩阵乘上一个2x1的向量新的基坐标系还是只有两个维度只不过每个维度会投影到一个三维的笛卡尔坐标系因为矩阵的列向量是用3个数表示说明在笛卡尔坐标系中有3个维度的投影。后面这个2x1的向量可以看成是新的基坐标系下的向量表示最终的计算还是将这个向量分别在笛卡尔坐标系的三个维度上汇总求和。
以下面这个为例 [ 0 1 1 0 1 1 ] ⋅ [ 1 1 ] [ 1 1 2 ] \begin{bmatrix} 0 1\\ 1 0\\ 1 1 \end{bmatrix} \cdot \begin{bmatrix} 1\\ 1 \end{bmatrix} \begin{bmatrix} 1\\ 1\\ 2 \end{bmatrix} 011101 ⋅[11] 112 至于推广到更多行或列的矩阵乘法无非增加行数是增加了新的基坐标在标准笛卡尔坐标系下的分解维度增加列数是增加了新坐标系的基底数量原理都还是一样的。
至于矩阵乘矩阵可以把后一个矩阵看成是多个列向量的集合用矩阵乘向量的视角去理解。