搜档网
当前位置:搜档网 › 线性代数方程组数值解法及MATLAB实现综述汇总

线性代数方程组数值解法及MATLAB实现综述汇总

线性代数方程组数值解法及MATLAB实现综述汇总
线性代数方程组数值解法及MATLAB实现综述汇总

线性代数方程组数值解法及MATLAB 实现综述

廖淑芳 20122090 数计学院 12计算机科学与技术1班(职教本科) 一、分析课题

随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。

直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。

迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。迭代法包括Jacobi 法SOR 法、SSOR 法等多种方法。

二、研究课题-线性代数方程组数值解法 一、 直接法 1、 Gauss 消元法

通过一系列的加减消元运算,也就是代数中的加减消去法,以使A 对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x 向量。

1.1消元过程

1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。

1112112122

2212n n n n nn n a a a b a a a b a a a b ?? ? ? ? ??? (1)(1)(1)

(1)111213

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

)

222322(3)(3)(3)

3333()()000000n n n n n nn n a a a a b a a a b a a b a b ?? ? ? ? ? ? ??? 步骤如下:

第一步:1

11

1,2,,i a i i n a -?

+=第行第行

1112112122221

2

n n n n nn

n a a a b a a a b a a a b ?? ? ?

? ???

111211

(2)(2)

(

2)

222

2(2)(2)

(

2)

2

00n n n n n

n a a a b a a b a a b ?? ? ? ? ??? 第二步:(2)2

(2)22

2,3,

,i a i i n a -?+=第行第行

111211(2)(2)(2)22

22

(2)(2)

(2)200

n n

n nn

n a a a b a

a

b a a b ?? ? ? ? ???

111213

1

1

(2)(2)(2)

(2

)

222322(3)(3)(3)33

33

(3)

(3)(3)

3

00000n

n n n nn n a a a a b a a a b a

a b a a b ?? ?

? ? ? ? ??

? 类似的做下去,我们有:

第k 步:()()k ,1,

,k ik

k kk

a i i k n a -?+=+第行第行。

n -1步以后,我们可以得到变换后的矩阵为:

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

(3)(3)(3)3333()()000000n n n

n n nn n a a a a b a a a b a a b a b ??

?

? ? ?

? ??

?

注意到,计算过程中()

k kk a 处在被除的位置,因此整个计算过程要保证它不为0。 所以,Gauss 消元法的可行条件为:()0k kk a ≠。

就是要求A 的所有顺序主子式均不为0,即

11

11

det 0,1,,i i ii a a i n a a ?? ?

≠= ? ???

因此,有些有解的问题,不能用Gauss 消元求解。

另外,如果某个()

k kk a 很小的话,会引入大的误差。

例 用Gauss 消去法解方程组:

(1)1234123341518311151111631112x x x x -?????? ? ? ?---- ? ? ?= ? ? ? ? ? ?

-????

?? (1)对增广矩阵进行初等变换

122133144

3

()21

()121

()4

123

34153715123341505

22218311155321911116044343111277

70

0444E E E E E E E E E +→-+→-+→-??

??-? ?- ? ?---- ? ??→ ? ? ? ?

?-?? ?-- ??

?

233244344

5

()6

77()()6

11

123341233

4151537370505151522222211

29

11

290

00

0111136367357910000

003633E E E E E E E E E +→+→-+→--????

?

? ? ?-- ? ? ? ?→→ ? ?

?

? ?

?

? ??

??

?

得等价方程组

12342343441233415

3715

52221129

1136

910

33x x x x x x x x x x -++=??

?-++=??

?+=??

?=??

回代得40x =,33x =,22x =,11x =。

第一步:将(1)/3使x 1的系数化为1,再将(2)、(3)式中x 1的系数都化为零,即由(2)-2×(1)(1)得

)

