Gauss消元法解解线性方程组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要

本文叙述了Gauss 顺序消元法解线性方程的算法思想以及其求解过程,同时简要叙述了Gauss 主元素消元法以及Gauss 全主元消元法。紧接着给出了

Gauss Seidel -迭代法的算法思想,本文给出了这三个消元方法以及一个迭代法的算法流程图,由于全主元消元法是前两个算法的基础上改进而来,故本文采用第三种方法进行编程计算,前两种方法不再重复编程,然后给出一个实例的计算结果,运行时间,在文章最后分析该实例的计算结果,针对同一实例,又采用

Gauss Seidel -方法编程实现,然后对结果进行分析和对比。最后给出了本人在编程时遇到的一些问题和解决办法。

关键词:Gauss 顺序消元法 Gauss 主元素消元法 Gauss 全主元消元法

一、算法的简要描述

1.1Gauss 顺序消元法

Gauss 消元法在中学里已经学习过,其方法实质,就是运用初等变换,将线性方程组Ax b =转化为同解的上三角矩阵方程组

1Ux L b -=

(1.1.1)

其中,U 为上三角矩阵,L 为下三角矩阵。然后对式(1.1.1)进行回代求解,即得方程组的解。手算的过程是非常清楚的,现在需回答的是计算机求解,如何实现上述计算过程。

设线性方程组为

1111221331121122223322

112233n n n n n n n nn n n

a x a x a x a x

b a x a x a x a x b a x a x a x a x b +++⋅⋅⋅+=⎧⎪+++⋅⋅⋅+=⎪⎨

⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⎪

⎪+++⋅⋅⋅+=⎩ 写成矩阵形式为

1112111212222221222m m m n n a a a x b a

a a x

b a a a x b ⎡⎤⎡⎤⎡⎤

⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢

⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦

(1.1.2)

设线性方程组如上式所示,记(1)A A =,(1)b b =,与是增广矩阵具有形式

(1)

(1)[][]A b A b =,此时方程组为(1)(1)A x b =。

第一次消元。设(1)

110a ≠,为将第二个方程至第n 个方程的1x 系数(1)1i a 消成零,

构造乘数

(1)1

1(1)11

i i a l a = (2,3,,)i n =

用1i l -乘以矩阵(1)[A

b ](1)

的第一行加到第i 行上(2,3,,)i n =得

(1)(1)

(1)(1)(1)11121311(2)(2)(2)(2)(2)222322

(2)(2)

(2)(2)23

[A

b ]0

n n

n n nn

n a a a a b a a a b a a a b ⎡⎤

⎢⎥⎢

⎥=⎢⎥⎢⎥⎢⎥⎣⎦

(2)

其中,

(2)(1)

(1)11(2)(1)(1)11

a a (,2,3,,)

(,2,3,,)

ij ij i j i i i l a i j n b b l b i j n ⎧=-=⎨=-=⎩

假设经过1k -次消元得同解方程组()()k k A x b =,此时

(1)(1)

(1)(1)(1)11121311(2)(2)(2)(2)k ()22

23

22

()()()()()n

k n

k k kn k k k k nk

nn

n a a a a b a a a b A b a b a a b ⎡⎤⎢⎥⎢⎥⎡⎤=⎣

⎦⎢

⎥⎢⎥⎢⎥⎣

() (1.1.3) 假若()

0k kk

a ≠,则第k 次消元如下:构造乘数 ()

()

(1,,)k ik

ik k kk

a l i k n a ==+

用ik l -乘以矩阵()

()k k A b ⎡⎤⎣

⎦第k 行加到第i 行上(1,

,)i k n =+得同解方程

组(1)(1)k k A x b ++=,其中,(1)(1)[]k k A b ++中的元素计算公式为

(1)()()(1)

()()a a (,2,3,,)

(,2,3,,)

k k k ij ij ik kj k k k i

i ik k l a i j n b b l b i j n ++⎧=-=⎨=-=⎩

如此进行1n -次消元,即1,2,,1k n =-,最后得同解方程组

()()n n A x b =

其中,

(1)

(1)

(1)(1)(1)11121311(2)(2)(2)(2)()()k ()22

23

22

()()n

n n k n

n n nn

n a a a a b a a a b A x b A b a b ⎡⎤⎢⎥⎢⎥⎡⎤==⎣

⎦⎢⎥⎢⎥⎢⎥⎣

()

假若()

0n nn

a ≠,对式(3.1.3)进行回代计算得方程组的解

()

()()()1/()/(1,2,1)

n n n nn n i i i i i ij j ii

j i x b a x b a x a i n =+⎧=⎪⎨=-=-⎪⎩

上述全过程称为Gauss 顺序消元法。

1.2Gauss 主元素消元法

Gauss 顺序消元法每一步总有一个要求()

0k kk

a ≠,否则算法就失败。然而从方程组的理论,只要det()0A ≠,则方程组解存在且唯一。由此可知,Gauss 顺序

消元法可执行条件苛刻。不仅如此,从数值计算角度,当()0k kk a ≠,但()

k kk a 很小时。用()

k kk a 做分母运算,会引起误差界的放大,数值不稳定现象产生,严重时导

致解失真。为克服这一缺点,常采用选主元的消元法。

Gauss 列主元消元法主要依据线性方程组任意交换两个方程的次序,方程组的同解性不变,且解的分量次序也不变。于是,第k 步在顺序消元法进行之前,

从()k A 的第k 列元素()k kk a ,()

1k k k a +,

,()

k nk a 中选取绝对值最大者,并记录所在行,

()()

max k k k i k ik

k i n

a a ≤≤=,记k l i = 如果l k ≠,则交换矩阵()

()k k A b ⎡⎤⎣⎦的第k 行与第l 行所有对应的元素,然后,再

进行第k 步顺序消元法。

1.3Gauss 全主元消元法

Gauss 全主元消元法是在Gauss 列主元消元法的基础上进一步改进,目的是更好的提高数值稳定性和解的精度。对那些矩阵性态不太理想的方程组能给出最大可能性的满意解。

全主元算法的第k 步是从()

(,1,

,)k ij a i k k n =+中选取绝对值最大者作为主元,

并记录主元所在列与所在行,即

()()

,max k k k k i j ij k i j n

a a ≤≤=,记,k k l i t j ==

如果l k ≠,则交换矩阵()

()k k A b ⎡⎤⎣⎦的第k 行与第l 行所有对应的元素;

如果t k ≠,则交换矩阵()()k k A b ⎡⎤⎣

⎦的第k 行与第t 列所有对应的元素。值得注意的是,进行

行元素的交换,解的分量次序不变,但是进行列元素交换时,解的分量次序将有所改变。

1.4 Gauss Seidel -迭代法

将方程组Ax b =改写成等价方程组

相关文档
最新文档