MIT 18.06 线性代数公开课笔记 Lecture02 矩阵消元

使用消元法解线性方程组

{ x + 2 y + z = 2 3 x + 8 y + z = 12 + 4 y + z = 2 \begin{cases} x&+&2y&+&z&=2\\[2ex] 3x&+&8y&+&z&=12\\[2ex] &+&4y&+&z&=2 \end{cases} x3x+++2y8y4y+++zzz=2=12=2

省去繁琐的加减号和 x y z xyz xyz 等字母, 使用矩阵来表示线性方程组. 让我们对 A A A 进行消元操作(MATLAB就是先处理系数矩阵后再处理 b \mathbf{b} b ):
1 2 1 3 8 1 0 4 1 ⟶ 1 2 1 0 2 − 2 0 4 1 ⟶ 1 2 1 0 2 − 2 0 0 5 \begin{matrix} 1 & 2 & 1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{matrix}\longrightarrow \begin{matrix} 1 & 2 & 1 \\ 0 & 2 & -2 \\ 0 & 4 & 1 \end{matrix}\longrightarrow \begin{matrix} 1 & 2 & 1 \\ 0 & 2 & -2 \\ 0 & 0 & 5 \end{matrix} 130284111100224121100220125
最后一个矩阵称为 U U U , 也就是上三角矩阵, 每一行第一个非零元素称为主元(pivot).

讨论一下消元失效的情况

如果 0 0 0 占据了主元的位置, 使用行交换即可. 对于消元后主元变为 0 0 0 的情形, 只要下面不全是 0 0 0 , 都可以用行交换来解决.

如果某一行变成全 0 0 0 , 消元失效.

回代 Back Substitution

我们把对 A A A 的操作作用于 b \mathbf{b} b , 使用增广矩阵:
1 2 1 2 3 8 1 12 0 4 1 2 ⟶ 1 2 1 2 0 2 − 2 6 0 4 1 2 ⟶ 1 2 1 2 0 2 − 2 6 0 0 5 − 10 \begin{array}{ccc|c}1 & 2 & 1 & 2 \\3 & 8 & 1 & 12 \\0 & 4 & 1 & 2\end{array}\longrightarrow\begin{array}{ccc|c}1 & 2 & 1 & 2 \\0 & 2 & -2 & 6 \\0 & 4 & 1 & 2\end{array}\longrightarrow\begin{array}{ccc|c}1 & 2 & 1 & 2 \\0 & 2 & -2 & 6 \\0 & 0 & 5 & -10\end{array} 13028411121221002241212621002201252610
我们把向量 [ 2 6 − 10 ] \begin{bmatrix}2\\6\\-10\end{bmatrix} 2610 称为 c \mathbf{c} c .

回代, 将得到的矩阵代回原方程组:
{ x + 2 y + z = 2 x = 2 2 y − 2 z = 6 y = 1 5 z = − 10 z = − 2 \begin{cases} x&+&2y&+&z&=2&&x=2\\[2ex] &&2y&-&2z&=6&&y=1\\[2ex] &&&&5z&=-10&&z=-2 \end{cases} x+2y2y+z2z5z=2=6=10x=2y=1z=2

消元矩阵

回想一下本门课的big picture: 矩阵乘一个向量实际上是矩阵列的线性组合:

[ − − − − − − − − − ] [ 3 4 5 ] = 3 × col 1 + 4 × col 2 + 5 × col 3 \begin{bmatrix} -&-&-\\ -&-&-\\ -&-&- \end{bmatrix} \begin{bmatrix} 3\\4\\5 \end{bmatrix}= 3\times \text{col 1}+ 4\times \text{col 2}+ 5\times \text{col 3} 345=3×col 1+4×col 2+5×col 3

同样使用向量乘矩阵就是矩阵行的线性组合:

[ 1 2 7 ] [ − − − − − − − − − ] = 1 × row 1 + 2 × row 2 + 7 × row 3 \begin{bmatrix} 1&2&7 \end{bmatrix} \begin{bmatrix} -&-&-\\-&-&-\\-&-&- \end{bmatrix}= \begin{matrix} 1\times \text{row 1}\\ +2\times \text{row 2}\\ +7\times \text{row 3} \end{matrix} [127]=1×row 1+2×row 2+7×row 3

Step1:考虑我们首先需要从 row 2 \text{row 2} row 2 中减去三个 row 1 \text{row 1} row 1 , 我们要构造一个矩阵:

[ 1 0 0 − 3 1 0 0 0 1 ] [ 1 2 1 3 8 1 0 4 1 ] = [ 1 2 1 0 2 − 2 0 4 1 ] \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} 130010001130284111=100224121

第一行的 1 0 0 \begin{matrix}1&0&0\end{matrix} 100 意味着取 [ 1 2 1 3 8 1 0 4 1 ] \begin{bmatrix} 1&2&1\\3&8&1\\0&4&1 \end{bmatrix} 130284111 第一行的 1 1 1 倍, 同样第三行 0 0 1 \begin{matrix}0&0&1\end{matrix} 001 意味着取 [ 1 2 1 3 8 1 0 4 1 ] \begin{bmatrix} 1&2&1\\3&8&1\\0&4&1 \end{bmatrix} 130284111 第三行的 1 1 1 倍, 而第二行的 − 3 1 0 \begin{matrix}-3&1&0\end{matrix} 310 就表示了取第一行的 − 3 -3 3 倍加上第二行的 1 1 1 倍.

如何检验某一个元素的值?矩阵乘法得到的矩阵中的 i , j i,j i,j 元的值就是第一个矩阵的第 i i i 个行向量点乘第二个矩阵的第 j j j 个列向量.

我们称前边的矩阵 [ 1 0 0 − 3 1 0 0 0 1 ] \begin{bmatrix} 1&0&0\\-3&1&0\\0&0&1 \end{bmatrix} 130010001初等矩阵 E E E , 记为 E 21 E_{21} E21 , 表示位置2,1上的变换.

Step2:同理, 从 row 3 \text{row 3} row 3 中减去两倍 row 2 \text{row 2} row 2 , 我们就需要左乘一个 E 32 E_{32} E32 :
[ 1 0 0 0 1 0 0 − 2 1 ] [ 1 2 1 0 2 − 2 0 4 1 ] = [ 1 2 1 0 2 − 2 0 0 5 ] \begin{bmatrix} 1&0&0\\0&1&0\\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} 100012001100224121=100220125
矩阵消元到此结束, 每一步用一个初等矩阵:
E 32 ( E 21 A ) = U E_{32}(E_{21}A)=U E32(E21A)=U