1(321)1( (231)

32=++x x x )1(32)2( (03)

4

32=+x x

由(3)-4×(1)(1)得

第二步:将(2)(1)除以2/3,使x

2

系数化为1,得

再将(3)(1)式中x

2

系数化为零,由(3)(1)-(-14/3)*(2)(2),得

第三步:将(3)(2)除以18/3,使x

3

系数化为1,得

经消元后,得到如下三角代数方程组:

1.2回代过程

由(3)(3)得 x

3=1,将x

3

代入(2)(2)得x

2

=-2,将x

2

、x

3

代入(1)(1)得x

2

=1,

所以,本题解为[x]=[1,2,-1]T

1.3高斯消元的公式

综合以上讨论,不难看出,高斯消元法解方程组的公式为第一步,消元

(1)令

a

ij (1) = a

ij

, (i,j=1,2,3,…,n)

b

i (1) =b

i

, (i=1,2,3,…,n)

(2)对k=1到n-1,若a

kk

(k)≠0,进行

l ik = a

ik

(k) / a

kk

(k) , (i=k+1,k+2,…,n)

a ij (k+1) = a

ij

(k) - l

ik

* a

kj

(k), (i,j= k+1,k+2,…,n)

b i (k+1) = b

i

(k) - l

ik

* b

k

(k), (i= k+1,k+2,…,n)

第二步,回代

若a

nn

(n) ≠ 0

x n = b

n

(n) / a

nn

(n)

x i = (b

i

(i) – sgm(a

ij

(i) * x

j

)/- a

ii

(i) ,(i = n-1,n-2,…,1),( j =

)1(

3

2

)3(

......

6

3

10

3

14

-

=

-

-x

x

)2(

3

2

)2(

......

2=

+x

x

)2(

3

)3(

......

6

3

18

-

=

x

)3(

3

)3(

......

1

-

=

x

i+1,i+2,…,n )

2 、LU分解法

求解线性代数方程组除了高斯消元法外,还常用LU分解法(三角形分解法)。LU分解法的优点是当方程组左端系数矩阵不变,仅仅是方程组右端列向量改变,即外加激励信号变化时,能够方便地求解方程组。矩阵的三角分解法可分为直接三角分解法,列主元三角分解法,平方根法,三对角方程组的追赶法。下面讨论直接三角分解法。

设n阶线性方程组Ax=b 。假设能将方程组左端系数矩阵A,分解成两个三角阵的乘积,即A=LU ,式中,L为主对角线以上的元素均为零的下三角矩阵, 且主对角线元素均为1的上三角矩阵;U为主对角线以下的元素均为零

所以有,LUx=b 令 Ux=y,则 Ly=b

由A=LU,由矩阵的乘法公式: a

1j = u

1j

, j=1,2,…,n

a i1 = l

i1

u

11

, i=1,2,…,n

推出 u

1j = a

1j

, j=1,2,…,n

l i1 = a

i1

/u

11

, i=1,2,…,n

这样就定出了U的第一行元素和L的第一列元素。

设已定出了U的前k-1行和L的前k-1列,现在确定U的第k行和L的第k列。由矩阵乘法:

当r>k时,l

kr =0, 且l

kk

=1,因为

=

=

n

r

rj

kr

kj

u

l

a

1

=

+

=

n

r

rj

kr

kj

kj

u

l

u

a

1

所以,

同理可推出计算L 的第k 列的公式: 因此得到如下算法——杜利特(Doolittle )算法:

(1)将矩阵分解为A=LU,对k=1,2,…,n ;j=k,k+1,…n ; i=k,k+1,…n ;

公式1

(2)解L y =b

(3)解U x =y

对大规模稀疏问题,如果能够通过调整方程及未知量的顺序使得方程组的系数矩阵成带状结构,则对系数矩阵使用通常的LU 分解,可以保障单位下三角矩阵L 及上三角矩阵U 仍为带状结构.

3、直接三角分解法

Gauss 消去法还有许多变形,有些变形是为了利用特殊技巧减少误差,把Gauss 消去法改写为更紧凑的形式,还有一些变形时根据某类矩阵的特性作一些修正和简化,这些方法可统称为直接三角分解法。

矩阵的三角分解

设A 的顺序主子式0(1,2,

,)k k n ?≠=,

则可建立线性方程组Ax b =的Gauss 消去法与矩阵分解的关系,即矩阵A 的LU 分解。这个问题前面已经讲的比较详

∑=+=-=n

r rj

kr kj kj n

k k j u l a u 1

,...,1,∑=+=-=n

r kk

rj kr ik ik

n

k k i u u l a l 1

,...,1,/)(∑-==-=1

1

,...,2,1:2k r r

kr k k n

k y l b y 公式∑+=-=-

=n

k r kk

r

kr k k n n k u x u

y x 1

1

,...,1,/)(3:公式???

?

?

?

???

=-=-=∑∑==1/)(u 11

kk kk

n

r rj ky ik jk n

r yj

ki kj ki l u u l a l u l a

细了,此处不再赘述。

Doolittle 分解法

首先假设A 的顺序主子式k ?都不为零,则A 可作Doolittle 分解,即

A LU =,其中L 是单位下三角阵,有1ii l =,i j <时0ij l =;U 是上三角阵,i j

>时0ij u =。仔细写出为

1112111121212222122

21

2

12

11

1n n n n n n nn n n nn a a a u u u a a a l u u A LU a a a l l u ?????? ?

??

? ? ???

=== ? ??? ?

????????

?

(2.11) 在前面逐步推导L 和U 的元素公式都要借助于有关的()

k ij a 来表示。现在强调

指出,只要从给定的A 通过比较(2.11)式的两边就可能逐步地把L 和U 构造出来,而不必利用Gauss 消去法的中间结果,这种方法称为Gauss 消去法的紧凑格式。

根据矩阵的乘法规则,比较(2.11)式的两边可得

min(,)

1

i j ij ik kj k a l u ==

,,1,2,

,i j n = (2.12)

先算出U 的第1行,在(2.12)令1i =,由111l =,10(1)j l j n =<≤可得

11j j u a =,1,2,

,j n =

接着在(2.12)中令1j =,由1111i i a l u =?,从而算出L 的第1列

1111111//i i i l a u a a ==,2,

,i n =

若U 的第1至1k -行和L 的第1至1k -列已经算出,则由(2.12)可计算出

U 的第k 行元素

1

1

k kj kj kr rj r u a l u -==-∑,,1,

,j k k n =+ (2.13)

接着再计算出L 的第k 列元素

1

1

k ik ir rk

r ik kk

a l u l u -=-=

∑,1,,j k n =+ (2.14)

解方程组Ax b =就化为求解LUx b =,分两步求解。第一步解Ly b =,其中L 为下三角阵,只要用逐次向前代入的方法;第二步解Ux y =,其中U 为上三角阵,用逐次向后代入方法即可解除x 。

例 用Doolittle 方法求解:

12346

2

1

1624101114151

0135x x x x -?????? ? ? ?

- ? ? ?

= ? ? ?- ? ? ?

---?????? 解:第1步算出L 和U :

111311

16

5119

1610

37L ?? ? ? ? ?=

? ? ?-

- ???,621

1102133337910

1019174U -??

?

? ? ?=-

? ? ?

??

?

第2步解Ly b =得:

231916,3,,574T

y ?

?=- ??

?

第3步解Ux y =得:

(1,1,1,1)T x =--

二、 迭代法

迭代法具有的特点是速度快。与非线性方程的迭代方法一样,需要我们构造一个等价的方程,从而构造一个收敛序列,序列的极限值就是方程组的根。 对方程组:Ax b =做等价变换:x Gx g =+ 如:令A M N =-,则

11()Ax b M N x b Mx b Nx x M Nx M b --=?-=?=+?=+

则,我们可以构造序列(1)() k k x G x g +=+

若()*k x x →* **x G x g Ax b ?=+?= 则,我们可以构造序列(1)() k k x G x g +=+ 若()*k x x →* **x G x g Ax b ?=+?= 同时:(1)()()**(*)k k k x x Gx Gx G x x +-=-=-

1(0)(*)k G x x +=

=-

所以,序列收敛0k G ?→ 与初值的选取无关 1. Jacobi 迭代

11111

11

n n n nn n n

a x a x

b a x a x b ++=???

?++=

?

11221111

2

211233122211 111()

1() 1()

n n n n n n n n n n nn x a x a x b a x a x a x a x b a x a x a x b a ---?=++-??

-?=+++-?????

-?=++-?

?

(1)()()11221111(1)()()()22112331222(1)()()11 111()1() 1()k k k n n k k k k n n

k k k n n n n n n nn x a x a x b a x a x a x a x b a x a x a x b a +++---?=++-??

-?=+++-?∴???

-?=++-?

?

格式很简单:

1(1)

()

()11

1()i n

k k k i

ij j ij j i j j i ii x a x a x b a -+==+-=+-∑∑ 迭代矩阵

记A D L U =--

1100nn a D a ?? ?=

? ???

211

1

00

00n nn a L a a -?? ?- ?

?= ? ? ?--?

? 121100000n n n a a U a ---??

?

? ?= ?

-

?

??

?

易知,Jacobi 迭代有

()D L U x b --= ()Dx L U x b =++

11()x D L U x D b --=++

11100 B () , D L U I D A f D b ---∴=+=-=,0B 是简单迭代的迭代矩阵。 看上述公式和过程很抽象,我们来举个简单例子:

1111221331

21122223323113223333

a x a x a x

b a x a x a x b a x a x a x b ++=??

++=??++=? (0ii a ≠) 1

112213311

2221123322

33311322331()1()1

()x b a x a x a x b a x a x a x b a x a x a ?=--???=--???=--??

得上述变换的方程后,我们任取一向量(0)(0)(0)(0)123(,,)T

x x x x =作初始近似,代入, (1)(1)(1)(1)()()()()123123(,,),

,(,,)T m m m m T

x x x x x x x x ==

假设上述方程的准确解是123(,,)T a a a a =

那么如果lim ,m m x a →∞

=?我们就说上述迭代是收敛的。

2. Gauss -Seidel 迭代

在Gauss -Seidel 迭代中,使用最新计算出的分量值

(1)()()11221111(1)(1)()()2

2112331222(1)(1)(1)11 111()1

() 1()k k k n n k k k k n n k k k n n n n n n nn x a x a x b a x a x a x a x b a x a x a x b a ++++++---?=++-??

-?=+++-?∴???

-?=++-?

?

1(1)

(1)()11

1()i n

k k k i

ij j ij j i j j i ii x a x a x b a -++==+-=+-∑∑ 易知,Gauss -Seidel 迭代有

()D L U x b --= ()Dx L U x b =++

11()x D L U x D b --=++

1110 () , G D L U I D A g D b ---∴=+=-=,0G 是简单迭代的迭代矩阵。 二种方法都存在收敛性问题。 收敛条件

迭代格式收敛的充要条件是B

G

的谱半径<1。

有例子表明:Gauss-Seidel 法收敛时,Jacobi 法可能不收敛;而Jacobi 法收敛时, Gauss-Seidel 法也可能不收敛。

若为严格对角占优的话则是收敛的,如130.10.51

20.0250.3110.030.142

?

??? ? ?

? ? ? ? ?????

, 假如方程组不满足收敛,有时候对其进行变换,可以改变收敛性。 如求下述方程组的解:

(0)1807109,8,(0,0,0)9117T A b x -????

? ?

=-== ? ? ? ?--????

9117180,71098A b --???? ? ?=-= ? ? ? ?-????

格式

(1)()()

123(1)

(1)1

1(1)(1)1

11/9(7)1/8(7)1/9(8)

k k k k k k k x x x x x x x +++++?=++?=+??=+? 结果

(1)(2)(3)

(4)(0.7778,0.9722,0.9753)(0.9942,0.9993,0.9994)(0.9999,0.9999,0.9999)

(1.0000,1.0000,1.0000)T T T

T

x x x

x ====

0()1B ρ<,G ρ

()<1也满足收敛。 如122111221A --??

?=-- ? ?-??

Jacobi ,0B 的特征方程为221

102

2

λ

λ

λ

---=-

解得1230λλλ===,所以用Jacobi 迭代法收敛。

Gauss-Seidel ,0G 的特征方程为22

1022λλ

λλλλ

---=--

解得1230,22λλλ==-=-

0()21B ρ=->, 所以Gauss-Seidel 迭代法是不收敛的。

3. 松弛迭代 记()(1)()k k k x x x +?=- 则(1)()()k k k x x x +=+?

可以看作在前一步上加一个修正量。若在修正量前乘以一个因子ω,有

(1)()()k k k x x x ω+=+?

(1)()(1)()()k k k k x x x x ω++=+-

对Gauss -Seidel 迭代格式(1)1(1)()()k k k x D Lx Ux b +-+=++

(1)()1(1)1()1()()k k k k k x x D Lx D Ux D b x ω+-+--=+++- (1)()1(1)1()1(1)()k k k k x x D Lx D Ux D b ωω+-+--=-+++

写成分量形式,有

(1)()()()

111221111(1)()

()()()22

2112331222(1)()()()

11 111(1)()(1)()1(1)()k k k k n n k k k k k n n k k k k n n n n n n n nn x x a x a x b a x x a x a x a x b a x x a x a x b a ωωωωωω+++---?=-+++-??

?=--+++-??

??

-?=-+++-?

?

关于直接法和迭代法的例题: 1用选主元三角分解法求解下列方程组

1234123

1234123433246

2421022431742268x x x x x x x x x x x x x x x +++=??++=??

+++=??+++=? 1234332462420102243174

2268x x x x ?????? ? ? ? ? ? ?= ? ? ?

? ? ??????? 3

3

2462

420102243174

22

68??

?

?

?

???

列主 4226

84

2268422681131363

136222420108111130131112243172233

3

324

633113

100

13422242??????

?

?-- ? ?

? ?

? ?→→ ?- ?

? ? ? ??? ? ?

--????

这里100042268110003132

6,,1

1810001112333310001014

2L U y ??

???? ?

? ? ?- ? ? ?=== ?

?- ? ? ? ? ?-?? ?????

再通过Ux y =,得x 的解。

123424233x x x x ???? ? ?- ? ?= ? ? ? ?-??

?? 2用Jacobi 迭代法求解下列方程组,并且使精度为310-。

1234

0.240.0880.0930.1590.040.08420x x x -?????? ??? ?-= ???

? ??? ?-??????以4,3,4分别除3方程两边 12310.060.0220.0310.0530.010.0215x x x -?????? ??? ?-= ??? ? ??? ?-?????? 即11223300.060.0220.03

00.0530.010.0205x x x x x x -???????? ? ??? ?

=-+ ? ??? ? ? ??? ?-????????

有Jacobi 迭代式123()

(1)1(1)()2(1)()300.060.0220.0300.0530.010.0205m m m m m m x x x x x x +++????-???? ? ? ? ?=-+ ? ? ? ? ? ? ? ? ?-????

???? 可证明此迭代格式是收敛的,极限值即为解。

40.240.080.060.020.0930.150.030.050.040.0840.010.02λ

λλλλλ--???? ? ?-→- ? ? ? ?--????

22

20.06

0.02

0.0018

0.050.0006

0(0.06)(30.010.0009)00

3(0.0018)λλλλ

λλλλλ?? ?- ? ?-+→- ? ?++- ?

?-?

?

解得1230.06,λλλ=-=

=由此可知,用Jacobi 迭代法是收敛的。 取(0)(2,3,5)T x =为初始值,迭代得,

23(1)1(1)(1)00.060.0222 1.920.03

00.0533 3.190.010.02055 5.04x x x ??-????????

?

??? ? ?=-+= ? ??? ? ? ? ??? ? ? ?-??????????

23(2)1(2)(2)00.060.02 1.922 1.9090.03

00.05 3.193 3.1940.010.020 5.045 5.045x x x ??-???????? ?

??? ? ?=-+= ? ??? ? ? ? ??? ? ? ?-?

???????

??…

其实23(3)1(3)(3)00.060.02 1.9092 1.9090.0300.05 3.1943 3.1940.010.020 5.0455 5.045x x x ??-????????

? ??? ? ?=-+= ? ??? ? ? ? ??? ? ? ?-?????????? 即在310-内,(3)(2)x x =,可以停止计算了。所以(3)x 即为近似解。

分析:此题题目可以直接说是解方程组,然后求解过程我们可以先验算Jacobi 和Gauss -Seidel 迭代的收敛情况,再选择算法,一般来说Gauss -Seidel 迭代要比Jacobi 迭代快。

三、用Matlab 软件求解线性方程组 一。高斯消去法 1.顺序高斯消去法 直接编写命令文件 a=[] d=[]'

[n,n]=size(a); c=n+1 a(:,c)=d; for k=1:n-1

a(k+1:n, k:c)=a(k+1:n, k:c)-(a(k+1:n,k)/ a(k,k))*a(k, k:c); 消去 end

x=[0 0 0 0]' 回带 x(n)=a(n,c)/a(n,n); for g=n-1:-1:1

x(g)=(a(g,c)-a(g,g+1:n)*x(g+1:n))/a(g,g) end

2.列主高斯消去法

*由于“[r,m]=max(abs(a(k:n,k)))”返回的行是“k:n,k”内的第几行,所以要通过修正来把m 改成真正的行的值。该程序只是演示程序,真正机器计算不需要算主元素所在列以下各行应为零的值。

直接编写命令文件

a=[]

d=[] '

[n,n]=size(a);

c=n+1

a(:,c)=d; (增广) for k=1:n-1

[r,m]=max(abs(a(k:n,k))); 选主m=m+k-1; (修正操作行的值)

if(a(m,k)~=0)

if(m~=k)

a([k m],:)=a([m k],:); 换行end

a(k+1:n, k:c)=a(k+1:n, k:c)-(a(k+1:n,k)/ a(k,k))*a(k,

k:c); %消去

end

end

x=[0 0 0 0]' 回带

x(n)=a(n,c)/a(n,n);

for g=n-1:-1:1

x(g)=(a(g,c)-a(g,g+1:n)*x(g+1:n))/a(g,g)

end

二迭代法

J迭代公式

a=[5 2 1;-1 4 2;2 -3 10]

d=[-12;20;3]

x=[0;0;0]; 初始向量

stop=1.0e-4 迭代的精度

L=-tril(a,-1)

U=-triu(a,1)

D=inv(diag(diag(a)))

X=D*(L+U)*x+D*d; J迭代公式

n=1;

while norm(X-x,inf)>=stop

x=X;

X=D*(L+U)*x+D*d;

n=n+1;

end

X

n

G-S迭代公式

a=[5 2 1;-1 4 2;2 -3 10]

x=[0;0;0]; 初始向量

d=[-12;20;3]

stop=1.0e-4

L=-tril(a,-1)

U=-triu(a,1)

D=(diag(diag(a)))

X=inv(D-L)*U*x+inv(D-L)*d; G-S迭代公式

n=1;

while norm(X-x,inf)>= stop 时迭代中止否则继续x=X;

X=inv(D-L)*U*x+inv(D-L)*d;

n=n+1;

end

X

n

SOR迭代公式

a=[5 2 1;-1 4 2;2 -3 10]

x=[0;0;0]; 初始向量

d=[-12;20;3]

stop=1.0e-4

w=1.44; 松弛因子

L=-tril(a,-1)

U=-triu(a,1)

D=(diag(diag(a)))

X=inv(D-w*L)*((1-w)*D+w*U)*x+w*inv(D-w*L)*d SOR迭代公式

n=1;

while norm(X-x,inf)>=stop 时迭代中止否则继续

x=X;

X=inv(D-w*L)*((1-w)*D+w*U)*x+w*inv(D-w*L)*d;

n=n+1;end

X

n

3. a*x=d a=[5 2 1;-1 4 2;2 -3 10] d=[-12;20;3]

(1)考察用J、G-S及SOR解此方程组的收敛性.

(2)分别用雅可比迭代法、高斯-赛德尔迭代法及逐次超松弛迭代法解此方程组。要求时迭代中止,观察收敛速度。

(1) J迭代矩阵的谱半径:max(abs(eig(D*(L+U))))= 0.506

G-S迭代矩阵的谱半径:max(abs(eig(inv(D-L)*U)))= 0.2000 SOR迭代矩阵的谱半径:

max(abs(eig(inv(D-w*L)*((1-w)*D+w*U))))=0.9756

所以用J、G-S及SOR均收敛(且有)。

(2)

J: X =-4.0000 3.0000 2.0000 n =18

G-S: X =-4.0000 3.0000 2.0000 n =8

SOR(): X =-4.0000 3.0000 2.0000 n =482

分析:可见高斯-赛德尔迭代法要比雅可比迭代公式的收敛速度快。同时,如果超松弛迭代法的选取不当不但不会加速收敛还会对收敛速度造成很恶劣的结果。

四、结论

在科学研究和工程技术中有许多问题可归结为求解线性代数方程组的问题。本文主要讨论了直接法解线性方程组及迭代法解线性方程,讲解了各种直接法,如高斯消元法,三角分解法,追赶法等的基本思想和原理,介绍了病态方程和误差分析,了解了它们各自的优缺点及适用范围。可以通过计算方法进行一种比较完善的构造用计算机进行计算,使之更普遍化,能够有举一反三的思想,利用直接法解线性方程组解决一些实际中难解的问题。

第二章 线性方程组的数值解法

第二章 线性方程组的数值解法 在科技、工程技术、社会经济等各个领域中很多问题常常归结到求解线性方程组。例如电学中的网络问题,样条函数问题,构造求解微分方程的差分格式和工程力学中用有限元方法解连续介质力学问题,以及经济学中求解投入产出模型等都导致求解线性方程组。 n 阶线性方程组的一般形式为 ?? ???? ?=+++=+++=+++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 L K K K K L L 22112 222212********* (1.1) 其矩阵形式为 b Ax = (1.2) 其中 ????? ???????=??? ?????????=? ? ????? ?????= n n nn n n n n b b b b x x x x a a a a a a a a a A M M L K K K K L L 2121212222111211 ),,2,1,(n j i a ij L =,),,2,1(n i b i L =均为实数,i b 不全为0,且A 为非奇异。 关于线性方程组的数值解法一般分为两类: 1.直接法 就是不考虑计算机过程中的舍入误差时,经有限次的四则运算得到方程组准确解的方法。 而实际中由于计算机字长的限制,舍入误差的存在和影响,这种算法也只能求得线性方程组的近似解。本章将阐述这类算法中最基本的消去法及其某些变形。这些方法主要用于求解低阶稠密系数矩阵方程组。 2.迭代法 从某个解的近似值出发,通过构造一个无穷序列,用某种极限过程去逐步逼近线性方程组的精确解的方法。本章主要介绍迭代法与迭代法。迭代法是解大型稀疏矩阵(矩阵阶数高而且零元素较多)的线性方程组的重要方法。 §1 高斯)(Gauss 消去法 1.1 Gauss 消去法 Gauss 消去法是将线性方程组化成等价的三角形方程组求解。首先举例说明Gauss

线性方程组的数值解法实验

线性方程组的数值解法 实验 题目 用Gauss消元法和Seidel迭代法求线性方程组的解。 实验目的 通过本次实验了解Gauss消元法和Seidel迭代法的基本原理,掌握其算法,学会用Matlab编程进行计算,并能用这些方法解决实际问题。 Gauss 顺序消元法的基本原理算法: (1)输入:,. A b (2)对1,2,,1 k n =???-做 1)if0 kk a=then输出算法失败信息,停机; 2)对1,, i k n =+???做 1/; ik ik ik kk a l a a ←= 2; i i ik k b b l b =- 3对1,, j k n =+???做; ij ij ik kj a a l a =- (3)if0 nn a=then输出算法失败信息,并停机else做 1)/; n n n nn b x b a ←= 2)对1,,2,1 i n =-???做 1 ()/; n i i i ij j ii j i b x b a x a =+ ←=-∑ (4)输出方程组的解.X

