赞
踩
教科书部分:
首先高斯消元的基本步骤就是用一个方程乘以一个系数得到一个新方程,然后再用另外一个方程减去这个新方程,就实现了消元。
例如下面这二元一次方程组,通过高斯消元法,把第二个方程中未知数x消去了。
而事实上每一次的消元都能够通过矩阵的乘法来实现的。也就是说,把下图红框框中的文字,变成数学表达式,这就会用到消元矩阵E(elimination matrix)也可以叫elementary matrix。
对于上图的这一操作而言,如果用矩阵之间的运算来表示就是EA(表示矩阵E左乘A),其中E就是消元矩阵:
在实际应用中,消元矩阵不会只用大写的E来表示,而是会写成带下标的消元矩阵。他表示,第i行加上第j行的c倍,具体的常数c要根据实际情况而定,坐标i,j表示矩阵A中所消去元素的位置。对于本例而言,i=2,j=1,c = -3/4,表示第2行加上第1行乘以-3/4后,消去了A中第二行的第一个元素。
如何构造消元矩阵?
消元矩阵有一种快速简洁的“un-official”构造方法,事实上我们只需对单位矩阵I做一个简单的修改就能得到消元矩阵。
1,首先构建一个与矩阵A维度相同的2x2单位矩阵I
2,其次,把单位矩阵I中第i=2行j=1列处的元素变成消元时所乘的系数c = -3/4即可。
原始矩阵A通过乘以消元矩阵,得到了新矩阵A,同时也完成了消元的操作。一定要注意这里消元矩阵E和A的乘法顺序(E左乘A),绝对不能颠倒。同时,如果E,A都是方阵,则二者的阶数必须相同。
消元矩阵的性质!
每一个消元矩阵都是可逆的。且逆的计算也非常方便,只需改变消元位置所对应的符号就行了,这在我自己的笔记中也有详细的说明。
(图像上传的有点问题,点击图像就能看到原始画质的图像)
多个消元矩阵的乘积
最后,对于一个nxn的方程组而言,高斯消元是需要很多步才能完成的,每步都需要一个消元矩阵。在实际消元的过程中,我们可以把这些Eij“合起来”。
令连续个的乘积的结果为矩阵Z。这样一来,对方程组Ax=b的消元,只需要用矩阵Z分别(左)乘以A和b就一次性完成了所有的消元过程。所以,我们可以非正式的说,矩阵Z也是一种消元矩阵。
例: 对矩阵A消元,共6步,得到矩阵U
基于4x4的单位矩阵分别构造六个消元矩阵,用于替换第i行第j列的元素为每次消元时所使用的常数系数为:
得到:
1,用于消除主元a11下面三个系数的消元矩阵E21,E31,E41
2,用于消除主元a22下面2个系数的消元矩阵E32,E42
3,用于消除主元a33下面1个系数的消元矩阵E43
首先,按照前面消元的顺序,用这些消元矩阵逐一乘以矩阵A,看是否能够得到U(通过matlab演示)
1,按序乘以消元矩阵消去第一列主元下的所有元素
- %% Elimination Matrix
- % Created: Summer, 2023. (2023/07/26)
- % Author: Z.Zhu, daduzimama@gmail.com
- % Copy Rights Reserved.
- % May not be copied, scanned, or duplicated, in whole or in part.
- clear all
- close all
-
- %matrix A
- A=[3 -7 -2 2;-3 5 1 0;6 -4 0 -5;-9 5 -5 12]
-
-
- %eliminate entries under a11
- E21=[1 0 0 0;1 1 0 0;0 0 1 0;0 0 0 1]
- E31=[1 0 0 0;0 1 0 0;-2 0 1 0;0 0 0 1]
- E41=[1 0 0 0;0 1 0 0;0 0 1 0;3 0 0 1]
-
- Epivot11 = E41*E31*E21*A
运行结果:
2,在上一步结果的基础上,继续乘以消元矩阵,消去第2列主元下的所有元素
- %eliminate entries under a22
- E32=[1 0 0 0;0 1 0 0;0 5 1 0;0 0 0 1]
- E42=[1 0 0 0;0 1 0 0;0 0 1 0;0 -8 0 1]
-
- Epivot22 = E42*E32*Epivot11
运行结果:
3,在上一步结果的基础上,消去第3列主元下的所有元素,得到最终消元结果矩阵U
- %eliminate entries under a33
- E43=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 -3 1]
-
- Epivot33 = E43*Epivot22
运行结果:
现在我们把所有的消元矩阵Eij,按照前面的消元顺序全部乘起来,得到一个消元矩阵Z,然后再用这个消元矩阵Z乘以A,看看是否能够通过一次乘法操作就完成前面的全部消元过程。(其实,仔细想想,这种做法相对于前面的做法没有省略任何操作。毕竟把所有的消元矩阵Eij乘到一起得到矩阵Z的过程,就是前面左乘A的一系列矩阵的乘法。即EijxEijxEij...EijxA=ZA,其中Z=EijxEijxEij...Eij)
Matlab code:
- %% eliminate all at once
- Z=E43*E42*E32*E41*E31*E21
-
- Z*A
运行结果:
个人笔记部分:
1,行交换(见下图E1)
2,某一行乘以一个常数(见下图E2)
3,某一行加上另外一行乘以一个常数 (见下图E3)
注:这些操作都不会改变原方程组的解。
补充:
(全文完)
作者 --- 松下J27
参考资料(鸣谢):
1,线性代数及其应用, 侯自新 南开大学1990
2,Linear Algebra and Its Applications,Gilbert strang
本文于2023年7月26日下班前,对本文做了大量的修改。补充了关于消元矩阵E的一些说明和例子,提供了相应的matlab代码。
(配图与本文无关)
版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。