老师进来看下,这种理解正确吗?

来源: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中第一列=1
3=3
此时得到第一个列向量(6 3)T
矩阵A中第一行×矩阵B中第二列=25=10
矩阵A中第一行×矩阵B中第二列=1
5=5
此时得到第二个列向量(10 5)T
所以结果如下图
图片描述
两个矩阵相乘,A×B≠B×A,即不支持交换律!

麻烦老师看下,是否有错误的地方,以及在记忆时的建议,谢谢。

写回答

1回答

liuyubobobo

2023-03-28

非常非常重要的,我在这个课程说过“看待矩阵的四个视角”,不是矩阵乘法对象的改变(和你写的四个视角完全不同。)我总结的“看待矩阵的四个视角”,本质可以理解成对于矩阵的最典型的四种应用:数据,系统,变换,空间:

//img.mukewang.com/szimg/64222aaf0962493518920982.jpg


你描述的,不是看待同一个东西的四种视角。你描述的,完全不是一个东西。


向量和向量之间定义了点乘,所以,(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) 列向量做矩阵乘法,规则是一致的,只不过因为矩阵乘法没有交换律,所以结果不同而已,但他们都是矩阵乘法!(相应的,向量之间的点乘是支持交换律的。)


最后,矩阵和向量之间的运算,一个矩阵和一个向量之间可以做乘法运算,但要要求矩阵的列数和向量的元素数一致,结果是一个向量。注意,结果是一个向量!不是另一个矩阵!所以,我在课程中说,这个运算可以理解成是向量转换的函数(从一个向量转换成另一个向量):

//img.mukewang.com/szimg/64222e2a0923558218641066.jpg


但是,你可以把上面图市里的“列向量”,看做是 m * 1 的矩阵,此时,就变成了矩阵和矩阵的乘法,但注意,此时结果是一个矩阵!(只不过一个维度为 1 而已。)


一个向量和一个矩阵是不能运算的。但是,如果我们把向量看做是一个 1 * n 的矩阵的话,是可以和一个 n * m 的矩阵运算的,但此时,他们的结果是一个 1 * m 的矩阵,而非一个含有 m 个元素的向量!(因为矩阵和矩阵乘法的结果是矩阵!)


说来说去,就是:数,向量,矩阵,不是一个概念。但很多时候,我们做了一些“隐式”的转换,尤其是对于向量的处理上,其实是把向量看做了一个矩阵。


说成计算机的语言,就是:

一个数组中只包含一个数字,他还是一个数组,不是一个数字;(一个含有一个元素的向量,不是一个数字)

一个二维数组,其中一个维度为 1,他还是一个二维数组,不是一个一维数组(一个矩阵,即使一个维度为 1,还是一个矩阵,不是一个向量)。

在这样的概念前提下,向量和向量之间;矩阵和向量之间;矩阵和矩阵之间,定义了他们之间的乘法运算。这些乘法运算是不一样的,虽然在一些情况下,我们可以把数组做“类型转换”,然后去做“别的运算”(比如把向量转换成某一个维度为 1 的矩阵,然后去做矩阵运算),但你一定要明白在底层,到底什么什么类型和什么类型再做运算。


希望我讲明白了。


继续加油!:)

0
1
慕设计1008376
哇噢,感谢bobo老师的回复!值得我细细反复品读。 另外,求更新微积分和概率论数理统计相关的课程,再次感谢!
2023-03-28
共1条回复

结合编程学数学 专为程序员设计的线性代数

创新设计,通俗易懂。编程结合数学,bobo带你彻底征服线性代数

3404 学习 · 375 问题

查看课程