流程图见附页 Seidel 迭代法的基本原理算法: (1)输入:,; A b (2)输入:初始解向量 ;x (3)对1,2,, i n =???做 1) 1 ()/; n i i ij j ii j j i y b a x a = ≠ =-∑ 2); i i i e y x =- 3); i i x y = (4)if 1 {||} max i i n eε ≤≤ 时方程组无解,当RB RA n ==时方程组有唯一解,当RB RA n =<时,方程组有无穷多解; ②根据公式 (1)()() (1)()() (,1,,) (1,,) k k k ij ij ik kj k k k i i ik k a a l a i j k n b b l b i k n + + =-=+??? =-=+??? 将增广矩阵[,] B A b =化为上三角形矩阵; (2)建立. backsub m文件; (3)调用. backsub m文件,在Matlab命令窗口输入,A b矩阵,再输入[,,,](,) RA RB n X gaus A b =,进行Matlab实现得出方程的解。

线性方程组的解法

线性方程组的解法 1 引言 在科学研究和大型工程设计中出现了越来越多的数学问题,而这些问题往往需要求数值解。在进行数值求解时,经离散后,常常归结为求解形如Ax= b的大型线性方程组。而如插值公式,拟合公式等的建立,微分方程差分格式的构造等,均可归结为求解线性方程组的问题.在工程技术的科学计算中,线性方程组的求解也是最基本的工作之一.因此,线性方程组的解法一直是科学和工程计算中研究最为普遍的问题,它在数值分析中占有极其重要的地位。20世纪50年代至70年代,由于电子计算机的发展,人们开始考虑和研究在计算机上用迭代法求线性方程组Ax =b的近似解,用某种极限过程去逐渐逼近精确解,并发展了许多非常有效的迭代方法,迭代法具有需要计算机存储单元少、程序设计简单、原始系数矩阵在计算过程中始终不变等优点。例如Jacobi方法、Gauss—Seidel 方法、SOR方法、SSOR 方法,这几种迭代方法是最常用的一阶线性定常迭代法。 2 主要算法 20世纪50年代至70年代,人们开始考虑和研究用迭代法求解线性方程组。 Ax = b (1) 的近似解,发展了许多有效的方法,其中有Jacobi方法、Gauss—Seidel方法,SOR方法、SSOR方法,这几种迭代方法均属一阶线性定常迭代法,即若系数矩阵A的一个分裂:A =M-N ;M 为可逆矩阵,线性方程组(1)化为: (M-N)X =b; →M X = NX + b; →X= M -1NX+ M-1b 得到迭代方法的一般公式: X(k+1)=HX(k)+d (2) 其中:H =MN-1,d=M-1b,对任意初始向量X(0) 一阶定常迭代法收敛的充分必要条件是: 迭代矩H的谱半径小于1,即ρ(H) < 1;又因为对于任何矩阵范数恒有ρ(H)≤‖H‖,故又可得到收敛的一个充分条件为:‖H‖< 1。 2.1 Jacobi迭代法 若D为A的对角素构成的对角矩阵,且对角线元素全不为零。系数矩阵A的一个分解:A =

