首页 > 其他分享 >矩阵——乘法的核心理解

矩阵——乘法的核心理解

时间:2023-03-05 16:58:00浏览次数:43  
标签:begin end space 矩阵 方程 理解 bmatrix 乘法

矩阵可以被看成一个表格,每个格里面只能放数字的表格。“矩”的意思是矩形,由数字组成的矩形;“阵”的意思是整齐,这些数字排列起来是非常整齐的,并不会歪歪扭扭;矩阵中,横向的数字是行,竖向的数字是列,行和列都是整数,可以是1或者是n(n是整数);矩阵中,通过“第几行、第几列”这种简便的方式来确定某个数字的具体位置。矩阵是一个数据集成的符号,我们可把矩阵\(A\)看成是由若干个行向量组成的,批处理是矩阵运算中很重要的一个观点。

一 矩阵乘法的规定

矩阵乘法(英文:matrix multiplication)是一种根据两个矩阵得到第三个矩阵的二元运算,第三个矩阵即前两者的乘积,称为矩阵积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。即:

在这里插入图片描述
在这里插入图片描述
首先,两个矩阵要是想相乘需要满足,第一个矩阵的列数等于第二个矩阵的行数,满足的话就可以相乘得到新的矩阵了

二 矩阵乘法实现解方程的消元法

消元法(elimination)是求解线性方程组的根本方法。消元法如果奏效了,方程就解出来了。消元法通过对线性方程组施行三种初等变换:
用一非零的数乘某一方程;
把一个方程的倍数加到另一个方程;
互换两个方程的位置。
将原方程组中某方程的某个未知量的系数为零——消去这个元;反复这样做,得到一个化简的线性方程组,这个是阶梯型方程组(系数及常数项均变为0的方程可去掉,因而方程个数未必与原方程个数相等),这样的阶梯型线性方程组容易判断是不是有解;有解时,容易得到所有的解,这就是用消元法求解的过程。

2.1 消元法应用

\[\begin{cases} 2x+4y-2z=2&(1)\\4x+9y-3z=8&(2)\\-2x-3y+7z=10&(3) \end{cases} \]

第一步,方程 2 减去 2 倍的方程 1,得到$ y+z=4$。
第二步,方程 3 减去 -1 倍的方程 1,得到 \(y+5z=12\)。
第一步,方程 3 减去 1 倍的方程 2,得到 \(4z=8\)。

\begin{alignedat}{2} \boldsymbol 2&x \space+\space&4&y \space-\space&2&z=\space 2 \\ & \space\space&\boldsymbol 1&y \space+\space&1&z=\space 8\\ & \space\space&& \space\space&\boldsymbol 4&z=\space 8 \end{alignedat}

三个主元分别为 2, 1, 4,然后我们就可以用回带法求出方程组的解。

2.2 消元法的矩阵实现

24−2x1+x1+x1−493x2−x2−x2+237x3=2x3=8x3=10↔⎡⎣⎢24−249−3−2−37⎤⎦⎥⎡⎣⎢x1x2x3⎤⎦⎥=⎡⎣⎢2810⎤⎦⎥2x1+4x2−2x3=24x1+9x2−3x3=8−2x1−3x2+7x3=10↔[24−249−3−2−37][x1x2x3]=[2810]

\begin{alignedat}{2} 2&x_1 \space+\space&4&x_2 \space-\space&2&x_3=\space 2 \\ 4&x_1\space+\space&9&x_2 \space-\space&3&x_3=\space 8\\ -2&x_1 \space-\space&3&x_2 \space+\space&7&x_3=\space 10 \end{alignedat} \leftrightarrow \begin{bmatrix} 2&4&-2 \\ 4&9&-3\\-2&-3&7\end{bmatrix} \begin{bmatrix} x_1 \\ x_2\\x_3 \end{bmatrix} = \begin{bmatrix} 2 \\ 8\\10 \end{bmatrix}

对方程的两边同时进行一步消元,第 2 个方程减去第 1 个方程的 2 倍,我们可以得到:

⎡⎣⎢20−241−3−217⎤⎦⎥⎡⎣⎢x1x2x3⎤⎦⎥=⎡⎣⎢2410⎤⎦⎥[24−2011−2−37][x1x2x3]=[2410]

\begin{bmatrix} 2&4&-2 \\ 0&1&1\\-2&-3&7\end{bmatrix} \begin{bmatrix} x_1 \\ x_2\\x_3 \end{bmatrix} = \begin{bmatrix} 2 \\ 4\\10 \end{bmatrix}

相当于左右两边都乘以了一个矩阵 E21E21E_{21}

E21=⎡⎣⎢1−20010001⎤⎦⎥E21=[100−210001]

E_{21} = \begin{bmatrix} 1&0&0 \\ -2&1&0\\0&0&1\end{bmatrix}

E21=⎡⎣⎢1−20010001⎤⎦⎥∗⎡⎣⎢row1row2row3⎤⎦⎥=⎡⎣⎢row1row2−2row1row3⎤⎦⎥E21=[100−210001]∗[row1row2row3]=[row1row2−2row1row3]

E_{21} = \begin{bmatrix} 1&0&0 \\ -2&1&0\\0&0&1\end{bmatrix} * \begin{bmatrix} row1 \\ row2\\row3\end{bmatrix} = \begin{bmatrix} row1 \\ row2-2row1\\row3\end{bmatrix}

E21E21E_{21} 称为初等矩阵(elementary matrix)或者消元矩阵(elimination matrix),它可以很简单地从单位矩阵演化而来,EijEijE_{ij} 就是将单位矩阵 (i,j)(i,j)(i, j) 位置的 0 换成消元过程的乘数 −lij−lij-l_{ij}。

I=⎡⎣⎢100010001⎤⎦⎥→E21=⎡⎣⎢1−20010001⎤⎦⎥I=[100010001]→E21=[100−210001]

I = \begin{bmatrix} 1&0&0 \\ 0&1&0\\0&0&1\end{bmatrix} \to E_{21} = \begin{bmatrix} 1&0&0 \\ \boxed{-2}&1&0\\0&0&1\end{bmatrix}

给定如下方程组

\[\begin{cases} \ x+2y+z=2\\ 3x+8y+z=1\\ 4y+z=2 \end{cases} \]

我们用矩阵形式来表示上面的方程组:

\[A=\left[\begin {array}{c} 1 &2 &1 \\ 3 &8 &1 \\ 0 &4 &1 \\ \end{array}\right] \]

\[b=\left[\begin {array}{c} 2 \\ 1 \\ 2 \\ \end{array}\right] ;X=\left[\begin {array}{c} x \\ y \\ z \\ \end{array}\right] \]

要求解方程组,也就是我们需要获取一个向量,使得:$$AX=b$$

2.1 交换矩阵的两行

行变换和列变换

受上面的消元矩阵的启发,交换矩阵中两行:

\[\begin{bmatrix} 0&1\\ 1&0\\ \end{bmatrix} \begin{bmatrix} a&b\\ c&d\\ \end{bmatrix}= \begin{bmatrix} c&d\\ b&a\\ \end{bmatrix} \]

三 矩阵乘法在管理中实践

假设有这样一个问题。东郊农场、西郊农场和北郊农场都种植土豆、萝卜、红薯和花生。你在了解了今年这3个农场所有作物的产量(吨)后,想将产量情况汇报给你的上级。你会怎么做呢?你很可能会想到用一个表格来直观地表示:

土豆 萝卜 红薯 花生
东郊 45 37 29 18
西郊 22 26 37 15
北郊 34 27 21 41

如果只看数字部分的话,我们刚刚做出的表格就可以看作是一个矩阵。而当你从市场上得知了今年这四种作物的价格(万元/吨)后,土豆 3、萝卜 4、红薯 2、花生 5,你估算出了这几个农场今年的收益(万元)。从这几个农场每种产品的产量和单价到各个农场的总收入,这中间是怎么计算的呢?只需把每个农场每种作物的产量分别乘以单价,再求和即可。这个过程就是矩阵乘法的应用,写成矩阵的形式就是:

\[\begin{bmatrix} 45 & 37 & 29&18\\ 22 & 26 & 37&15\\ 34&27&21&41 \end{bmatrix} \times \begin{bmatrix} 3\\ 4\\ 2\\ 5 \end{bmatrix} = \begin{bmatrix} 431\\ 319\\457 \end{bmatrix} \]

矩阵的乘法中需要注意的是,由于是表格相乘,所以并不满足乘法交换律。且第一个表格的列数要等于第二个表格的行数才行,因为结果表格中第\(m\)行\(n\)列的元素是由第一个表格中的\(m\)行和第二个表格中\(n\)列中的元素对应相乘并求和得到的。如上例中的3行4列矩阵×4行1列矩阵=3行1列矩阵。同时可以发现所得的矩阵的行列数等于第一个矩阵的行数和第二个矩阵的列数。
有了矩阵的乘法的计算方式之后,一些复杂繁琐的线性关系就可以方便地用矩阵来表示了。如:

\[y_1=a_{11}x_1+a_{12}x_2+a_{13}x_3\\ y_2=a_{21}x_1+a_{22}x_2+a_{23}x_3\\ y_3=a_{31}x_1+a_{32}x_2+a_{33}x_3 \]

就可以表示为 $Y=AX $,其中

\[Y= \begin{bmatrix} y_1\\ y_2\\ y_3 \end{bmatrix} X=\begin{bmatrix} x_1\\ x_2\\ x_3 \end{bmatrix} \]

\[A= \begin{bmatrix} a_{11}& a_{12} & a_{13}\\ a_{21}&a_{22}&a_{23}\\ a_{31}&a_{32}&a_{33}\end{bmatrix} \]

再如

\[y_1=b_{11} x_1+b_{12} x_2+b_{13} x_3+b_{14} x_4\\ y_2=b_{21} x_1+b_{22} x_2+b_{23} x_3+b_{24} x_4\\ y_3=b_{31} x_1+b_{32} x_2+b_{33} x_3+b_{34} x_4\\ y_4=b_{41} x_1+b_{42} x_2+b_{43} x_3+b_{44} x_4 \]

可以表示为 $ Y=BX $,其中

\[Y= \begin{bmatrix} y_1\\ y_2\\ y_3 \end{bmatrix}; X= \begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4 \end{bmatrix} \]

\[B= \begin{bmatrix} b_{11}&b_{12}&b_{13}&b_{14}\\ b_{21}&b_{22}&b_{23}&b_{24}\\ b_{31}&b_{32}&b_{33}&b_{34}\end{bmatrix} \]

反过来讲,矩阵\(A\)和\(B\)都可以写成\(y\)和\(x\)组成的方程组的形式,而方程组代表着从\((x_1,x_2,x_3)\)或\((x_1,x_2,x_3,x_4)\)到\((y_1,y_2,y_3)\) 的线性变换。也就是说,矩阵和线性变换存在着一一对应的关系,那么矩阵就可以作为一种研究线性变换的工具使用了。

在上一篇文章中的图像旋转矩阵就是一种线性变换。

\[\begin{bmatrix} x^{'}\\ y^{'} \end{bmatrix} = \begin{bmatrix} cos \theta & -\sin \theta\\sin \theta & \cos\theta \end{bmatrix} \times \begin{bmatrix} x \\ y \end{bmatrix} \]

它将平面上的向量逆时针旋转了$ \theta$ 。

四 矩阵其他乘法——内积和外积

总结

参考资料

1.矩阵乘法核心思想(5):内积与外积
2.矩阵的乘法
3.

标签:begin,end,space,矩阵,方程,理解,bmatrix,乘法
From: https://www.cnblogs.com/haohai9309/p/17179781.html

相关文章

  • HTML-1.从规范的角度理解HTML,从分类和语义的角度使用标签
    ①用正确的标签做正确的事情②html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有CSS情况下也以一种文档格式显示,并且是容易阅读的。③搜索引......
  • 矩阵的变幻(旋转,转置,翻转,对角线,反对角线)
    旋转顺时针旋转90°(逆时针旋转270°)点击查看代码voidrotate_90(){ //所有矩阵适用 swap(n,m); //注意行列已互换 for(inti=1;i<=n;i++){ for(intj=......
  • 6.手写函数柯里化工具函数、并理解其应用场景和优势
    手写函数柯里化工具函数、并理解其应用场景和优势什么是柯里化(Curring)???什么意思?简单来说,柯里化是一项技术,它用来改造多参数的函数。  简单讲就是把一个多参数的函......
  • 矩阵符号的不同情景展现
    在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中......
  • 关于假设检验中,两类错误的理解
    解释两类错误第一类错误:错误拒绝原假设(\(H_0\))的概率==>\(\alpha\)第二类错误:错误拒绝备择假设(\(H_1\))的概率==>\(\beta\)而第一类错误衡量的是检验的基本......
  • 不同厂家的编译器 对C语言的理解不一样
    #注意是C语言代码,不是C++voidfunc(void){constintbuf_len=64;charbuffer[buf_len]={0};}$$cat-nfun.c1voidfunc(void)2{......
  • 深入理解ThreadLocal
    在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,因此只有理解透彻了,不管怎么问,都能游刃有余。本文主要从以下几个角度来分析理解1、ThreadLocal是什么2、......
  • python __new__()的理解
    最近在学python做接口自动化,在封装log模块时,老师没有继承logging模块,而是在自己封装的MyLogger类中的__new__方法中返回了一个logging对象自己封装的MyLogger类中就只......
  • 无符号乘法器
    无符号乘法器与无符号加法类似,无符号乘法器也要求两边的乘数是无符号的,一旦有一方为有符号数,则整个结果为有符号数,否则综合会出现不可预知的结果。与无符号加法不同的是,无......
  • 1.为何try里面放return,finally还会执行,理解其内部机制
    涉及到了一种数据类型:Completion,是js七大标准类型之一为何try里面放return,finally还会执行这种行为就是因为CompletionRecord,在js中,每条语句的执行完成状态都是由Comple......