33
1 计 计 计 计 第第第 第第第第第第第第 计计计计计计计

计 算 方 法

Embed Size (px)

DESCRIPTION

计 算 方 法. 第八章 线性方程组的解法. 计算方法课程组. 重要性 :解线性代数方程组的有效方法在计算数学和 科学计算中具有特殊的地位和作用。如 弹性力学、电 路分析、热传导和振动 、以及社会科学及定量分析商 业经济中的各种问题。. 假设 非奇异,则方程组有唯一解. §8.0 引 言. 求解线性方程组 的求解方法,其中 , 。. 分类 : 线性方程组的解法可分为 直接法 和 迭代法 两种方法。 - PowerPoint PPT Presentation

Citation preview

Page 1: 计 算 方 法

1

计 算 方 法第八章 线性方程组的解法

计算方法课程组

Page 2: 计 算 方 法

2

§8.0 引 言

重要性:解线性代数方程组的有效方法在计算数学和

科学计算中具有特殊的地位和作用。如弹性力学、电

路分析、热传导和振动、以及社会科学及定量分析商

业经济中的各种问题。

求解线性方程组 的求解方法,其中 , 。

Ax b

n nA R , nx b R

假设 非奇异,则方程组有唯一解 .* * * *

1 2( , , , )Tnx x x x A

Page 3: 计 算 方 法

3

§8.0 引 言 分类: 线性方程组的解法可分为直接法和迭代法两种方法。

(a) 直接法: 对于给定的方程组,在没有舍入误差的假设下,能在预定的运算次数内求得精确解。最基本的直接法是 Ga

uss 消去法,重要的直接法全都受到 Gauss 消去法的启发。 计算代价高 .

(b) 迭代法:基于一定的递推格式,产生逼近方程组精确解的近似序列 . 收敛性是其为迭代法的前提,此外,存在收敛速度与误差估计问题。简单实用 , 诱人。

Page 4: 计 算 方 法

4

§8.1 雅可比 Jacobi 迭代法 (AX=b)

一、一、迭代法的基本思想

二、二、例题分析

三、 三、 Jacobi 迭代公式

Page 5: 计 算 方 法

5

与解 f (x)=0 的不动点迭代相类似,将 AX=

b 改写为 X=BX+f 的形式,建立雅可比方法的迭代格式:

其中, B 称为迭代矩阵。其计算精度可控,特别适用于求解系数为大型稀疏矩阵 (sparse matric

es) 的方程组。

§8.1 雅可比 Jacobi 迭代法 (AX=b)

迭代法的基本思想

( 1) ( )k kx Bx f

Page 6: 计 算 方 法

6

问题 :

(a) 如何建立迭代格式?

(b) 向量序列 { x(k) } 是否收敛以及收敛条件 ?

( 1) ( )k kx Bx f

AX b

Page 7: 计 算 方 法

7

2 例题分析 :

其准确解为 X*={ 1.1, 1.2, 1.3 } 。

考虑解方程组

.

.

.

x x x

x x x

x x x

1 2 3

1 2 3

1 2 3

10 2 7 2

10 2 8 3

5 4 2

(1)

3.1Jacobi 迭代法

Page 8: 计 算 方 法

8

2 例题分析 :

建立与式 (1) 相等价的形式:

. . .

. . .

. . .

x x x

x x x

x x x

1 2 3

2 1 3

3 1 2

0 1 0 2 0 72

0 1 0 2 0 83

0 2 0 2 0 84

(2)

其准确解为 X*={1.1, 1.2, 1.3} 。

考虑解方程组.

.

.

x x x

x x x

x x x

1 2 3

1 2 3

1 2 3

10 2 7 2

10 2 8 3

5 4 2 (1)

3.1Jacobi 迭代法

Page 9: 计 算 方 法

9

2 例题分析 :

其准确解为 X*={1.1, 1.2, 1.3} 。

建立与式 (1) 相等价的形式:

. . .

. . .

. . .

x x x

x x x

x x x