求解线性方程组的直接解法

求解线性方程组的直接解法 5.2LU分解 ① Gauss消去法实现了LU分解 顺序消元结束时的上三角矩阵U和所用的乘数,严格下三角矩阵。 将下三角矩阵的对角元改成1,记为L,则有A=LU, 这事实是一般的,我们不难从消去的第k个元素时的矩阵k行及k列元素的 历史得到这一点.因为从消元的历史有 u kj=a kj-m k1u1j- m k2u2j -…- m k,k-1u k-1,j, j=k,k+1,…,n m ik=(a ik-m i1u1k- m i2u2k -…-m i,k-1u k-1,k>/u kk i=k+1,k+2,…,n 于是a kj=m k1u1j+m k2u2j+…+m k,k-1u k-1,j+u kj, j=k,k+1,…,n a ik=m i1u1k+m i2u2k+…+m i,k-1u k-1,k+m ik u kk i=k+1,k+2,…,n 从前面两个式子我们可以直接计算L和U(见下段>.将矩阵分解为单位下 三角矩阵和上三角矩阵之积称为矩阵的LU分解.顺序消元实现了LU分 解,同时还求出了g, Lg=b的解. ②直接LU分解 上段我们得到(l ij=m ij> u kj=a kj-l k1u1j-l k2u2j -…- l k,k-1u k-1,j, j=k,k+1,…,n l ik=(a ik-l i1u1k-l i2u2k -…-l i,k-1u k-1,k>/u kk i=k+1,k+2,…,n 2 诸元素对应乘积,只不过算L的元素时还要除以同列对角元.这一规律很 容易记住.可写成算法(L和U可存放于A>: for k=1:n-1 for j=k:n u kj=a kj-l k1u1j-l k2u2j -…- l k,k-1u k-1,j end for i=k+1:n l ik=(a ik-l i1u1k-l i2u2k -…-l i,k-1u k-1,k>/u kk end end 这一算法也叫Gauss消去法的紧凑格式,可一次算得L,U的元素,不需逐步 计算存储.

线性代数齐次方程组解法

D =) () ()(0)()() (001 11112 132 3122211331221 1 312a a a a a a a a a a a a a a a a a a a a a a a a k k k k k k k k ------------ 按第一列展开,再将各列的公因子提出来 D = ) ()()() () () (121323122211331221131 2a a a a a a a a a a a a a a a a a a a a a a a a k k k k k k k k ------------ =(a 2-a 1)(a 3-a 1)…(a k -a 1) 22322 32 111 ---k k k k k a a a a a a 得到的k -1阶范德蒙德行列式,由归纳假设知其值为 ∏≤<≤-k i j j i a a 2)( 于是 D =(a 2-a 1)(a 3-a 1)…(a k -a 1) ∏≤<≤-k i j j i a a 2)(= ∏≤<≤-k i j j i a a 1)( 因此,对于任意正整数n ≥2,范德蒙德行列式的展开式都成立。 证毕 例1.14 计算n 阶三对角行列式: D n = 2 1 120000 021000 12 1000 12------ 解 由行列式的性质1.4,将D n 的第一列的每个元看成两个元之和,得

D n = 2100 12000002100 120 00011----- +2 1 1200000 21000 12 1 00011------ 第一个行列式按第一列展开;第二个行列式从第一行开始依次加到下一行,得 D n =D n -1+ 1 110000 01000 110 00011 ---=D n -1+1 反复利用上面的递推公式,得到 D n =D n -1+1=D n -2+2=…=D 1+n -1=2+n -1=n +1 例1.15 计算n 阶行列式 D n = n a b b b a b b b a 21 (a i ≠b , i =1,2,…,n ) 解 对于这个行列式,采用一种“加边”的技巧。 D n =n a b b b a b b b a b b b 000121 第一行乘以(-1)加到其他各行上去,得

线性方程组的解法及其应用

线性方程组的解法及其应用 The solution of linear equation and its application 专业:测控技术与仪器 班级: 2010-1班 作者:刘颖 学号: 20100310110105

摘要 线性方程组是线性代数的一个重要组成部分,也在现实生产生活中有着广泛的运用,在电子工程、软件开发、人员管理、交通运输等领域都起着重要的作用。在一些学科领域的研究中,线性方程组也有着不可撼动的辅助性作用,在实验和调查后期利用线性方程组对大量的数据进行处理是很方便简捷的选择。本文主要围绕如何解线性方程组来进行讲解,对于不同类型的线性方程组的不同方法,并简述线性方程组的一些实际应用。 关键词: 齐次线性方程组,非齐次线性方程组,克莱姆法则,消元法,矩阵,矩阵的秩,特解,通解。

Abstract Linear equations linear algebra is one of the important component parts, and in real life has extensive production use,and it plays an important role in electronic engineering, software development, personnel management, transportation, etc. In some discipline study, it also has the reigns of linear equations of the auxiliary function.In experiment and survey using the linear equations of the late on the data processing is very convenient simple choice. This article, focusing on how to solve linear equations to explain, for different types of linear equations of different methods, and briefly introduces some of the practical application of linear equations. Keywords: Homogeneous linear equations, Non homogeneous linear equation,Clem’s law,Elimination method,Matrix,Rank of matrix,Special solution,General solution.

线性方程组的直接解法及matlab的实现

本科毕业论文 ( 2010 届) 题目线性方程组的直接解法及matlab的实现 学院数学与信息工程学院 专业数学与应用数学 班级2006级数学1 班 学号0604010127 学生姓名胡婷婷 指导教师王洁 完成日期2010年5月

摘要 随着科技技术的发展及人类对自然界的不断探索模拟.在自然科学和工程问题中的很多问题的解决常常归结为线性代数问题! 本文的主要内容是对线性方程组求解方法的探讨,主要介绍了四种求解线性方程组的方法,第一种是教科书上常见的消元法,我们称之为基本法.第二种方法是标准上三角形求解法,即将增广矩阵经过初等变换后化成标准上三角形,然后求解.它改进了一般教科书上的常见方法,与常见方法比较有如下优点:1)规范了自由未知量的选取;2)只用矩阵运算;3)减少了计算量.第三种方法是对特定的方程组(系数矩阵A为n阶对称正定矩阵,且A的顺序主子式均不为零.)的求解方法进行描述,并且为这种线性方程的求解提供了固定的公式化的方法.第四种方法是对现在实际问题中常常会遇到的系数矩阵为三对角矩阵的方程组的求解方法.同时给出这几种方法的数值解法(matlab程序),由于运用电脑软件求解,所以必须考虑计算方法的时间、空间上的效率以及算法的数值稳定性问题,所以针对不同类型的线性方程组有不同的解法.但是,基本的方法可以归结为两大类,即直接法和迭代法. 关键词 高斯消去法;三角分解法;乔莱斯基分解法;追赶法

Abstract Systems of linear equations are associated with many problems in engineering and scinence ,as well as with applications of mathematics to the social sciences and the quantitative study of business and economic problems. The main content of this article is the method for solving linear equations, we introduce four methods for solving linear equations in this paper. The first is the elimination method which is commonly found in textbooks, and we call the Basic Law. The second method is Standard on the triangle Solution, that first change Augmented matrix into standards in primary triangle, and then solving. It improves the general textbook on common methods, compared with the common method has the following advantages:1) Specification of the free choice of unknowns; 2)Only matrix operations;3) Reduce the computation. The third method describes a way to solve a Specific equations(N coefficient matrix A is symmetric positive definite matrix, and A are not zero-order principal minor), And for this linear equation provides a fixed formulaic approach. The fourth method is to present practical problems often encountered in the coefficient matrix is tridiagonal matrix method for solving the equations. These methods are given numerical solution of (matlab program), As the use of computer software to solve, it is necessary to consider ways of computing time and space efficiency and numerical stability of algorithms, Therefore, different types of linear equations have a different solution. However, the basic method can be classified into two categories, namely direct methods and iterative methods. Key words Gaussian elimination; Triangular decomposition; Cholesky decomposition method; Thomas algorithm

