理解矩阵乘法

来源:互联网 发布:ios脚本软件 编辑:程序博客网 时间:2024/06/13 08:52

数学上一般对于矩阵乘法有如下定义:(截图百度百科)
这里写图片描述

老实说这实在是太混乱了!
为什么矩阵A要和矩阵B按不同的方向相乘?
又为什么两矩阵必须满足行列相等的关系才能进行矩阵乘法?
相乘得到的结果又是什么?
作为一个文科生,文主极度反感死记硬背的条条框框,那矩阵乘法又能否从现实出发理解其规则,从而帮助记忆呢?


如何理解矩阵乘法?

对于2行2列的单一矩阵,可以把它看作是2个2维空间向量的组合.
也就是说每一行上的数值代表在第N维度上向量相对于原点(0)的运动距离,
而每一列则区分了不同向量.

例如我们有如下方程组:

{2xy=0x+2y=5

显然方程组的解为:
x=1,y=2

略过文主不喜欢的矩阵行形式(row pricure 如果有兴趣可以翻阅一下线代导论),
方程组矩阵列形式(column picture)如下:

[21]x+[12]y=[05]

也可以写作:
[2112][xy]=[05]

按照向量运动的思维,文主是这么理解方程组矩阵的:
在二维空间上有两个从原点(0,0)开始的向量,向量1(也就是系数矩阵的第一列)结束于二维空间位置坐标(2,1),
也就是说向量1是一个从(0,0)指向(2,1)点带箭头的线段,
同样的系数矩阵的第二列表示了一个(0,0)指向(-1,2)的带箭头线段
而未知数方程组的描述的问题为:
需要几个向量(2,1)加上几个向量(-1,2)才能合成出此空间上的(0,5)向量?
是不是很熟悉?这完全和初中物理里面力的合成一模一样嘛…
答案就是1个(2,1)加上2个(-1,2),文主回头有空再用python作图补上这里…

所以矩阵描述的就是运动!矩阵乘法其实就是运动的合成!
而每个相关系数矩阵,都是在同一个维度空间中从空间原点出发的向量集合!
所以在这种运算法则下你永远见不到三角形的’矩阵’(或者说三角阵)!
因为每个列都代表在同一个N维空间中的一个向量,在此空间的每一个维度上都需要一个具体数值来表示向量终点的位置!
一个R行C列的数值矩阵就是C个在同一R维空间内的向量集合.


写到这里,就可以开始解释为什么只有当矩阵A列数等于矩阵B行数的时候,矩阵乘法才能成立了

假设有如下方程组:

3x+2y+6z=0x4y+z=32x+y9z=5

它的column picture:

312241619xyz=035

显然现在你在3维空间上有了3个基础向量((3,1,-2), (2,-4,1), (6,1,-9)),
你想知道通过如何组合这3个向量你才能得到向量(0,3,-5).
求解这个问题对于每个向量你需要假设一个未知数(x,y,z),
所以行列相等的规定,其实是在说对于每一个向量,你对其做运动合成的时候都需要赋予他一个系数(哪怕是0).
如果你少给一个系数(也即乘数矩阵少了一行),相当于你在运算之前就认为基础向量列中某一个成员向量对整体(合成后的向量)是毫无贡献的.
这意味着运算前你就知道某个列系数是0,那么此向量(也即此列)就没有参与运算的必要,应该在运算前就从基础矩阵中剔除!

对于

[2913][112233]=[312624936]

这种看似妖娆的乘法,
其实也不过是以下3组系数一致的方程排排坐写到一起的另一种表示方式而已.
其结果矩阵就是3个单一结果向量的集合
{21+11=391+31=12

{22+12=692+32=24

{23+13=993+33=36


所以我们也就可以解释为什么在矩阵乘法中,大部分情况下

ABBA

因为这相当于替换了基础向量,甚至是替换了基础的维度空间,
只有在巧合下,才会出现结果矩阵碰巧相等的情况.

0 0
原创粉丝点击