老师进来看下,这种理解正确吗?
来源:4-7 矩阵和矩阵的乘法
慕设计1008376
2023-03-25
假设有这么一堆东西,按不同的乘法定义,计算结果不同!
一、看成是两个向量相乘
可乘的前提条件:同维向量,指两个向量中的元素个数相同
向量a·向量b=点乘=内积=得到一个数(只有1个数!)
向量a·向量b=a1b1+a2b2=23+15=6+5=11
支持交换律!
二、看成一个矩阵A×一个向量B
可乘的前提条件:矩阵中的列数=被乘向量的元素个数
矩阵A×向量B=一个新的列向量
此时,矩阵A的列数=1,向量B的元素个数=2
所以,两者不可相乘
但若可乘则有:矩阵A×向量B=向量B×矩阵A,支持交换律!
三、看成一个向量A×一个矩阵B
可乘的前提条件:向量中元素个数=被乘矩阵中的列数
向量A×矩阵B=一个新的列向量
此时,向量中的元素个数=2,被乘矩阵中列数=2
所以,两者可相乘
向量A×矩阵B=sum(向量A第一列×矩阵B第一行)
向量A×矩阵B=2×3+1×5=11
虽然只有一个数:11,但它是一个一维向量
若可乘则有:向量A×矩阵B=矩阵B×向量A,支持交换律!
四、看成一个矩阵A×一个矩阵B
可乘的前提条件:A(a×b),B(c×d),当且仅当b=c时可乘
矩阵A×矩阵B=一个新的矩阵C(a×d)
矩阵A中第一行×矩阵B中第一列=23=6
矩阵A中第二行×矩阵B中第一列=13=3
此时得到第一个列向量(6 3)T
矩阵A中第一行×矩阵B中第二列=25=10
矩阵A中第一行×矩阵B中第二列=15=5
此时得到第二个列向量(10 5)T
所以结果如下图
两个矩阵相乘,A×B≠B×A,即不支持交换律!
麻烦老师看下,是否有错误的地方,以及在记忆时的建议,谢谢。
1回答
-
liuyubobobo
2023-03-28
非常非常重要的,我在这个课程说过“看待矩阵的四个视角”,不是矩阵乘法对象的改变(和你写的四个视角完全不同。)我总结的“看待矩阵的四个视角”,本质可以理解成对于矩阵的最典型的四种应用:数据,系统,变换,空间:
你描述的,不是看待同一个东西的四种视角。你描述的,完全不是一个东西。
向量和向量之间定义了点乘,所以,(2, 1) 这个向量点乘 (3, 5) 这个向量,结果是 2 * 3 + 1 * 5 = 11。注意,两个向量的点乘结果是一个数字!
在学习了矩阵运算以后,我们可以看到,我们使用 (2, 1) 行向量和 (3, 5) 列向量可以做矩阵乘法,但此时,这个乘法和上面的 (2, 1) 和 (3, 5) 两个向量做点乘是不一样的。 (2, 1) 行向量和 (3, 5) 列向量做矩阵乘法,本质是 (2, 1) 这样的一个 1 * 2 的矩阵;和 (3, 5) 列向量(即 2 * 1 的矩阵)做矩阵乘法,结果是 (11),结果是一个矩阵!只不过这个矩阵是一个 1*1 的矩阵而已。两个矩阵乘法的结果不是一个数字,而是一个矩阵!(相应的,两个响亮的乘法结果是一个数字,不是一个矩阵。)
在这个描述中,当我说 (3, 5) 列向量的时候,其实已经将 (3, 5) 看做是一个矩阵了,因为向量本身是没有方向的。向量就是一串数字。矩阵才有方向,所以矩阵才可以做转置运算,向量没有转置运算。(一个数组你横着看竖着看都不重要,斜着看也行,数组就是一串有序数字。)
明白了这一点,再看为什么 (2, 1)列向量和 (3, 5) 行向量做矩阵乘法,结果是 2*2 矩阵,就很明显了。因为此时其实是 (2, 1) 列向量,这个 2 * 1 的矩阵,和 (3, 5) 行向量,这个 1*2 的矩阵,再做矩阵乘法。根据矩阵乘法的定义,得到了一个 2*2 的矩阵。这一切和上面的 (2, 1) 行向量和 (3, 5) 列向量做矩阵乘法,规则是一致的,只不过因为矩阵乘法没有交换律,所以结果不同而已,但他们都是矩阵乘法!(相应的,向量之间的点乘是支持交换律的。)
最后,矩阵和向量之间的运算,一个矩阵和一个向量之间可以做乘法运算,但要要求矩阵的列数和向量的元素数一致,结果是一个向量。注意,结果是一个向量!不是另一个矩阵!所以,我在课程中说,这个运算可以理解成是向量转换的函数(从一个向量转换成另一个向量):
但是,你可以把上面图市里的“列向量”,看做是 m * 1 的矩阵,此时,就变成了矩阵和矩阵的乘法,但注意,此时结果是一个矩阵!(只不过一个维度为 1 而已。)
一个向量和一个矩阵是不能运算的。但是,如果我们把向量看做是一个 1 * n 的矩阵的话,是可以和一个 n * m 的矩阵运算的,但此时,他们的结果是一个 1 * m 的矩阵,而非一个含有 m 个元素的向量!(因为矩阵和矩阵乘法的结果是矩阵!)
说来说去,就是:数,向量,矩阵,不是一个概念。但很多时候,我们做了一些“隐式”的转换,尤其是对于向量的处理上,其实是把向量看做了一个矩阵。
说成计算机的语言,就是:
一个数组中只包含一个数字,他还是一个数组,不是一个数字;(一个含有一个元素的向量,不是一个数字)
一个二维数组,其中一个维度为 1,他还是一个二维数组,不是一个一维数组(一个矩阵,即使一个维度为 1,还是一个矩阵,不是一个向量)。
在这样的概念前提下,向量和向量之间;矩阵和向量之间;矩阵和矩阵之间,定义了他们之间的乘法运算。这些乘法运算是不一样的,虽然在一些情况下,我们可以把数组做“类型转换”,然后去做“别的运算”(比如把向量转换成某一个维度为 1 的矩阵,然后去做矩阵运算),但你一定要明白在底层,到底什么什么类型和什么类型再做运算。
希望我讲明白了。
继续加油!:)
012023-03-28
相似问题