解线性方程组的直接解法

解线性方程组的直接解法 一、实验目的及要求 关于线性方程组的数值解法一般分为两大类:直接法与迭代法。直接法是在没有舍入误差的情况下,通过有限步运算来求方程组解的方法。通过本次试验的学习,应该掌握各种直接法,如:高斯列主元消去法,LU分解法和平方根法等算法的基本思想和原理,了解它们各自的优缺点及适用范围。 二、相关理论知识 求解线性方程组的直接方法有以下几种: 1、利用左除运算符直接求解 线性方程组为b x\ =即可。 A Ax=,则输入b 2、列主元的高斯消元法 程序流程图: 输入系数矩阵A,向量b,输出线性方程组的解x。 根据矩阵的秩判断是否有解,若无解停止;否则,顺序进行; 对于1 p :1- =n 选择第p列中最大元,并且交换行; 消元计算; 回代求解。(此部分可以参看课本第150页相关算法) 3、利用矩阵的分解求解线性方程组 (1)LU分解 调用matlab中的函数lu即可,调用格式如下: [L,U]=lu(A) 注意:L往往不是一个下三角,但是可以经过行的变换化为单位下三角。 (2)平方根法

调用matlab 中的函数chol 即可,调用格式如下: R=chol (A ) 输出的是一个上三角矩阵R ,使得R R A T =。 三、研究、解答以下问题 问题1、先将矩阵A 进行楚列斯基分解,然后解方程组b Ax =(即利用平方根法求解线性方程组,直接调用函数): ??????? ??--------=19631699723723312312A ,?????? ? ??-=71636b 解答: 程序: A=[12 -3 2 1;-3 23 -7 -3;2 -7 99 -6;1 -3 -6 19]; R=chol(A) b=[6 3 -16 7]'; y=inv(R')*b %y=R'\b x=inv(R)*y %x=R\y 结果: R =3.4641 -0.8660 0.5774 0.2887 0 4.7170 -1.3780 -0.5830 0 0 9.8371 -0.7085 0 0 0 4.2514 y =1.7321 0.9540 -1.5945 1.3940 x =0.5463 0.2023 -0.1385 0.3279 问题 2、先将矩阵A 进行LU 分解,然后解方程组b Ax =(直接调用函数): ?????????? ??----=8162517623158765211331056897031354376231A ,????????? ? ??-=715513252b