1 2 3

2 1 3

3 1 2

0 1 0 2 0 72

0 1 0 2 0 83

0 2 0 2 0 84

考虑解方程组.

.

.

x x x

x x x

x x x

1 2 3

1 2 3

1 2 3

10 2 7 2

10 2 8 3

5 4 2

( ) ( ) ( )x x x 0 0 01 2 3 0取迭代初值

据此建立迭代公式:

( +1) ( ) ( )1 2 3

( +1) ( ) ( )2 1 3

( +1) ( ) ( )3 1 2

=0.1 +0.2 +0.72

=0.1 +0.2 +0.83

=0.2 +0.2 +0.84

k k k

k k k

k k k

x x x

x x x

x x x

Page 10: 计 算 方 法

10

迭代结果如下表:

迭代次数 x1 x2 x3

0 0 0 0

1 0.72 0.83 0.84

2 0.971 1.07 1.15

3 1.057 1.1571 1.2482

4 1.08535 1.18534 1.28282

5 1.095098 1.195099 1.294138

6 1.098338 1.198337 1.298039

7 1.099442 1.199442 1.299335

8 1.099811 1.199811 1.299777

9 1.099936 1.199936 1.299924

10 1.099979 1.199979 1.299975

11 1.099993 1.199993 1.299991

12 1.099998 1.199998 1.299997

13 1.099999 1.199999 1.299999

14 1.1 1.2 1.3

15 1.1 1.2 1.3

JocabiMethodP31.cpp

Page 11: 计 算 方 法

11

1

1

, 0 ( 1,2, , )

1( ) ( 1,2, , )

n

ij j i iii

n

i i ij jjiij i

a x b a i n

x b a x i na

( 1)

1

1( ) ( 1,2, , )

nk k

i i ij ijiij i

x b a x i na

设方程组 AX=b , 通过分离变量的过程建

立 Jacobi 迭代公式,即

由此我们可以得到 Jacobi 迭代公式:

§8.1 Jacobi 迭代公式

Page 12: 计 算 方 法

12

( 1) 1 ( ) 1( )k kx D L U x D b

雅可比迭代法的矩阵表示

nnnnnn

nn

nn

bxaxaxa

bxaxaxabxaxaxa

...............

......

2211

22222121

11212111

nnnnnnn

n

nn

nn

bxaxaa

x

bxaxaa

x

bxaxaa

x

1111

2212122

2

1121211

1

...1............

...1

...1

0iia

写成矩阵形式:

A =

L

UD

( )

( )

Ax b D L U x b

Dx L U x b

1 1( )x D L U x D b

B f

Jacobi 迭代阵

Page 13: 计 算 方 法

13

§8.2 高斯 - 塞德尔迭代法 (AX=b)( 1)kix

k k kix x x

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

( ) ( ) ( )1 2 1, , ,k k k

ix x x

注意到利用 Jacobi 迭代公式计算 时,已经计算好了

的值,而 Jacobi 迭代公式并不利用这些最新的近似值计算,仍用

1( 1) ( 1)

1 1

1( ) ( 1,2, , )

i nk k k

i i ij j ij jj j iii

x b a x a x i na

这启发我们可以对其加以改进 ,即在每个分量的计算中尽量利用最新的迭代值,得到

上式称为 Gauss-Seidel 迭代法 .

Page 14: 计 算 方 法

