列主元高斯消去法和列主元三角分解法解线性方程

  • 格式:doc
  • 大小:508.00 KB
  • 文档页数:16

下载文档原格式

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

计算方法实验报告1

【课题名称】

用列主元高斯消去法和列主元三角分解法解线性方程

【目的和意义】

高斯消去法是一个古老的求解线性方程组的方法,但由它改进得到的选主元的高斯消去法则是目前计算机上常用的解低阶稠密矩阵方程组的有效方法。

用高斯消去法解线性方程组的基本思想时用矩阵行的初等变换将系数矩阵A 约化为具有简单形式的矩阵(上三角矩阵、单位矩阵等),而三角形方程组则可以直接回带求解 用高斯消去法解线性方程组b Ax =(其中A ∈Rn ×n )的计算量为:乘除法运算步骤为

32(1)(1)(21)(1)(1)262233n n n n n n n n n n n

MD n ----+=

+++=+-,加减运算步骤为

(1)(21)(1)(1)(1)(25)

6226n n n n n n n n n n AS -----+=

++=

。相比之下,传统的克莱姆

法则则较为繁琐,如求解20阶线性方程组,克莱姆法则大约要19

510⨯次乘法,而用高斯消

去法只需要3060次乘除法。

在高斯消去法运算的过程中,如果出现abs(A(i,i))等于零或过小的情况,则会导致矩阵元素数量级严重增长和舍入误差的扩散,使得最后的计算结果不可靠,所以目前计算机上常用的解低阶稠密矩阵方程的快速有效的方法时列主元高斯消去法,从而使计算结果更加精确。

2、列主元三角分解法

高斯消去法的消去过程,实质上是将A 分解为两个三角矩阵的乘积A=LU ,并求解Ly=b 的过程。回带过程就是求解上三角方程组Ux=y 。所以在实际的运算中,矩阵L 和U 可以直接计算出,而不需要任何中间步骤,从而在计算过程中将高斯消去法的步骤进行了进一步的简略,大大提高了运算速度,这就是三角分解法

采用选主元的方式与列主元高斯消去法一样,也是为了避免除数过小,从而保证了计算的精确度

【计算公式】 1、 列主元高斯消去法

设有线性方程组Ax=b ,其中设A 为非奇异矩阵。方程组的增广矩阵为

第1步(k=1):首先在A 的第一列中选取绝对值最大的元素1

l a ,作为第一步的主元素:

然后交换(A ,b )的第1行与第l 行元素,再进行消元计算。

设列主元素消去法已经完成第1步到第k-1步的按列选主元,交换两行,消元计算得到与原方程组等价的方程组 A(k)x=b(k)

第k 步计算如下: 对于k=1,2,…,n-1 (1)按列选主元:即确定t 使

(2)如果t ≠k ,则交换[A ,b]第t 行与第k 行元素。 (3)消元计算

1112112122

221

12[,]n n

n l n nn

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

⎢⎥⎢⎥⎢

⎥=⎢

⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦

a b 111max 0

l i i n

a a ≤≤=≠(1)(1)

(1)(1)(1)1112111(2)(2)(2)(2)22

222()(()1)()

()()

()()1,1()(,)

()[,][,] k k k

k nk

k

n

k

n k k k k k kk kn k k k k n k k k n nn a a a a b a a a b a a b a b b a a a +++⎡⎤

⎢⎥⎢⎥

⎢⎥⎢⎥→=⎢

⎥⎢⎥⎢⎥

⎢⎥⎢⎥⎢⎥⎣

A b A b ()()max 0

k k tk ik k i n

a a ≤≤=≠,(1,,)

ik

ik ik kk

a a m i k n a ←=-

=+, (,1,,), (1,,)

ij ij ik kj i i ik k a a m a i j k n b b m b i k n ←+=+⎧⎨

←+=+⎩

消元乘数mik 满足:

(4)回代求解

2、 列主元三角分解法

对方程组的增广矩阵 经过k-1步分解后,可变成如下形式:

第k 步分解,为了避免用绝对值很小的数kk u 作除数,引进量 11

1

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

k kj

kj km mj m k ik ik im mk kk

m u a l u j k k n k n l a l u u i k k n k n -=-=⎧=-=+=⎪⎪⎨⎪=-=++=⎪⎩∑∑

1

1(,1,

,)

k i ik im mk m s a l u i k k n -==-=+∑,于是有

kk u =

k

s 。如果 ,则将矩阵的第t 行与第k 行元素互换,将(i ,j )位置的新元素仍记为jj

l 或

jj

a ,然后再做第k 步分解,这

【列主元高斯消去法程序流程图】

⎪⎪⎩

⎪⎪⎨⎧

--=-←

←∑+=)1,,2,1(,)(1

n n i a x a b x a b x ii n i j j ij i i nn

n n [,]

A A b =11

12

1,11111222,122221,11,1,1,21

1,11,212

1,11

2,112,1k k k k k k k j n k k j n k k k i i i k n n kk

kj

kn

k ik ij in i nk nj k k k j k n n nn k k n a a a b A a u u u u u u y l l l l l l l l l l l u u u u u y u u u u y a a b a a b l a -------------⎡→⎣⎤

⎢⎥⎢⎥⎢⎥⎢

⎥⎢⎥⎢⎥⎢⎥⎢

⎥⎢⎥⎢⎥⎢

⎥⎢⎥⎦

max t i k i n

s s ≤≤= ()/ 1,2,,)1 (1,2,,),kk k k t ik

i k ik u s s s l s s i k k n l i k k n ===++≤=++即交换前的,(且