数理方程基于matlab的数值解法

数理方程数值解法与其在matlab软件上的实现张体强1026222 廖荣发1026226 [摘要] 数学物理方程的数值解在实际生活中越来越使用,首先基于偏微分数值解的思想上,通过matlab软件的功能,研究其数学物理方程的数值解,并通过对精确解和数值解进行对比,追究其数值解的可行性,在此,给出相关例子和程序代码,利于以后的再次研究和直接使用。 [关键字] 偏微分方程数值解matlab 数学物理方程的可视化 一:研究意义 在我们解数学物理方程,理论上求数学物理方程的定解有着多种解法,但是有许多定解问题却不能严格求解,只能用数值方法求出满足实际需要的近似解。而且实际问题往往很复杂,这时即便要解出精确解就很困难,有时甚至不可能,另一方面,在建立数学模型时,我们已作了很多近似,所以求出的精确解也知识推导出的数学问题的精确解,并非真正实际问题的精确解。因此,我们有必要研究近似解法,只要使所求得的近似解与精确解之间的误差在规定的范围内,则仍能满足实际的需要,有限差分法和有限元法是两种最常用的

求解数学物理方程的数值解法,而MATLAB 在这一方面具有超强的数学功能,可以用来求其解。 二:数值解法思想和步骤 2.1:网格剖分 为了用差分方法求解上述问题,将求解区域 {}(,)|01,01x t x t Ω=≤≤≤≤作剖分。将空间区间[0,1]作m 等分,将时 间[0,1]区间作n 等分,并记 1/,1/,,0,,0j k h m n x jh j m t k k n ττ===≤≤=≤≤。分别称h 和τ 为空间和 时间步长。用两簇平行直线,0,,0j k x x j m t t k n =≤≤=≤≤将Ω分割成矩形网格。 2.2:差分格式的建立 0u u t x ??-=??………………………………(1) 设G 是,x t 平面任一有界域,据Green 公式(参考数学物理方程第五章): ( )()G u u dxdt udt udx t x Γ??-=--??? ? 其中G Γ=?。于是可将(1)式写成积分守恒形式: ()0udt udx Γ --=? (2) 我们先从(2)式出发构造熟知的Lax 格式设网格如下图所示

用高斯消元法求解线性代数方程组.(优选)

用高斯消元法求解线性代数方程组 1234111 5 -413-2823113-2104151 3-21719x x x x ??????????????????=?????? ?????? ?????? 1111X *??????=?????? (X*是方程组的精确解) 1 高斯消去法 1.1 基本思想及计算过程 高斯(Gauss )消去法是解线性方程组最常用的方法之一,它的基本思想是通过逐步消元,把方程组化为系数矩阵为三角形矩阵的同解方程组,然后用回代法解此三角形方程组得原方程组的解。 为便于叙述,先以一个三阶线性方程组为例来说明高斯消去法的基本思想。 ??? ??=++II =++I =++III) (323034)(5 253)(6432321 321321x x x x x x x x x 把方程(I )乘(2 3 - )后加到方程(II )上去,把方程(I )乘(2 4- )后加到方程(III )上 去,即可消去方程(II )、(III )中的x 1,得同解方程组 ?? ? ??=+-II -=-I =++III) (20 223)(445.0)(6 4323232321x x x x x x x 将方程(II )乘( 5 .03 )后加于方程(III ),得同解方程组: ?? ? ??-=-II -=-I =++III) (42)(445.0)(6432332321x x x x x x 由回代公式(3.5)得x 3 = 2,x 2 = 8,x 1 = -13。 下面考察一般形式的线性方程组的解法,为叙述问题方便,将b i 写成a i , n +1,i = 1, 2,…,n 。

线性方程组数值解法总结

好久没来论坛,刚刚发现以前的帖子现在那么火很欣慰,谢谢大家支持! 今天趁着不想做其他事情,把线性方程组的数值解法总结下,有不足的地方希望大神指教!数学建模中也会用到线性方程组的解法,你会发现上10个的方程手动解得话把你累个半死,而且不一定有结果,直接用matlab的函数,可以,关键是你不理解用着你安心吗?你怎么知道解得对不对? 我打算开个长久帖子,直到讲完为止!这是第一讲,如有纰漏请多多直接,大家一起交流!线性方程组解法有两大类:直接法和迭代法 直接法是解精确解,这里主要讲一下Gauss消去法,目前求解中小型线性方程组(阶数不超过1000),它是常用的方法,一般用于系数矩阵稠密,而有没有特殊结构的线性方程组。 首先,有三角形方程组的解法引入Gauss消去法,下三角方程组用前代法求解, 这个很简单,就是通过第一个解第二个,然后一直这样直到解出最后一个未知数,代码如下:前代法: function [b]= qiandai_method(L,b) n=size(L,1); %n 矩阵L的行数 for j=1:n-1 %前代法求解结果存放在b中 b(j)=b(j)/L(j,j); b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); end b(n)=b(n)/L(n,n); 上三角方程组用回代法,和前面一样就是从下面开始解x,代码: 后代法: function [y]=houdai_method(U,y) n=size(U,1); %n 矩阵L的行数 for j=n:-1:2 %后代法求解结果存放在y中 y(j)=y(j)/U(j,j); y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j); end y(1)=y(1)/U(1,1); Gauss消去的前提就是这两个算法: 具体思想是把任何一个线性方程组的系数矩阵A,分解为一个上三角和一个下三角的乘积,即A=LU,其中L为下三角,U为上三角。 那么具体怎么做呢? 有高斯变换,什么是高斯变换?由于时间有限我不可能去输入公式,所以我用最平白的话把它描述出来。 你先想一下怎么把一个矩阵的某一列的从第j个分量后全部变0? 高斯变换就是通过每次一个矩阵Li把A的第i列对角线元素以下的都变为0,最后把这么多Li一次左乘起来就是一个矩阵L’=L(n-1)L(n-2)…L2L1,而L’A=U, 那么L=L’的转置,这样就得到了A得分解。 我们要求Ax=b A=LU

浅析线性方程组的解法

目录 摘要................................................................................... I Abstract. ............................................................................. II 第一章绪论............................................................................ I 1.1引言 (1) 1.2线性方程组解的求解方法的研究现状 (1) 1.3本文对线性方程组解法的研究结构 (1) 第二章线性方程组理论基础 (2) 2.1 线性方程组概念 (2) 2.2 线性方程组的解的情况分析 (2) 2.3 齐次线性方程组解的结构 (4) 2.4非齐次线性方程组解的结构 (4) 第三章线性方程组的数值解 (5) 3.1 迭代法 (5) 3.1.1 Jacobi方法 (6) 3.2.2 高斯-赛德尔方法 (8) 第四章全文总结和展望 (10) 4.1 全文总结 (10) 4.2 未来展望 (10) 参考文献 (11) 致谢................................................................. 错误!未定义书签。

线性方程组的求解方法 学生:指导教师: 摘要:本文在对线性方程组解的结构的研究背景与意义分析的基础上,对线性方程组的求解方法的研究现状进行了介绍,之后针对线性方程组展开了研究,包括线性方程组的概念、线性方程组的求解方法以及线性方程组的作用等,在对线性方程组有了全面的认识后,基于线性方程组解的结构展开了研究,包括线性方程组解的基本定理,齐次和非齐次线性方程组解的结构形式,以及齐次和非齐次线性方程组解的结构,我们用迭代法中最常用的Jacobi方法中的相似上三角矩阵定理和迭代法中的收敛性讨论线性方程组的数值解法,并用高斯-赛德尔方法进行验证。得到线性方程组的数值解的一般方法。最后,对全文进行了总结和展望。 关键词:线性方程组;数值解;迭代法;Jacobi方法;高斯-赛德尔方法

线性代数方程组数值解法及MATLAB实现综述

线性代数方程组数值解法及MATLAB实现综述廖淑芳20122090 数计学院12计算机科学与技术1班(职教本科)一、分析课题 随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。 直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。 迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。迭代法包括Jacobi法SOR法、SSOR法等多种方法。 二、研究课题-线性代数方程组数值解法 一、直接法 1、Gauss消元法 通过一系列的加减消元运算,也就是代数中的加减消去法,以使A对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x向量。

1.1消元过程 1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。 11121121222212n n n n nn n a a a b a a a b a a a b ?? ? ? ? ???(1)(1)(1)(1)(1)11121311(2)(2)(2)(2)222322 (3)(3)(3)3333()()000 00 n n n n n nn n a a a a b a a a b a a b a b ?? ? ? ? ? ? ??? 步骤如下: 第一步:1 11 1,2,,i a i i n a -? +=第行第行 11121121222212 n n n n nn n a a a b a a a b a a a b ?? ? ? ? ???1112 11(2)(2)(2)22 22 (2)(2)(2)2 00n n n nn n a a a b a a b a a b ?? ? ? ? ??? 第二步:(2)2 (2)222,3, ,i a i i n a -?+=第行第行 111211(2)(2)(2)2222(2)(2)(2)2 00n n n nn n a a a b a a b a a b ?? ? ? ? ???11 12 1311(2)(2)(2)(2)222322 (3)(3)(3)33 33(3)(3)(3)3 0000 0n n n n nn n a a a a b a a a b a a b a a b ?? ? ? ? ? ? ??? 类似的做下去,我们有: 第k 步:() ()k ,1, ,k ik k kk a i i k n a -?+=+第行第行。 n -1步以后,我们可以得到变换后的矩阵为: 11121311(2)(2)(2)(2)222322 (3)(3)(3)3333()()00000 n n n n n nn n a a a a b a a a b a a b a b ?? ? ? ? ? ? ?? ?

线性方程组的直接解法 实验报告

本科实验报告 课程名称:数值计算方法B 实验项目:线性方程组的直接解法 最小二乘拟合多项式 实验地点:ZSA401 专业班级:学号:201000 学生姓名: 指导教师:李志 2012年4月13日

线性方程组的直接解法 一、实验目的和要求 实验目的:合理利用Gauss 消元法、LU 分解法或追赶法求解方程组。 实验要求:利用高斯消元法,LU 分解法或追赶法进行编程,求解题中所给的方程组。 二、实验内容和原理 实验内容:合理利用Gauss 消元法、LU 分解法或追赶法求解下列方程组: ① ?? ?? ? ?????=????????????????????13814142210321321x x x ②??? ? ?? ??????=????????????????????? ?? ? ??--?-2178.4617.5911212592.1121130.6291.513 14 .59103.043 2115x x x x ③?? ??? ??? ? ???????----=????????????????????????????????-55572112112112121 n n x x x x (n=5,10,100,…) 实验原理:这个实验我选用的是高斯消元法。高斯消元法:先按照 L ik =a ik^(k-1)/a kk^(k-1) , a ij^(k)=a ij^(k-1)-l ik a kj^(k-1) [其中k=1,2,…,n-1;i=k+1,k+2,…,n;j=k+1,k+2,…,n+1] 将方程组变为上三角矩阵,再经过回代,即可求解出方程组的解。 三.计算公式 通过消元、再回代的求解方法称为高斯消元法。特点是始终消去主对角线 下方的元素。 四、操作方法与实验步骤 #include "Stdio.h" #define N 3 main() { double a[N][N+1],b[N]; int i,j,k,x=0; for(i=0;i

线性方程组的直接解法

第2章线性方程组的直接解法 2.1实验目的 理解线性方程组计算机解法中的直接解法的求解过程和特点,学习科学计算的方法和简单的编程技术。 2.2概念与结论 1. n阶线性方程组 如果未知量的个数为 n ,而且关于这些未知量x1,x2, …,x n的幂次都是一次的(线性的)那末, n 个方程 a11x1+a12x2+ … +a1n x n=b1 ┆┆┆ (1) a n1x1+a n2x2+ … +a nn x n= b n 构成一个含n个未知量的线性方程组,称为n阶线性方程组。其中,系数a11,…,a1n,a21, …,a2n, …,a n1, …,a nn 和b1, …,b n都是给定的常数。 方程组(1)也常用矩阵的形式表示,写为 Ax=b 其中,A是由系数按次序排列构成的一个n阶矩阵,称为方程组的系数矩阵,x和b都是n维向量,b称为方程组的右端向量。 2. n阶线性方程组的解 使方程组(1)中每一个方程都成立的一组数x1*,x2*, …,x n*称为式(1)的解,把它记为向量的形式,称为解向量. 3.一些特殊的线性方程组 1) 上三角方程组 2) 三对角方程组 ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - n n nn n n n n n n n n b b b x x x a a a a a a a a a a a a 2 1 2 1 1 1 1 2 1 2 23 22 1 1 1 13 12 11

4.矩阵的Doolittle 分解 5.Doolittle 分解的紧凑格式 6.矩阵的Crout 分解 ????????? ? ??=?????????? ???????????? ? ?--n n n n n n d d d x x x b a c b c b a c b a c b 21 2111333 22211???? ?? ? ? ???????? ??=??????? ??nn n n n n nn n n n n u u u u u u l l l a a a a a a a a a 222 11211 2 1 21 2 1 2222111211111 ???? ?? ? ? ???????? ??=??????? ??11 1 21122 1 2221 11 2 1 2222111211 n n nn n n nn n n n n u u u l l l l l l a a a a a a a a a ????? ?? ? ??nn n n n n n n u l l l u u l l u u u l u u u u 3 2 1 333323122322211131211

线性方程组的直接解法

第4章 线性方程组的直接解法 本章主要内容 线性方程组的直接解法——消元法(高斯消元法、主元消元法). 矩阵的三角分解法( Doolittle 分解、Crout 分解、 LDU 分解) 紧凑格式 改进平方根法. 本章重点、难点 一、消元法(高斯消元法、列主元消元法) 本章求解的是n 阶线性方程组Ax=b 的(即方程的个数和未知量的个数相等的线性方程组) ?????????=+???++????????????? ??=+???++=+???++n n nn 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 22112 3222212111212111 1. 高斯消元法 ①高斯消元法的基本思想:通过对线性方程组Ax=b 的进行同解消元变换(也可以用矩阵的初等行变换法进行线性方程组的消元变换),将线性方程组化为上三角形方程组,然后用回代法求出此线性方程组的解。 ②高斯消元法计算公式: ????? ? ? ????????--=-=--==? ????? ????? ???? +=-=-=====-+=------------∑)1,..., 2,1()1,..., 2,1(,...,1,,,,...,2,1) ,...,2,1,(,) 1(1)1()1()1() 1() 1()1() 1()1()() 1()1()1()1()(,)0()0(n n i a x a b x n n i a b x n k j i b a a b b a a a a a n k n j i b b a a i ii n i j j i ij i i i n nn n n n k k k kk k ik k i k i k kj k kk k ik k ij k ij i i ij ij 对回代公式: 消元公式:

线性方程组的数值解法

第三章线性方程组地数值解法 范数 (1> 常用范数 ① 向量 1- 范数: ② 向量 2- 范数: ③ 向量∞- 范数: ④ 向量 p- 范数: 向量1- 范数,向量2- 范数,向量∞- 范数实际上为任意 p- 范数地特例. (2> 矩阵范数 设,则 (1>,A地行范数 (2>,A地列范数 (3>,A地 2- 范数,也称谱范数 (4>, F- 范数 其中指矩阵地最大特征值 (3>谱半径(用于判断迭代法地收敛值> 设为矩阵A地特征值,则

称为A地谱半径 谱半径小于任何半径,若,则 (4>设A为非奇异矩阵,称 为A地条件数 矩阵地条件数与范数选取有关,通常有 显然当A对称时 直接法 Gauss消去法 ①Gauss顺序消去法 对线性方程组Ax=b,设,按顺序消元法,写出增广矩阵(A┆b>第一步,写出,将2~n行中地变为0 第k步,写出,将k+1~n行中地变为0 具体步骤可参照下面地例题 例5:用Gauss消去法解方程组

解: Guass列主元消去法 消去过程与Guass消元法基本相同,不同地是每一步消元时,都要将所选到地绝对值最大元素作为主元. 具体分析参见习题详解1 ②矩阵三角(LU>分解法 基本思想:将Ax=b化为LUx=b,令Ux=y 可得Ly=b,Ux=y,相当于先求出y,再求出x 其中,L,U分别为下三角矩阵和上三角矩阵 若L为单位下三角矩阵,则称为Doolittle分解。若U为单位上三角矩阵,则称为Crout分解. ③矩阵Doolittle分解法

计算公式 具体解题见习题详解2 注意计算顺序,先行再列,用简图表示为 虚线上地元素为对角元,划为行元. ④ 分解法 计算公式

线性方程组的几种求解方法

线性方程组的几种解法 线性方程组形式如下: 常记为矩阵形式 其中 一、高斯消元法 高斯(Gauss)消元法的基本思想是:通过一系列的加减消元运算,也就是代数中的加减消去法,将方程组化为上三角矩阵;然后,再逐一回代求解出x 向量。现举例说明如下: (一)消元过程 第一步:将(1)/3使x 1的系数化为1 得 再将(2)、(3)式中x 1的系数都化为零,即由(2)-2×(1)(1) 得 )1(32)2( (03) 4 32=+x x )1(321)1(......23132=++ x x x

由(3)-4×(1)(1) 得 第二步:将(2)(1) 除以2/3,使x 2系数化为1,得 再将(3)(1) 式中x 2系数化为零,即 由(3)(1) -(-14/3)*(2)(2) ,得 第三步:将(3)(2) 除以18/3,使x 3系数化为1,得 经消元后,得到如下三角代数方程组: (二)回代过程 由(3)(3) 得 x 3=1, 将x 3代入(2)(2) 得x 2=-2, 将x 2 、x 3代入(1)(1) 得x 2=1 所以,本题解为[x]=[1,2,-1]T (三)、用矩阵演示进行消元过程 第一步: 先将方程写成增广矩阵的形式 第二步:然后对矩阵进行初等行变换 初等行变换包含如下操作 (1) 将某行同乘或同除一个非零实数 ) 3(3)3(......1-=x )2(3)3( (63) 18-=x ) 2(32) 2(......02=+x x ) 1(32)3( (63) 10 314-=-- x x

(2)将某行加入到另一行 (3)将任意两行互换 第三步:将增广矩阵变换成上三角矩阵,即主对角线全为1,左下三角矩阵全为0,形式如下: 示例: (四)高斯消元的公式 综合以上讨论,不难看出,高斯消元法解方程组的公式为 1.消元 (1)令 a ij(1) = a ij , (i,j=1,2,3,…,n) b i(1) =b i , (i=1,2,3,…,n) (2)对k=1到n-1,若a kk(k)≠0,进行 l ik = a ik(k) / a kk(k) , (i=k+1,k+2,…,n) a ij(k+1) = a ij(k) - l ik * a kj(k), (i,j= k+1,k+2,…,n) b i(k+1) = b i(k) - l ik * b k(k), (i= k+1,k+2,…,n) 2.回代 若a nn(n) ≠0 x n = b n(n) / a nn(n) x i = (b i(i) – sgm(a ij(i) * x j)/- a ii(i),(i = n-1,n-2,…,1),( j = i+1,i+2,…,n ) (五)高斯消元法的条件 消元过程要求a ii(i) ≠0 (i=1,2,…,n),回代过程则进一步要求a nn(n) ≠0,但就方程组Ax=b 讲,a ii(i)是否等于0时无法事先看出来的。 注意A的顺序主子式D i(i=1,2,…,n),在消元的过程中不变,这是因为消元所作的变换是“将某行的若干倍加到另一行”。若高斯消元法的过程进行了k-1步(a ii(i) ≠0,i

相关主题