列主元消去法解方程组实验报告

  • 格式:docx
  • 大小:44.84 KB
  • 文档页数:11

下载文档原格式

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

实验名称:列主元消去法解方程组

1引言

我们知道,高斯消去法是一个古老的解线性方程组的方法。而在用高斯消去法解Ax=b 时,其中设A为非奇异矩阵,可能出现a kk)0的情况,这时必须进行带行交换的高斯消去法。但在实际计算中即使a kk)0但其绝对值很小时,用a;:〉作除数,会导致中间结果矩阵A(k)元素数量级严重增长和舍入误差的扩散,使得最后的结果不可靠。因此,小主元可能导致计算的失败,我们应该避免采用绝对值很小的主元素。为此,我们在高斯消去法的每一步应该在系数矩阵或消元后的低阶矩阵中选取绝对值最大的元素作为主元素,保持乘数1,以便减少计算过程中舍入误差对计算解的影响。

一种方式是完全主元消去法,这种消去法是在每次选主元时,选择a(二k max a j k)0

kJ k k in」

k j n

为主元素。这种方法是解低阶稠密矩阵方程组的有效方法,但这种方法在选取主元时要花费一定的计算机时间。实际计算中我们常采用部分选主元的的消去法。列主元消去法即在每次

选主元时,仅依次按列选取绝对值最大的元素作为主元素,且仅交换两行,再进行消元计算

2实验目的和要求

运用matlab编写一个.m文件,要求用列主元消去法求解方程组(实现PA=L)

111111

2 11111

3 2 1111

4 3 2 1 1 1

5 4 3 2 1 1

6 5 4 3 2 1

7 6 5 4 3 2 要求输出以下内容:

(1) 计算解x;

x.

117 1x28 1x310 1x413 1x517

1

x6

22 128 x 7

(2) L,U ;

(3) 整形数组IP (i ) (i=1,2,…,n-1 )(记录主行信息)

3算法原理与流程图

(1) 算法原理

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

an a12L L a1n M bi

a21a22L L a2n M b2

[代口

M

M M M

a i1

M M M M

a n1a n2L L a nn M

b n

第1步(k=1):首先在A的第一列中选取绝对值最大的元素a^,作为第一步的主元素3in max

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

1 1 i n

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

J1) c ⑴

an ai2

L a(k)a1(n)M

L (2)⑵

M

a22a2k a2n b2()

O M M M [A,b] [A(k),b(k)]a kk)L a kk)M.(k)bk

a k k)u a k k)1,n M(k)

d 1

M M M M

a nk)L a(k)叫

n

M

第k步计算如下:

对于k=1,2,…,n-1

(1)按列选主元:即确定ik使

时max无0

(2) 如果a ik,k 0,则A为非奇异矩阵,停止计算

(3) 如果ik 丰k ,则交换[A , b]第ik 行与第k 行元素。 (4) 消元计算

(5) 回代求解

(3)

4程序代码及注释

for k=1:n-1

a ik

E ik

电,(i

a kk

1L ,n)

a j

b E k a

kj ,

mb.

(i ,j (i

k 1,L ,n)

k 1,L ,n)

消元乘数m ik 满足: E ik

a ik a kk

1,(i k 1,L ,n)

0 / a nn

(当 a

nn

b

(b i

j b n

n a ij b j ) / a ii ,

I

i 1

0) n 1,K ,2,1

计算解(X 1,L ,X n )在常数项 b(n)内得至叽

(2)

流程图见图1

IP(k)=k;

if i

elseif i==j

L(i,j)=1; U(i,j)=A(i,j);

else

L(i,j)=A(i,j);

end

end

end

end

输入n, A , b,£

det=1.0

k=1,2,…,n-1

输出det( A) 0

按列选主元a k ,k max k i n a ik0

c0= a ik ,k

停机

(I

(j

c0|<

Y

ik=k

换行

a kj a ik ,j (j

k, L , n)

b k b ik,det det

消元计算

k+1,L

a ij

k+1,L

det

回代求解

b n

det

(b

a nn

a nn(当a nn0)

nn nn

n

a^ b j)/ a i ,I 1,2, L n

j i 1

* det

输岀计算解及行列式值b

(I)( I=1,2,…,n)及det

,n)

,n)

停机

,a ik

* a kj

,b i

a kk det

a ik / a kk

6

附图1