用列主元高斯消元法求线性代数方程组的解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书
前 言
回顾普通解方程组的方法,一般都是先逐个削去未知变量,最终得到只有一个未知变量的方程,解之,把得到的值回代到消去变量过程中得到的方程组,逐个求出未知变量。
这种解线性方程组的基本方法就是这里要介绍的高斯消去法。
数学上,高斯消元法(或译:高斯消去法),是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。
当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。
高斯消元法可以用在电脑中来解决数千条等式及未知数。
高斯消元法可以用来找出一个可逆矩阵的逆矩阵。
用关联矩阵表述网络拓扑结构,并根据厂站拓扑结构和网络拓扑结构等概念简化了电力系统的拓扑结构。
根据广义乘法和广义加法的运算规则,将改进的高斯消元算法应用于电力系统拓扑结构分析中,并引入稀疏、分块处理等技术提高了上述拓扑分析的效率。
采用上述高斯消元算法对山东电网220kV 以上的变电站进行拓扑结构分析,结果表明了运用该高斯消元法进行网络拓扑分析的正确性和有效性。
用列主元素法,选取每列的绝对值最大的元素作为消去对象并作为主元素。
然后换行使之变到主元位子上,在进行消元计算。
设)()(k k b X A ,确定第k 列主元所在位置k i ,在交换k i 行和k 行后,在进行消元,并用MATLAB 软件进行求解。
目录
摘要....................................................................................... 错误!未定义书签。
第1章绪论 ......................................................................... 错误!未定义书签。
第2章高斯消元法的算法描述 (2)
2.1高斯消元法的原理概述 (2)
c231730658" 2.1.1高斯消元法的消元过程 (2)
c231730658" 2.1.2高斯消元法的回带过程 (3)
c231730658" 2.1.3高斯消元法的复杂度分析 (4)
c231730658" 2.2列主高斯消元法原理简介 (5)
c231730658" 2.2.1列主高斯消元法的消元过程 (6)
c231730658" 2.2.2列主高斯消元法的回带过程 (6)
c231730658" 2.2.3列主高斯消元法的算法描述 (6)
c231730662"第3章高斯消元法的物理应用 (9)
3.1c231730663"电网模型的描述 (9)
c231730658" 3.2电网模型的问题分析 (9)
c231730658"3.3求解计算 (11)
c231730693"参考文献 (13)
摘 要
用列主元素高斯消去法法,选取每列的绝对值最大的元素作为消去对象并作为主元素。
然后换行使之变到主元位子上,在进行消元计算。
设 )()(k k b x A ,确定第k 列主元所在位置 k i ,在交换 k i 行和k 行后,在进行消元,并用MATLAB 软件进行求解。
高斯消元法可以用在电脑中来解决数千条等式及未知数。
高斯消元法可以用来找出一个/view/689609.htm"可逆矩阵的逆矩阵。
用关联矩阵表述网络拓扑结构,并根据厂站拓扑结构和网络拓扑结构等概念简化了电力系统的拓扑结构。
根据广义乘法和广义加法的运算规则,将改进的高斯消元算法应用于电力系统拓扑结构分析中,并引入稀疏、分块处理等技术提高了上述拓扑分析的效率。
物理中一个简单电网中的电流可以用线性方程组来描述并确定,本段将通过实例展示线性方程组在确定回路电流中的应用. 电压电源(如电池等)迫使电子在电网中流动形成电流.当电流经过电阻(如灯泡或者发动机等)时,一些电压被“消耗”.
关键词:高斯消元法 列主元素法 电网模型
第1章绪论
我们都知道,高斯列主元素消去法是计算机上常用来求解线性方程组的一种直接的方法。
就是在不考虑舍入误差的情况下,经过有限步的四则运算可以得到线性方程组的准确解的一类方法。
实际运算的时候因为只能有限小数去计算,因此只能得到近似值。
在实际运算的时候,我们很多时候也常用高斯消去法。
但是高斯消去法在计算机中运算的时候常会碰到两个问题。
1.一旦遇到某个主元等于0,消元过程便无法进行下去。
2.在长期使用中还发现,即使消元过程能进行下去,但是当某个主元的绝对值很小时,求解出的结果与真实结果相差甚远。
为了避免高斯消去法消元过程中出现的上述两个问题,一般采用所谓的选择主元法。
其中又可以分为列选主元和全面选主元两种方法。
目前计算机上常用的按列选主元的方法。
因此我在这里做的也是列选主元高斯消去法。
大家知道,如果一个线性方程组的系数矩阵是上三角矩阵时,即这种方程组我们称之为上三角方程组,它是很容易求解的。
我们只要把方程组的最下面的一个方程求解出来,在把求得的解带入倒数第二个方程,求出第二个解,依次往上回代求解。
然而,现实中大多数线性方程组都不是上面所说的上三角方程组,所以我们有可以把不是上三角的方程通过一定的算法化成上三角方程组,由此我们可以很方便地求出方程组的解。
高斯消元法的目的就是把一般线性方程组简化成上三角方程组。
于是高斯消元法的基本思想是:通过逐次消元将所给的线性方程组化为上三角形方程组,继而通过回代过程求解线性方程组。
第2章 高斯消元法的算法描述
2.1高斯消元法的原理描述
回顾普通解方程组的方法,一般都是先逐个削去未知变量,最终得到只有一 个未知变量的方程,解之,把得到的值回代到消去变量过程中得到的方程组,逐个求出未知变量。
这种解线性方程组的基本方法就是这里要介绍的高斯消去法。
2.1.1 高斯消元法的消去过程
目的是把n 阶线性方程组转化成一个等价的三角形方程组。
对方程组
EE3 \* MERGEFORMAT EE
\* MERGEFORMAT
⎪
⎩⎪⎨⎧=+++=+++=+++n
n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a
2
211222222211
12
12111EE3 \* MERGEFORMAT (1)MT4
设EE3 \* MERGEFORMAT 011≠a ,那么将第一行乘以EE3 \* MERGEFORMAT
⎪⎪⎭
⎫ ⎝⎛-111a a i 加到第i 行(i=2,…,n ),消去第一列从第2到第n 行上的元素得EE3 \* MERGEFORMAT ⎪⎪⎩
⎪⎪⎨
⎧=++=++=+++)1(12)1(2)
1(2
122)1(2211212111n n nn n n n n n b x a x a b x a x a b x a x a x a )()( (2)
再设EE3 \* MERGEFORMAT 0)
1(22
≠a ,将式(2)中的第二行乘以EE3 \* MERGEFORMAT ⎪⎪⎭
⎫
⎝⎛-)1(22)
1(2a a i 加到第i 行(i=3…n),
消去第二列从第3到第n 行上的元素,并以此类推,最终得到方程组
EE3 \* MERGEFORMAT ⎪⎪⎪⎩
⎪
⎪⎪⎨
⎧==++=++=+++-----)1()1()2(222
)2(2)
1(2
122)1(221
1212111n n
n n nn n n
n nn n n n
n n n b x a b x a x a b x a x a b x a x a x a )
()
(
EE
3 \* MERGEFORMAT (3)
因此高斯消元法对方程组进行消元的公式可以总结为EE3 \* MERGEFORMAT
⎪⎪⎩⎪
⎪⎨⎧-=-=--------)
1()1()
1()1()()1()1()
1()1()(k kj k kk k ik k i k i k kj
k kk k ik k ij k ij b a a b b a a a a a (4)
其中k=1,2, …,n 。
2.1.2 高斯消元法的回代过程
目的是逐个求出EE3 \* MERGEFORMAT 11,,x x x n n -.
根据式(3)的最后一个式子可以求出EE3 \* MERGEFORMAT n x ,然后依次向上回代,回代的公式可以总结为
EE3 \* MERGEFORMAT ⎪⎪⎪
⎩
⎪⎪⎪⎨⎧-==-+=----∑)1(1
)
1()1()
1()
1(i ii j n
i j i ij i i i n m
n n n a x a b x a b x (5)
其中EE3 \* MERGEFORMAT .1,2,1 --=n n i
以上过程假设主元EE3 \* MERGEFORMAT )
1()2(11)2(33)1(22,11,,,----n nn n n n a a a a a 都不等于
0,这等价于系数矩阵A 的顺序主子式
E E 3 \* M E R G E
F O R M A T
()n i a a a a ii
i i
i
,,211111==∆ (6)
都不等于零,在实际操作时,若在消去过程中发现某个EE3 \* MERGEFORMAT
)
1(11-i a =0只需用后面某行与该行交换使主元素不为零即可继续进行消去步骤。
对
于非奇异矩阵来说,必定存在非零主元素使得上述交换成立。
以上高斯消元法的消去过程如果用矩阵和向量描述则相当于式
EE3 \* MERGEFORMAT b Ax = (7)
依次左乘单位下三角阵EE3 \* MERGEFORMAT ,,121,-n M M M 得
EE3 \* MERGEFORMAT b M M M Ax M M M n n 121121 --= (8) 其中 EE3 \* MERGEFORMAT
⎥⎥⎥⎥
⎥
⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣
⎡--=+10000001
00001000
1000101
,,1 i
n i i i m m M
,
MT4 ()
()
11,1,...,i ji ji i ii
a m j i n a --=
=+ (9)
记式(8)中EE3 \* MERGEFORMAT ,121M M M M n -=可知MT4 M 仍为单位下三角矩阵,而MT4 MA 已经变换为上三角矩阵,记EE3 \* MERGEFORMAT
MA U =,那么式(8)可写成
EE3 \* MERGEFORMAT Mb Ux = (10)
这就是消去法用一系列初等变换矩阵把原方程的系数矩阵三角化为式(10)的形式。
当MT4 U 可逆时,方程组式(7)的解为
EE3 \* MERGEFORMAT Mb U x 1-=
2.1.3 高斯消元法的复杂度分析
下面讨论一下高斯消元法的计算复杂程度。
只考虑乘除法的运算,分析式(4)和(5)。
首先消去第一列的EE3 \* MERGEFORMAT 1-n 个系数需要做EE3 \* MERGEFORMAT 1-n 次除法和EE3 \* MERGEFORMAT ()()111+--n n 次乘法,合计EE3 \* MERGEFORMAT ()()211+--n n 次乘除法。
而回代过程需要
MT4 1
1()(2)(1)(25)/6n k n k n k n n n -=--+=-+∑
次乘除法运算。
而回代过程需要
MT4 1(1)(1)/2n
k n k n n =-+=+∑
次乘除法运算。
因此消去和回代过程合计需要的乘除法次数为
EE3 \* MERGEFORMAT 3233
1
31312)1(6)52)(1(n n n n n n n n n ≈-+=+++-
即高斯消元法的时间复杂度为MT4 3()O n 。
2.2 列主高斯消元法原理简介
高斯列主元素消去法是计算机上常用来求解线性方程组的一种直接的方法。
就是在不考虑舍入误差的情况下,经过有限步的四则运算可以得到线性方程组的准确解的一类方法。
实际运算的时候因为只能有限小数去计算,因此只能得到近似值。
在实际运算的时候,我们很多时候也常用高斯消去法。
但是高斯消去法在计算机中运算的时候常会碰到两个问题。
1.一旦遇到某个主元等于0,消元过程便无法进行下去。
2.在长期使用中还发现,即使消元过程能进行下去,但是当某个主元的绝对值很小时,求解出的结果与真实结果相差甚远。
为了避免高斯消去法消元过程中出现的上述两个问题,一般采用所谓的选择主元法。
其中又可以分为列选主元和全面选主元两种方法。
目前计算机上常用的按列选主元的方法。
因此我在这里做的也是列主元高斯消去法。
大家知道,如果一个线性方程组的系数矩阵是上三角矩阵时,即这种方程组我们称之为上三角方程组,它是很容易求解的。
我们只要把方程组的最下面的一个方程求解出来,在把求得的解带入倒数第二个方程,求出第二个解,依次往上回代求解。
然而,现实中大多数线性方程组都不是上面所说的上三角方程组,所以我们有可以把不是上三角的方程通过一定的算法化成上三角方程组,由此我们可以很方便地求出方程组的解。
高斯消元法的目的就是把一般线性方程组简化成上三角方程组。
于是高斯消元法的基本思想是:通过逐次消元将所给的线性方程组化为上三角形方程组,继而通过回代过程求解线性方程组。
在消去过程中,选取每列的绝对值最大的元素作为消去对象并作为主元素。
然后换行使之变到主元位子上,在进行消元计算。
设 )()(k k b x A =,确定第k 列主元所在位置 k i ,在交换 k i 行和k 行后,在进行消元。
根据矩阵理论,交换 k i 和k 两个方程的位置,列主元素的消去过程相当于对交换后的新矩阵进行消元,即
)1(,+=k k i k k A A I L k
同时,右端向量 )(k b 变化为 )1(,+=k k i k k b b I L k
将方程组用增广矩阵MT4 []()
(1)
ij n n B A b a ⨯+== 表示。
2.2.1 列主元高斯消元法的消元过程
对MT4 1,2,,1k n =-
(1) 选主元,找MT4 {},1,,k i k k n ∈+ 使得
MT4 ,max k i k ik k i n
a a ≤≤=
(2) 如果MT4 ,0k i k a =,则矩阵MT4 A 奇异,程序结束;否则执行(3)。
(3) 如果MT4 k i k ≠,则交换第MT4 k 行与第MT4 k i 行对应元素位置,MT4 k kj i j a a ↔,MT4 ,,1j k n =+ 。
(4) 消元,对MT4 ,,i k n = ,计算MT4 /,ik ik kk l a a =对MT4
1,,1j k n =++ ,计算
MT4 .ij ij ik kj a a l a =-
2.2.2列主元高斯消元法的回代过程
(1) 若MT4 0,nn a =则矩阵奇异,程序结束;否则执行(2)。
(2) MT4 ,1/;n n n nn x a a +=
对MT4 1,,2,1i n =- ,计算MT4 ,11/n i i n ij j ii j i x a a x a +=+⎛⎫
=- ⎪⎝⎭
∑
2.2.3 列主元高斯消元法的算法的描述
1、设有n 元线性方程组如下:
MT4 1111
n n nn a a a a ⎛⎫
⎪ ⎪ ⎪⎝⎭ EE3 \* MERGEFORMAT ⎪⎪⎪⎭⎫ ⎝⎛n x x 1=EE3 \* MERGEFORMAT ⎪⎪⎪
⎭
⎫
⎝⎛21b b
2、具体步骤
第一步:如果EE3 \* MERGEFORMAT 011≠a , 令
EE3 \* MERGEFORMAT n i a a I i i ,,3,2,/1111 == 用(-li1)乘第一个方程加到第i 个方程上,得同解方程组: EE3 \*
MERGEFORMAT
⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡-----)1()1(1)1(2)1(1121)1()1(2)
1(1
)1(1)
1(12
)1(11)1(2
)1(22)1(21
)1(1)1(12)1(11n n
n n nn n n n n n n n n
b b b b x x x x a a a a a a a a a a a a
简记为:EE3 \* MERGEFORMAT )2()2(b x A = 其中
⎪⎪⎩⎪
⎪⎨⎧-=-=--------)
1()1()
1()1()()1()
1()
1()1()(k kj k kk k ik k i k i k kj k kk k ik k ij k ij b a a b b a a a a a
第二步:如果EE3 \* MERGEFORMAT 0)
2(22
≠a ,令EE3 \* MERGEFORMAT n i a a I i i ,,3,/)
2(22)2(22 ==
依据同样的原理,对矩阵进行化间(省略),依次下去,直到完成!
最后,得到上三角方程组:
EE3 \* MERGEFORMAT
E \* MERGEFORMAT
⎥⎥⎥
⎥
⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣
⎡-----)()
1(1)1(2)1(1121)()1(1)1(2
)1(22)1(1)1(12)1(110
0000n n n n n n n nn
n n n n n
b b b b x x x x a a a a a a a
简记为:
EE3 \* MERGEFORMAT )()(n n b x A =
最后从方程组的最后一个方程进行回代求解为:
EE3 \* MERGEFORMAT ⎪⎩⎪⎨⎧-==∑)()()(/)(/k kk j k kj k k i n
nn
n n a x a b X a b X
以上为高斯消去法的基本过程。
但是如前面我们所提到的,存在的问题。
1.一旦遇到某个主元等于0,消元过程便无法进行下去。
2.在长期使用中还发现,即使消元过程能进行下去,但是当某个主元的绝对值很小时,求解出的结果与真实结果相差甚远。
为了避免高斯消去法消元过程中出现的上述两个问题,一般采用所谓的选择主元法。
其中又可以分为列选主元和全面选主元两种方法。
目前计算机上常用的按列选主元的方法。
因此我在这里做的也是列选主元高斯消去法。
他的特点是:每次在系数矩阵中依次按列在主对角线及以下的元素中,选取绝对值最大的元素作为主元,将她调到主对角线上,然后用它消去主对角线以下的元素,最后化为同解的上三角形方程组去求解。
由于列主元法相对高斯消元法来说就增加了选主元操作,其他的求解步骤是一样的。
第3章高斯消元法的物理应用
3.1 电网模型的描述
一个简单电网中的电流可以用线性方程组来描述并确定,本段将通过实例展示线性方程组在确定回路电流中的应用. 电压电源(如电池等)迫使电子在电网中流动形成电流.当电流经过电阻(如灯泡或者发动机等)时,一些电压被“消
耗”.根据欧姆定律,流经电阻时的“电压降”由下列公式给出:
IR U =
其中电压 U 、电阻MT4 R 和电流MT4 I 分别以伏特(记作 v )、欧姆(记作Ω)和安培为单位.
下图中的电网连接了三个闭回路.回路1,2和3中的电流分别用 321,I I I 和表示.回路电流的方向是任意的.如果一个电流为负,则表示实际的电流方向与图中闭回路的电流方向相反.如果电流所示的方向由电池正极(长的一端)指向
负极(短的一端),则电压为正;否则电压为负.
电网模型
40V
10V
60V
Ω
8Ω
2Ω
2Ω
8Ω2Ω
2A
B D
C
Ω
2Ω61I 2
I 3I
根据物理学,回路中的电流服基尔霍夫电压定律,即沿某个方向环绕回路一周的所有电压降 IR 的代数和等于沿同一方向环绕该回路一周的电源电压的代数和.
注:电网中的回路电流可以用来确定电网中每一分支中的电流.如果只有一个回路电流流经一个分支,则分支电流等于回路电流.如果多于一个回路电流流经一个分支,则分支电流为该分支中回路电流的代数和.
3.2 电网模型的问题分析
确定下图电网中的回路电流.
40V
10V
60V
Ω
8Ω
2Ω
2Ω
8Ω2Ω
2A
B D
C
Ω
2Ω61I 2
I 3I
解 在回路1中,电流MT4 1I 流过三个电阻,且电压降 IR 为
111122688I I I I =++;在回路2中的电流也流经回路1的一部分,即从D 到A 的分
支,对应的电压降 IR 为 26I 伏特.然而,回路1中电流在DA 段的方向与回路2中选定的方向相反,在回路3中的电流也流经回路1的一部分,即从D 到A 的分支,对应的电压降 IR 为 26I 伏特,然而,回路1中电流在DA 段的方向与回路3中选定的方向相同,因此,回路1中所有电压降 IR 的代数和为 3216622I I I +-.由于回路1中的电压为+60伏特,由基尔霍夫电压定律,可得回路1的方程为
606622321=+-I I I ,
同理,可得回路2的方程为
108126321=++-I I I ,
其中, 16I -是回路1中流经DA 分支的电流(因为电流与回路2中的电流方向相反,所以电压为负); 212I 是回路2中所有的电阻乘上回路电流的和; 38I 是回路3中流经CB 分支上2欧姆电阻的电流,流经AD 分支上6欧姆电阻的电流,方向与回路2中该段的电流方向相同.回路3的方程为
50622321-=+-I I I
注意,在CB 分支上10伏特的电池被当作是回路2和回路3中的一部分,但是由于回路3中电流方向,电池在回路3中为-10伏特.出于同样的道理,40伏特的电池也应取负值.
综合上述讨论,上述电网的回路电流满足下列线性方程组
⎪⎩⎪
⎨⎧-=+-=++-=+-50
62210812660
6622321
321321I I I I I I I I I 写成矩阵形式为
⎪⎪⎪⎭
⎫
⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛---50106062281266622321I I I
3.3 求解计算 源程序:
clear
fprintf('增广矩阵')
A=[22,-6,6,60;-6,12,8,10;2,-2,6,-50] fprintf('第一次选主元后的增广矩阵')
tempo=A(3,:);A(3,:)=A(1,:);A(1,:)=tempo;A fprintf('第一次消元后的增广矩阵')
A(2,:)=A(2,:)-A(1,:)*A(2,1)/A(1,1);
A(3,:)=A(3,:)-A(1,:)*A(3,1)/A(1,1);A
fprintf('第二次选主元后的增广矩阵')
tempo=A(3,:);A(3,:)=A(2,:);A(2,:)=tempo fprintf('第二次消元后的增广矩阵')
A(3,:)=A(3,:)-A(2,:)*A(3,2)/A(2,2);A
fprintf('回代求解')
I(3)=A(3,4)/A(3,3);
I(2)=(A(2,4)-A(2,3)*I(3))/A(2,2);
I(1)=(A(1,4)-A(1,2:3)*I(2:3)')/A(1,1);
I
由matlab求解得:
增广矩阵
A =
22 -6 6 60
-6 12 8 10
2 -2 6 -50
第一次选主元后的增广矩阵
A =
2 -2 6 -50
-6 12 8 10
22 -6 6 60
第一次消元后的增广矩阵
A =
2 -2 6 -50
0 6 26 -140
0 16 -60 610
第二次选主元后的增广矩阵
A =
2 -2 6 -50
0 16 -60 610
0 6 26 -140
第二次消元后的增广矩阵
A =
2.0000 -2.0000 6.0000 -50.0000
0 16.0000 -60.0000 610.0000
0 0 48.5000 -368.7500
回代求解
I =
7.4227 9.6134 -7.6031
由计算结果得:I(1)= 7.4227 ,I(2)=9.6134,I(3)=-7.6031
总结:
在线性代数中,从理论上解决了线性方程组的求解问题,但常用的高斯消
元法有时会导致结果产生严重的偏差,因此需要研究数值解法。
Jacobi迭代与Gauss-Seidel有一个共同特点:新的近似解是已知近似解的线性函数,并且新
的近似解只与已知近似解有关。
参考文献
[1]李庆扬,易大义,王能超. 现代数值分析. 北京:高等教育出版社,1995
[2]陈辉,李文宇,张传芳.数值计算方法.哈尔滨:哈尔滨工业大学出版社,2009
[3]姜健飞,胡良剑,唐俭数值分析及其Matlab试验北京:科学出版社,2004
[4]张德丰 Matlab数值分析与应用北京:国防工业出版社,2007
[5]李庆杨,王能超,易大义数值分析武汉:华中理工大学出版社,1996
[6]关冶,陆金甫,数值分析基础,北京,高等教育出版社,1998
[7]张善文,雷英杰,冯有前,MATALAB在时间序列分析中的应用,西安科大出版社 2007
[8]蔡大用,白峰杉,高等数值分析,北京,清华大学出版社,1997。