14

)(11

)(1

)(414

)(313

)(212

11

)1(1 bxaxaxaxa

ax k

nnkkkk

)(12

)(2

)(424

)(323

)1(121

22

)1(2 bxaxaxaxa

ax k

nnkkkk

)(13

)(3

)(434

)1(232

)1(131

33

)1(3 bxaxaxaxa

ax k

nnkkkk

)(1 )1(11

)1(33

)1(22

)1(11

)1(n

knnn

kn

kn

kn

nn

kn bxaxaxaxa

ax

… … … …

写成矩阵形式: ( 1) 1 ( 1) ( ) 1( )k k kx D Lx Ux D b ( 1) ( )( ) k kD L x Ux b

( 1) 1 ( ) 1( ) ( )k kx D L Ux D L b

B fGauss-Seidel 迭代阵

§8.2 高斯 - 塞德尔迭代法

Page 15: 计 算 方 法

15

其准确解为 X*={1.1, 1.2, 1.3} 。

. . .

. . .

. . .

k k k

k k k

k k k

x x x

x x x

x x x

1 2 3

2 1 3

3 1 2

1

1 1

1 1 1

0 1 0 2 0 72

0 1 0 2 0 83

0 2 0 2 0 84

考虑解方程组.

.

.

x x x

x x x

x x x

1 2 3

1 2 3

1 2 3

10 2 7 2

10 2 8 3

5 4 2

高斯 -塞德尔迭代法算例

高斯 -塞德尔迭代格式

Page 16: 计 算 方 法

16

迭代次数 x1 x2 x3

0 0 0 0

1 0.72 0.902 1.1644

2 1.04308 1.167188 1.282054

3 1.09313 1.195724 1.297771

4 1.099126 1.199467 1.299719

5 1.09989 1.199933 1.299965

6 1.099986 1.199992 1.299996

7 1.099998 1.199999 1.299999

8 1.1 1.2 1.3

GausseidelMethodP37.cpp

Page 17: 计 算 方 法

17

开始

Niyx ii 10,0

1i

0T

iiii aTbx /)(

Ni

1i

i ix y

jj xyNj ,1

Ni

ix打印结果

1 ii

(0)

( )

1,2.

1,2

1,2 ,

.

0, 0, 1,2

3. 0,1,2

1

1

4.

1

ij

i

i

i

ij

i

i i

k

i ij ji

ii

N

A a

B b

X x

Y y

a b b a

i na

j n

b i n n

x

x y i n

x k n

i n

j n

b a xi j x a

i

线形方程组组数系数矩阵

常数矩阵

迭代过程中的解

-上一轮迭代的解

将 的值赋给计算步骤:

1输入原始数据

2输入初使迭代值

迭代计算

如 ,则

精度判断

1

5.

1,2

i i

i i

i

n

x y

j n

y x

x i n

则转第三步再计算

打印计算结果的值

T

F

TF

T

, , , , , 1ij ia b N i j N 输入

1 , ij jj N i j T T a x 如

Page 18: 计 算 方 法

18

逐次超松弛迭代法 (Successive Over Relaxation

Method,简写为 SOR) 可以看作带参数 ω 的高斯 - 塞德尔迭代法,是 G-S 方法的一种修正或加速,是求解大型稀疏矩阵方程组的有效方法之一。

§8.3 超松驰迭代法 SOR 方法

1. SOR 基本思想

Page 19: 计 算 方 法

19

设方程组 AX=b, 其中, A=(aij) 为非奇异阵,

x=(x1, x2, …, xn)T, b=(b1, b2, …, bn)T.

假设已算出 x(k) ,

§8.3 超松驰迭代法 SOR 方法

2. SOR 算法的构造

),,2,1()(1

1

1

1

)1()1(nixaxab

ax

n

ij

kjij

i

j

kjiji

ii

ki

( 1)( 1) ( )

( 1)( ) ( )

(1 )

( )

kk kii i

kk kii i

x x x

x x x

ω 称为松弛因子

利用高斯 - 塞德尔迭代法得 :

Page 20: 计 算 方 法

20

§8.3 超松驰迭代法 SOR 方法

2. SOR 算法的构造 ( 基于 G-S 迭代 )

解方程组 AX=b 的逐次超松弛迭代公式:

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

1

)1(

)()1(

nixaxaba

x

xxxn

ij

kjij

i

j

kjiji

ii

i

iki

ki

显然,当取ω=1 时,上式就是高斯 -塞德尔迭代公式 .

Page 21: 计 算 方 法

21

§8.3 超松驰迭代法 SOR 方法

2. SOR 算法的构造 ( 基于 Jacobi 迭代 )

得到解方程组 AX=b 的逐次超松弛迭代公式:

( 1) ( )

( )

1

( ) ( 1,2, , )

k ki i i

nk

i i ij jjii

x x x

x b a x i na

显然,上式就是 基于 Jacobi 迭代的 SOR 方法 .

Page 22: 计 算 方 法

22

下面令 ,

希望通过选取合适的

来加速收敛,这就是松弛法 。

i nk k

i ij j ij jj

b a x a x -1

( +1) ( )

=1 j=i

- -

3. SOR 算法的进一步解释

SOR 方法

i nk k ki i ij j ij j

j iii

x b a x a xa

-1

( +1) ( +1) ( )

j=1 =+1

1= - -

kk ii

ii

rx

a

( +1)( )= + 其中 ri

(k+1) =

相当于在 的基础上加个余项生成 。

)(kix )1( k

ix

0 < < 1 低松弛法

= 1 Gauss - Seidel 法

2> > 1 (渐次 ) 超松弛法

1k

k k ii i

ii

rx x

aw

( +1)( ) ( )= +

Page 23: 计 算 方 法

23

利用 SOR 方法解方程组SOR 例题分析 :

其准确解为 x*={1, 1, 2}.

x x x

x x x

x x x

1 2 3

1 2 3

1 2 3

4 - 2 - =0

-2 +4 - 2 =-2 (1)

- - 2 +3 =3

x x x

x x x

x x x

1 2 3

2 1 3

3 1 2

=0.5 +0.25

=0.5 +0.5 - 0.5 (2)

1 2= + +13 3

建立与式 (1) 相等价的形式:

Page 24: 计 算 方 法

24

据此建立 G-S迭代公式:(k+1) (k) k1 2 3

(k+1) (k+1) (k)2 1 3

(k+1) (k+1) (k+1)3 1 2

= 0.5 + 0.25

= 0.5 + 0.5 - 0.5 (3)

1 2= + +1

3 3

x x x

x x x

x x x

取迭代初值 : (0) (0) (0)1 2 3= = =1x x x

,ω=1.5, 迭代结果如下表 .

SOR迭代公式为:(k+1) (k) (k) (k)1 1 2 3

(k+1) (k) (k+1) (k)2 2 1 3

(k+1) (k) (k+1) (k+1)3 3 1 2

= (1- ) + (0.5 + 0.25 )

x = (1- ) + (0.5 + 0.5 - 0.5) (4)

1 2= (1- ) + ( + +1)

3 3

x w x w x x

w x w x x

x w x w x x

Page 25: 计 算 方 法

25

GS 迭代法须迭代 85 次得到准确值 x*={1, 1, 2}; 而SOR 方法只须 55 次即得准确值 .

由此可见,适当地选择松弛因子 ω , SOR 法具有明显的加速收敛效果 .

逐次超松弛迭代法次数 x1 x2 x3

1 0.625000 0.062500 1.750000

2 0.390625 0.882813 1.468750

3 1.017578 0.516602 1.808594

4 0.556885 0.880981 1.710449

5 1.023712 0.743423 1.868103

… … … …

15 0.991521 0.985318 1.987416

… … … …

25 0.998596 0.998234 1.998355

… … … …

55 1.00000 1.0000 2.0000

Sor.cpp

Page 26: 计 算 方 法

26

关于 SOR 方法的说明:

(1) 显然,当 时, SOR 方法就是 Gauss- Seidel 方法。

(2) SOR 方法每一次迭代的主要运算量是计算一次矩阵与向量的乘法。

(3) 时称为超松弛方法, 时称为低松弛方法。

(4) 计算机实现时可用

控制迭代终止,或用

(5) SOR 方法可以看成是 Gauss-Seidel 方法的一种修正。

1

1 1

( 1) ( )

1 1max max k k

i i ii n i n

x x x

( ) ( )k kr b Ax

Page 27: 计 算 方 法

27

(迭代法基本定理)

设有方程组 ,对于任意的初始向量 ,迭代公式 收敛的充要条件是迭代矩阵 的谱半径 .

8.4 迭代法的收敛性 - 充要条件

x Bx f

( 1) ( )k kx Bx f (0)x

B ( ) 1B

迭代法的基本定理在理论分析中有重要意义。

Page 28: 计 算 方 法

28

§8.4 迭代法的误差估计

定理 2 :设 X* 是方程组 AX = b 的同解方程 X = BX + F

的准确解,若迭代公式中迭代矩阵 B 的某种范数,

)1()(*)(

1

kkk XX

q

qXX(1)

)0()1(*)(

1XX

q

qXX

Kk

(2)

1B 则有

在具体使用上,由于 ,因此,我们利用范数可以建立判别迭代法收敛的充分条件。

( )B B

Page 29: 计 算 方 法

29

关于解某些特殊方程组迭代法的收敛性

定义: (对角占优阵 ) 设(1) 如果 元素满足

称 为严格对角占优阵

(2) 如果 元素满足

且上式至少有一个不等式严格成立, 称 为弱对角占优阵。

( )ij n nA a

A

1

( 1,2, , )n

ii ijjj i

a a i n

A

A1

( 1,2, , )n

ii ijjj i

a a i n

A

Page 30: 计 算 方 法

30

设 ,如果: 为严格对角占优,则解 的 J

acobi 迭代法, Gauss-Seidel 迭代法均收敛。

Ax b

A Ax b

Page 31: 计 算 方 法

31

例:设方程组为

31032

2024

1225

321

321

321

xxx

xxx

xxx

试分别写出其 Jacobi 和 Gauss-Seidel 的迭代格式以及相应的迭代矩阵。 解:Jacobi 迭代格式为

( 1) ( ) ( ) ( ) ( )1 2 1 121 2 3 2 35 5 5 5

( 1) ( ) ( ) ( ) ( )1 1 12 1 3 1 34 4 2

( 1) ( ) ( ) ( ) ( )3 31 13 1 2 1 210 5 10 10

( 12 2 )

(20 2 5

(3 2 3 )

k k k k k

k k k k k

k k k k k

x x x x x

x x x x x

x x x x x

故 Jacobi 迭代矩阵为

BJ=

0

0

0

103

51

21

41

51

52

Page 32: 计 算 方 法

32

103)(

2103)(

151)1(

3

)(32

1)(14

1)1(2

512)(

351)(

252)1(

1

5kkk

kkk

kkk

xxx

xxx

xxx

( 1) , =1,2,3kix i

( 1) ( ) ( )2 1 121 2 35 5 5

( 1) ( ) ( )1 11 222 2 310 20 5

( 1) ( ) ( )1 1 213 2 320 8 10

k k k

k k k

k k k

x x x

x x x

x x x

Seidel 迭代格式为

从式中解出

故可得 Seidel 迭代矩阵为

2 15 5

1 1110 20

1 120 8

0

0

0sB

从例中可以看出 Jacobi 迭代矩阵 Bj 的主对角线为零,而 Seidel 迭代矩阵 Bs 的第 1 列都是零,这对一般情况也是成立的。

Page 33: 计 算 方 法

33

举例检验 Jacoai迭代的收敛性

首先将原方程组写为迭代形式的方程组,即:

求任一行之和的最大值 <1, 即:

||M||=max{5/8,5/11,9/12}=9/12<1i

或求任一列之和的最大值 <1, 即:

||M||1=max{114/132,60/96,30/88}=114/132<1

结论:该方程组采用 Jacobi 迭代法计算是收敛的。

1 2 3

1 2 3

1 2 3

8x -3x 2x 20

4x 11x -x 33

6x 3x 12x 36

1 2 3

2 1 3

3 1 2

x =20/8 - 0 +3/8 x -2/8x

x =33/11-4/11x - 0+1/11x

x =36/12 - 6/12x -3/12x -0

已知线性方程组为: