当前位置: 首页 > article >正文

第二讲 矩阵消元——用矩阵的左乘表示矩阵消元的过程

第二讲主要内容:

(1)消元(elimination):成功的情况和失效的情况

(2)回代(back substitution)

(3)矩阵左乘和右乘(matrix multiplication)

一、消元

所谓的消元,我们从整个方程组的视角来看,其实本质上是整合信息,去同存异。而消元的思想并不难想到,因为想要求解多元的方程组,自然就会想到,先求解一个元,再回代求解出其他的元,而如何求解一个元,就要用到消元的思想使等式只含有待求的主元这一个未知数方可求解。从根本上来说,还是遵循着数学的通过转化处理用已知解决未知的思想,即利用消元的处理用已知的一元一次方程来求解未知的多元的方程组。

我们以方程组

\left\{\begin{matrix} x+2y+z=2\\ 3x+8y+z=12\\ 4y+z=2 \end{matrix}\right.

为例来具体展示消元的思想与过程。

(1)写出系数矩阵A

根据未知元的系数可得系数矩阵A为:

\begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix}

(2)确定主元一,进行第一轮消元

我们按照从上到下的顺序,首先把x当做主元一,所谓的消元就是利用第一行的等式提供的信息来简化第二行等式和第三行等式,具体来说就是第一行含有关于x的信息,我们通过第二行和第三行减去第一行的整数倍(因为方程的性质左右两边同乘方程仍成立),目的是消去x使第二行和第三行都只含有两个y和z两个未知元,这样就距离我们希望的一个未知元就进了一步。以上步骤习惯以选定主元这一行作为减数,其他行作为被减数,因此又被称为加减消元。

根据以上的描述,不难写出第一轮消元后的矩阵:

\begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix}\rightarrow \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 4& 1 \end{bmatrix}

值得关注的是,在上述计算过程中我们会发现第三行因为就不含x项了,因此是减去了0倍的第一行,可以一眼看出,但是对于MATLAB等程序而言,第三行减去0*第一行这一步是必不可少的。

而且我们在进行消元时由于矩阵发生了变化,因此从原矩阵到现矩阵不能用等号来连接,而是需要用箭头来连接。

上述矩阵变换我们的目的是使矩阵的(2,1)位置变为0,因此称这一步变换为(2,1)

(3)继续迭代,消元直到得出一元一次方程

因为只有三个未知元,下一步我们的目的是继续消去y,总共进行两轮消元,得到只含有z的一元一次方程。

因此我们第二轮把y作为主元二,进行第二轮消元,目的是使(3,2)位置上的y的系数变为0,即:

\begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix}\rightarrow \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 4& 1 \end{bmatrix}\rightarrow \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 0& 5 \end{bmatrix}

我们将最终得到的矩阵记作U,称为上三角矩阵。

(4)消元失效的情况

需要注意的是0不能做主元。而当出现主元位置出现0时,此时消元“暂时性失效”,但是可以通过交换行的操作避免主元位置为0。

二、回代

以上消元过程我们为了方便演示起见只对于系数矩阵进行了变换,但是实际上从方程组的思想上来看我们需要对于方程组的等号左右同时做相同的变换,因此我们在原来3x3矩阵的基础上加入等式右边这一列,组成3x4的矩阵,这样的矩阵被称为增广矩阵(argumented matrix)

\begin{bmatrix} 1& 2& 1& 2\\ 3& 8& 1& 12\\ 0& 4& 1& 2 \end{bmatrix}\rightarrow \begin{bmatrix} 1& 2& 1& 2\\ 0& 2& -2& 6\\ 0& 4& 1& 2 \end{bmatrix}\rightarrow \begin{bmatrix} 1& 2& 1& 2\\ 0& 2& -2& 6\\0& 0& 5& -10 \end{bmatrix}

我们将变换完后的右边一列 \begin{bmatrix} 2\\ 6\\ 10 \end{bmatrix}记作c。

经过回代之后,原来的方程组 A\overrightarrow{x}=b 变成了 U\overrightarrow{x}=c 。即:

\left\{\begin{matrix} x+2y+z=2\\ 3x+8y+z=12\\ 4y+z=2 \end{matrix}\right.\rightarrow \left\{\begin{matrix} x+2y+z=2\\ 2y-2z=6\\ 5z=-10 \end{matrix}\right.

因此先求z,再求y,最后求x,可得:\left\{\begin{matrix} x=2\\ y=1\\z=-2 \end{matrix}\right.

三、矩阵的左乘与右乘向量

(1)矩阵右乘向量

首先我们先看矩阵的右乘向量,例如:

\begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix}\cdot \begin{bmatrix} 3\\ 4\\ 5 \end{bmatrix}

我们在上一讲也提到过,我们可以把矩阵右乘向量看成是对于矩阵列向量的线性组合,即上述运算可以看做:

3\cdot \begin{bmatrix} 1\\ 3\\ 0 \end{bmatrix}+4\cdot \begin{bmatrix} 2\\ 8\\ 4 \end{bmatrix}+5\cdot \begin{bmatrix} 1\\ 1\\ 1\end{bmatrix}

(2)矩阵左乘向量

那么当给出下面的例子时,应该如何计算呢?

\begin{bmatrix} 3 &4 &5 \end{bmatrix}\begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix}

观察类比上面右乘的结果,我们发现矩阵右乘列向量最终的结果是一列,因此矩阵左乘行向量的结果应该是一行。

同样的类比,我们可以写出所谓的矩阵左乘行向量,就是对于矩阵每个行向量的线性组合,系数即为左乘的行向量的元素值,即可以写为:

3\cdot \begin{bmatrix} 1 &2 & 1 \end{bmatrix}+4\cdot \begin{bmatrix} 3 &8 & 1 \end{bmatrix}+5\cdot \begin{bmatrix} 0 &4 & 1 \end{bmatrix}

以上的分析其实已经开始逐渐引入线性代数的核心概念了,即分别用行向量和列向量对矩阵进行操作。

(3)矩阵变化描述消元过程

\begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix}\rightarrow \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 4& 1 \end{bmatrix}\rightarrow \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 0& 5 \end{bmatrix}

上述消元过程主要进行了两步操作:

(i)(2,1)操作:即第二行 - 3*第一行

(ii)(3,2)操作:即第三行 - 2*第二行

因为都是行变换,我们根据(1)(2)矩阵左乘右乘的思想,需要对矩阵进行左乘来用矩阵的形式表示。

对于第一步操作,即:

\begin{bmatrix} & & \\ & & \\ & & \end{bmatrix}\begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix}\ = \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 4& 1 \end{bmatrix}

我们记 \begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix} 为A矩阵,根据最终的结果为3x3,可知左乘的矩阵也为3x3,也就是“?”矩阵中第一行的三个元素分别和A矩阵的三个行向量线性组合相加得到最终的矩阵第一行,以此类推。

我们发现A矩阵和最终的结果相比第一行和第三行都没有变化,因此分别为100和001。对于第二行则是第一行*(-3)加上第二行得到,因此为-3 1 0。

综上“?”矩阵应为:

\begin{bmatrix} 1& 0& 0\\ -3& 1& 0\\ 0& 0& 1 \end{bmatrix}

我们将以上矩阵称为初等矩阵E(elementary matrix),在此处是对于(2,1)位置进行的变换,因为写作E21。

\begin{bmatrix} 1& 0& 0\\ -3& 1& 0\\ 0& 0& 1 \end{bmatrix}\begin{bmatrix} 1& 2& 1\\ 3& 8& 1\\ 0& 4& 1 \end{bmatrix}\ = \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 4& 1 \end{bmatrix}

同理对于第二步操作——第三行减去2*第二行

\begin{bmatrix} & & \\ & & \\ & & \end{bmatrix}\begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 4& 1 \end{bmatrix}\ = \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 0& 5 \end{bmatrix}

求得:

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

\begin{bmatrix} 1 &0 &0 \\ 0&2 &-2 \\ 0&-2 &1 \end{bmatrix}\begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 4& 1 \end{bmatrix}\ = \begin{bmatrix} 1& 2& 1\\ 0& 2& -2\\ 0& 0& 5 \end{bmatrix}

综上,我们将这两步用矩阵的形式进行描述为:

E32(E21*A)=U

上式把复杂的消元过程用矩阵表示地简洁明了,充分展示了数学表达式的魅力,同时节约空间,在程序中被广泛应用。

同时,我们观察E32(E21*A)=U,可不可以通过一步变化就从A得到U?答案当然是肯定的。

因此上式可以写成:

(E32*E21)A=U

也就是说括号可以移动,也就是所谓的结合律(associative law),增减括号是矩阵乘法的一个重要性质,后续其他的证明经常会用到。

(4)置换矩阵

通过上述矩阵左乘就是对于矩阵的行向量的线性组合可知:存不存在一类矩阵可以实现两行的交换?即:

\begin{bmatrix} & \\ & \end{bmatrix}\begin{bmatrix} a &b \\ c&d \end{bmatrix}=\begin{bmatrix} c &d \\ a&b \end{bmatrix}

我们发现需要实现的效果是“?”矩阵需要第一行的元素和[a b]和[c d]组合之后得到的结果为[c d],第二行的元素和[a b]和[c d]组合之后得到的结果为[a b],因此

E=\begin{bmatrix} 0 &1 \\ 1&0 \end{bmatrix}

我们把可以实现行与行之间互换的矩阵称为置换矩阵(permutation matrix)

同理,我们若想对于列进行交换置换矩阵应该是什么样子呢?根据矩阵右乘列向量的思想可知次数需要进行右乘运算。

\begin{bmatrix} a &b \\ c&d \end{bmatrix}\ \begin{bmatrix} & \\ & \end{bmatrix} = \begin{bmatrix} b &a \\ d&c \end{bmatrix}

矩阵右乘是“?”矩阵第一列的元素分别与 \begin{bmatrix} a\\ c \end{bmatrix} 和 \begin{bmatrix} b\\ d \end{bmatrix} 进行线性组合得到 \begin{bmatrix} b\\ d \end{bmatrix} ,第二列的元素分别与 

\begin{bmatrix} a\\ c \end{bmatrix} 和 \begin{bmatrix} b\\ d \end{bmatrix} 进行线性组合得到 \begin{bmatrix} a\\ c \end{bmatrix}。因此:

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


http://www.kler.cn/a/514502.html

相关文章:

  • Web安全攻防入门教程——hvv行动详解
  • 【HarmonyOS NEXT】华为分享-碰一碰开发分享
  • 基于Redis实现短信验证码登录
  • WPF1-从最简单的xaml开始
  • 国产编辑器EverEdit - 列编辑模式
  • CTTSHOW-WEB入门-爆破25-28
  • Spring注解篇:@RequestMapping详解
  • ESP-Mesh-Lite组网方案,赋能设备多场景联网通信,无线交互控制应用
  • PHP常见正则表达式
  • 不用安装双系统,如何在mac上玩windows游戏呢?
  • vim如何显示行号
  • 基于springboot+vue的校园二手物品交易系统的设计与实现
  • 在 Go 语言中如何高效地处理集合
  • LabVIEW处理复杂系统和数据处理
  • 基于Spring Boot+Vue.js的后台管理系统
  • Elasticsearch 8.17.1 JAVA工具类
  • 【深度学习基础】多层感知机 | 权重衰减
  • C++11左值引用和右值引用
  • 神经网络基础详解
  • 【Maui】注销用户,采用“手势”点击label弹窗选择
  • 打造你的第一个AI Agent:从需求分析到架构设计
  • 【AI编辑器】字节跳动推出AI IDE——Trae,专为中文开发者深度定制
  • Powershell语言的云计算
  • (五)Mapbox GL 中图层`paint`的使用方法和使用场景初识
  • Llama 3:开源大模型的里程碑式突破
  • MDX语言的嵌入式系统