矩阵乘法的一些性质

有没有一个矩阵可以让 A A A 直接得到 U U U :
  ?   ‾   A = U \underline{\ ?\ }\,A=U  ? A=U
只要把初等矩阵放到一起就好了. 换言之, 矩阵乘法的"括号"是可以交换的, 这称作结合律. 这个"移动括号"定理将很常用.

还有一种初等矩阵, 用于交换两行: 置换矩阵 Permutation

交换 row 2 \text{row 2} row 2 row 1 \text{row 1} row 1 :
[ 0 1 0 1 0 0 0 0 1 ] \begin{bmatrix} 0&1&0\\1&0&0\\0&0&1 \end{bmatrix} 010100001
如果我们要交换两列, 我们只需要右乘一个初等矩阵. 左乘意味着行变换, 而右乘意味着列变换. 这里也显而易见的可以看出矩阵乘法是不满足交换律的.

逆变换

如何把 U U U 变回 A A A ? 我们首先在第二行中减去了三倍第一行, 现在我们要找一个矩阵抵消掉这一步操作:
[   ?     ] [ 1 0 0 − 3 1 0 0 0 1 ] = [ 1 0 0 0 1 0 0 0 1 ] \begin{bmatrix} \\\ &?&\ \\\, \end{bmatrix} \begin{bmatrix} 1&0&0\\-3&1&0\\0&0&1 \end{bmatrix}= \begin{bmatrix} 1&0&0\\0&1&0\\0&0&1 \end{bmatrix}  ? 130010001=100010001
显而易见, 在第二行中加上三倍第一行即可:
[ 1 0 0 3 1 0 0 0 1 ] [ 1 0 0 − 3 1 0 0 0 1 ] = [ 1 0 0 0 1 0 0 0 1 ] \begin{bmatrix} 1&0&0\\3&1&0\\0&0&1 \end{bmatrix} \begin{bmatrix} 1&0&0\\-3&1&0\\0&0&1 \end{bmatrix}= \begin{bmatrix} 1&0&0\\0&1&0\\0&0&1 \end{bmatrix} 130010001130010001=100010001
其中 E − 1 = [ 1 0 0 3 1 0 0 0 1 ] E^{-1}=\begin{bmatrix} 1&0&0\\3&1&0\\0&0&1 \end{bmatrix} E1=130010001 就是 [ 1 0 0 − 3 1 0 0 0 1 ] \begin{bmatrix} 1&0&0\\-3&1&0\\0&0&1 \end{bmatrix} 130010001 的逆矩阵.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值