Tải bản đầy đủ (.pdf) (31 trang)

phương pháp tính nguyễn quốc lân c2 hệ phương trình tuyến tính ax=b sinhvienzone com

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (334.95 KB, 31 trang )

BỘ MÔN TOÁN ỨNG DỤNG - ĐHBK

om

-------------------------------------------------------------------------------------

.C

PHƯƠNG PHÁP TÍNH – BG SINH VIÊN

Zo

ne

CHƯƠNG 2

nh
Vi
en

HỆ PHƯƠNG TRÌNH TUYẾN TÍNH

Si

Ax = b

SinhVienZone.com

TS. NGUYỄN QUỐC LÂN (2/2006)

/>



NỘI DUNG
--------------------------------------------------------------------------------------------------------------------------

om

A- CÁC PHƯƠNG PHÁP CHÍNH XÁC

.C

1- PHƯƠNG PHÁP KHỬ GAUSS (PHẦN TỬ TRỤ)

ne

2- PHÂN TÍCH NHÂN TỬ A = LU

nh
Vi
en

Zo

3- PHÂN TÍCH CHOLESKY

B- CÁC PHƯƠNG PHÁP LẶP
1- LẶP JACOBI

Si

2- LẶP GAUSS - SEIDEL

C- SỐ ĐIỀU KIỆN – HỆ ĐIỀU KIỆN XẤU
SinhVienZone.com

/>

TỔNG QUAN
-------------------------------------------------------------------------------------------------------------------------------

Si

Đơn giản: Hệ tam giác



 ,




.C

 b1

b2

b 


bn


ne



Zo

a1n 

a 22

a2n
 ,



an2 
a nn 
a 12

nh
Vi
en

 a 11

a 21

A 
 


 a n1

om

Hệ n phương trình bậc 1 (tuyến tính), n ẩn  Dạng Ax = b:

 a 11

0
A  
 ..........

 0

 x1

x2

x 


 xn



  x  x
1
n





a1n 

a 22

a2n

.......... ........ 

0
 a nn 
a 12



T



 Giải lùi

Hàng i: hi = [ai1 ai2 … ain]T. Biến đổi sơ cấp trên hàng hi 
hi + khj: Nhân hj với k rồi cộng xuống hi (chỉ hi thay đổi)
SinhVienZone.com

/>

PHƯƠNG PHÁP KHỬ GAUSS
----------------------------------------------------------------------------------------------------------------------------------


m 21 

m 31

6

 3

.C

ne

Xây dựng ma trận mở rộng

Zo

 2

3

 7

14

8

30

Si


2

A  A | b  6

 4

2
2

 6

4

 2
 4
2
SinhVienZone.com

1

5

14 

nh
Vi
en

VD: Giải hệ


 2 x1  2 x 2  3 x 3  1

 6 x 1  7 x 2  14 x 3  5

 4 x 1  8 x 2  30 x 3  14

om

Giải thuật: Biến đổi sơ cấp trên hàng  A:  trên  Giải lùi

 2

3

 7

14

8

30

Khử cột 1 với hệ số khử m1j
m1 j 

a1 j

Tổng


quát

: m ij 

a 11

1  h  h  3h
2
2
1

5


h  h 3  2 h1
14  3

2

0

 0

 2

3

1

5


 4 24

/>
a ij
a ii
1


12 
2


GIẢI LÙI & PHẦN TỬ TRỤ
------------------------------------------------------------------------------------------------------------------------------

1

5

 4

24

1
h3  h3  4 h 2

2



12 

2

0

 0

 4

om

3

1

ne

 2

 4

 2

3

1

5


0

4

1

2

4 

Zo

2

0

 0

m 32 

.C

Khử cột 2 với hệ số khử:

nh
Vi
en

Giải lùi với hệ tam giác trên thu được:


Si

 2 x1  2 x 2  3 x 3  1

 x2  5 x3  2


4 x3  4




 x3  4 4  1
2

 
x


2

5
x



1


3


x

3
 2
3
 

 1 
 x 1  1  2 x 2  3 x 3  2  2

Điều kiện: Khử cột 1: a11(1)  0 & Khử cột 2: a22(2)  0 &

Giải lùi: a33(3)  0  Phần tử trụ (pivot) akk  0
SinhVienZone.com

/>

KHỬ GAUSS VỚI LỆNH MAPLE
-------------------------------------------------------------------------------------------------------------------------------

> with(linalg); # Khởi động gói lệnh Đại số tuyến tính

om

> A := matrix(2,3,[2, 3, 4, 1, 2, 3]); # Nhập ma trận

.C

> m21 := A[2,1]/A[1,1]; # Tính hệ số khử


ne

> A := addrow(A,1,2,–m21) ; # Cộng hàng h2  h2 – m21h1

Zo

> A := swaprow(A,1,2) ; # Nếu cần thiết, đổi hàng h2  h1

nh
Vi
en

> x := backsup(A) ; # Hệ đã ở dạng tam giác trên: Giải lùi

> AA := gausselim(A); # Lệnh gộp khử Gauss toàn ma trận
 x1

 2 x1

x1

 x

1

Si

VD: Giải hệ


SinhVienZone.com



x2  2 x3 

x4  8

 2 x 2  3 x 3  3 x 4   20


x2 



x2  4 x3  3 x4  4

x3

 2
/>

KHỬ GAUSS VỚI MA TRẬN “LẺ”: PIVOT ĐƠN VỊ
------------------------------------------------------------------------------------------------------------------------------------

SinhVienZone.com

0

 1 .3


 0 .7

2 . 08

nh
Vi
en

2 . 08

0

 0 . 608
  0 . 152
  0 . 168
 1 . 116

1 . 264 

0  0 . 152

 1 . 3  0 . 168 

2 . 08
1 . 116 
0

Zo


 1 .3

Si

 2 . 08

 0 .7

 A b  
0


0


ne

.C

Gauss, làm tròn 3 chữ số lẻ)

 2 . 08 x 1  1 . 3 x 2

  0 . 7 x 1  2 . 08 x 2  1 . 3 x 3

 0 . 7 x 2  2 . 08 x 3  1 . 3 x 3

  0 . 7 x  2 . 08 x

3

4

om

VD: Giải hệ với phép khử

 0 .7

1 . 006

0 . 636

 y 
 0 . 593

 0 . 736
/>








THỰC TẾ TÍNH TOÁN: VẤN ĐỀ LÀM TRÒN SỐ
--------------------------------------------------------------------------------------------------------------------------------

.C


Nghiệm chính xác: [10, 1]T

ne

 0 . 003 x 1  59 . 14 x 2  59 . 17 (E 1 )

 5 . 291 x 1  6 . 130 x 2  46 . 78 (E 2 )

om

VD: Giải hệ trên máy tính với phép làm tròn 4 chữ có nghóa

 1 , 234567

 10

1

 1 , 235  10

nh
Vi
en

12 , 34567

Zo

Quy tắc làm tròn trên máy tính: Làm tròn chữ số có nghóa


Trụ khử: a11 = 0.003  0 

m 21 

1

 12 , 35

a 21

 1763 , 67  1764

a 11

Si

Biến đổi cột một: (E2)  (E2) – m21(E1)
 0 . 003 x 1  59 . 14 x 2  59 . 17

 104300 x 2   104400

SinhVienZone.com



 x 2  1 . 001
: Tại sao ???

 x 1   10
/>


PHÂN TÍCH NHÂN TỬ (MATRIX FACTORIZATIONS)
--------------------------------------------------------------------------------------------------------------------------------

L

Hệ Ax = b  (LU)x = b 

ne

.C

* 

*

*

*



Zo

* * *

0 * *


0 0 *


0 0 0
   

nh
Vi
en

1 0 0 0 


* 1 0 0

A  
* * 1 0 


*
*
*
1


    


om

Ma trận vuông A phân tích được thành dạng LU 


 Ux  y

 Ly  b

1 
2 

: 2 hệ tam giác

U

Si

Giải hệ đầu  Giải 2 hệ : Ly = b (2) tìm y; Ux = y (1) tìm x
Nhân A

x

Nhân U
SinhVienZone.com

y

Nhân L
/>
b


VÍ DỤ
--------------------------------------------------------------------------------------------------------------------------------


 2

3

5

1

6

 4

0

9

5

 5

2

 1


0
1
  
 5

 2


12 
 3

0

0

.C

 7

1

0

 5

1

8

3

ne

3


Zo





A 




om

Giả sử ma trận A phân tích được thành dạng LU như sau:
0  3
 
0
0

0  0
 
1  0

 7

 2

 2

1


0

1

0

0

1

1

1

 1

nh
Vi
en

Sử dụng phân tích LU trên giải hệ Ax = b = [–9 5 7 11]T
Giải Ux = y tìm x

Si

Giải Ly = b tìm y

SinhVienZone.com


/>

PHÂN TÍCH NHÂN TỬ A = LU
--------------------------------------------------------------------------------------------------------------------------------

1
4

0  2
 
0  0
 
1   0

 2

3

1

5

0




4 

.C


0

ne

1

3

 2

om

Quan sát: Ma trận khử L và ma trận kết quả U. Xét tích L.U

Zo

Kết quả: Nếu quá trình khử Gauss diễn ra bình thường

nh
Vi
en

(không đổi hàng), ma trận A của hệ Ax = b phân tích được

Si

thành tích LU: A = LU với
 L (lower): ma trận tam giác dưới, đường chéo chính bằng
1, chứa các hệ số khử ở vò trí khử

 U (upper): ma trận tam giác trên, cũng là ma trận kết

quả nhận được sau quá trình khử Gauss
SinhVienZone.com

/>

GIẢI THUẬT TÌM LU (CROUT – DOOLITLE)
--------------------------------------------------------------------------------------------------------------------------------

om

Phân tích LU với đường chéo chính L bằng 1  Khử Gauss

m 21  3

Zo


: m 31  2

 8 30  m 32  4

 7 14

1

 L  3

 2


ne

3

nh
Vi
en

VD:

 2

2

A  6

 4

.C

(không đổi hàng). Các hệ số khử tạo L, ma trận kết quả: U
0

0

1

0


4



1 

L (hoặc U) có đchéo chính = 1  G/thuật Doolitle (Crout)

Si

For j = 1 to n: i = 1  j

i = j +1  n
SinhVienZone.com

i 1

u ij  a ij   l ik u kj
k 1

l ij

j 1
1 


a ij   l ik u kj

u jj 
k 1


/>
Tự xem
SGK/ 35


MINH HOAÏ GIAÛI THUAÄT DOOLITLE (ÑCHEÙO L = 1)
------------------------------------------------------------------------------------------------------------------------------

j = 2:

i=2



i=1

j = 3:

a 21
u 11

i=1

SinhVienZone.com

i=3

i=2




32



a 32  

u 13  a 13



31



0

a 31
u 11

u 22  a 22  

21

u 12

i=2

u 23  a 23  


21

u 13

i=3

u 33  a 33  

31

u 13  

u 12  a 12

Si

i=3

21



.C

u 11  a 11

1





0 ,U  0


1 
 0

ne

i=1

0

0

om



 8 30 

 7 14

Zo

j = 1:

1


 L 



3

nh
Vi
en

VD:

 2

2

A  6

 4

31

u 12

u 22

/>
i=3
32


u 23







PHÂN TÍCH CHOLESKY
---------------------------------------------------------------------------------------------------------------------------

om

Tương tự phân tích LU nhưng gọn hơn “phân nửa”!

.C

Ma trận vuông A (n hàng, n cột) : A = [ aij ] xác đònh dương
n

0 

 2

2 


i 1

a ij x i x


j

 0

j 1

nh
Vi
en

1

T

n

Zo

1
VD: A  1

 0

n

ne

 x   x 1 ,  , x n   R , x  0 : x Ax 
T


5

 2

 x   x1 , x 2 , x 3   R

Si

T

3

: ma trận (đối xứng) xác đònh dương vì

T

2

2

2

 x Ax  x 1  5 x 2  2 x 3  2 x 1 x 2  4 x 2 x 3  0

A: XĐD n đònh thức con (hvuông) trên đ/chéo chính đều > 0
SinhVienZone.com

/>


GIẢI THUẬT CHOLESKY
------------------------------------------------------------------------------------------------------------------------------

om

Đònh lý: Ma trận A đối xứng xác đònh dương  Tồn tại

ne

.C

ma trận tam giác dưới B thoả mãn : A = BBT

Zo

A đối xứng: For i = 1 to n do

nh
Vi
en

For j = i+1 to n do

i 1

b ii 

2

a ii   b ik

k 1

b

ji

1 

a

b ii 

i 1
ji

  b
k 1

b
jk ik





Si

Ax = b  (BBT)x = b  BTx = y & By = b: 2 hệ  (như LU)
A k0 xác đònh dương (chỉ đối xứng): A = BBT có thể chứa số


phức  2 hệ BTx = y & By = b: phức. Nhưng nghiệm x: thực!
SinhVienZone.com

/>

MINH HOAÏ GIAÛI THUAÄT CHOLESKY

a 11

j=2

i=3

nh
Vi
en

b 21 

0
0





b 11

j=3


b 31 

a 31
b 11

2

b 22 

j=3

a 21

a 22  b 21

Si

i=2

0

.C

b 11 

5



 B 




0 

 2

2 

ne

i=1

 2

1

Zo

VD:

1

A  1

 0

om

------------------------------------------------------------------------------------------------------------------------------


b 33 
SinhVienZone.com

a 32  b 31 b 21

b 32 

b 22
2

2

a 33  b 31  b 32
/>

TỔNG QUAN PHƯƠNG PHÁP LẶP
--------------------------------------------------------------------------------------------------------------------------

om

Chương 1: Phương pháp lặp đơn với phương trình f(x) = 0

x n 1    x n



ne

.C


x   (x)
f (x)  0  

  (x)   ( y)  q x  y :  'x   q  1

Zo

Hệ Ax = b  x = Tx + c = (x), T: ma trận, c: vectơ. Đkiện:

nh
Vi
en

(x) – (y) qx – y  Dãy lặp: x(n+1) = Tx(n) + c
Chuẩn vectơ, ma trận: x = [x1, x2 … xn]T  Rn, A = [aij ]


 xi  

Si

x

 max

1 i  n

A


n

x

1




i 1

SinhVienZone.com



 n

 max   a ij 
1 i  n
 j 1




 max   a ij 
1 j  n  i 1

n

xi 


A

1

/>

VÍ DỤ
--------------------------------------------------------------------------------------------------------------------------

1

 3


6

3

4

.C



 1

A   2

  5


ne

 1
 x


x   3  


 x
  2 

om

 Tính các chuẩn vectơ và ma trận

6

2 
 A

3  

 A
 1 



1


 12


13

Zo

 Vectơ nào trong số hai vectơ sau xấp xỉ tốt nhất theo

1 

  0 .1 
 0 .3 
2 




  7 .4 , x
  6 .8




 5 . 2 
 4 . 7 

Si


x

nh
Vi
en

chuẩn , chuẩn một nghiệm hệ phương trình
 x1  2 x 2  3 x 3  1

 2 x1  3 x 2  4 x 3   1

 3 x1  4 x 2  6 x 3  2

 2  
 x
x
 
.
1
 1 
 x
x
.

Tch. chuẩn vectơ, chuẩn ma trận: Chuẩn tích  tích chuẩn
Ax

 A  x
SinhVienZone.com




 x    y   T x  y   T  x  y : T  1
/>

LẶP JACOBI
----------------------------------------------------------------------------------------------------------------------------------

 10 x 1  3 x 2  x 3  7 . 5

  3 x 1  10 x 2  x 3  9

  x1  2 x 2  8 x 3   2 .5

om

Với vectơ x(0) = [0, 0, 0]T, tìm vectơ
nghiệm xấp xỉ x(k) của phép lặp

ne

.C

Jacobi với hệ sau. Dừng: x(k)

Zo

“giống” x(k-1) (khoảng 0.3) . So với nghiệm  = [0.5, 1, -0.5]T

nh

Vi
en

1/ Rút x trên đường chéo chính  Đưa về dạng x = Tx + c

Si

3
1
7 .5

x  
x2 
x3 
  0 . 3 x 2  0 . 1 x 3  0 . 75
 1
10
10
10

3
1
9

x1 
x3 
 0 .3 x1  0 .1 x 3  0 .9
 x2 
10
10

10

1
2
2 .5

x  x1  x 2 
 0 . 125 x 1  0 . 25 x 2  0 . 3125
 3
8
8
8

SinhVienZone.com

 x = Tx + c

/>

CÔNG THỨC LẶP JACOBI
--------------------------------------------------------------------------------------------------------------------------


10 
 ,
1
10 

0



 1



ne

.C

T

0 . 75

4
 4 3

 max 
,  
 1, c 
0 .9

 10 8  10
  0 . 3125






 x 1   0 . 3 x 2  0 . 1 x 3  0 . 75  0 . 75

 (1 )
(0)
(0)
x

0
.
3
x

0
.
1
x
 0 .9  0 .9
 2
1
3
 (1 )
(0)
(0)
x

0
.
125
x

0
.

25
x
 0 . 3125   0 . 3125
1
2
 3
( k 1)
(k )
(k )
 x1
  0 . 3 x 2  0 . 1 x 3  0 . 75

(k+1)
x
:  x 2( k  1 )  0 . 3 x 1( k )  0 . 1 x 3( k )  0 . 9
 ( k 1)
(k )
(k )
x3
 0 . 125 x 1  0 . 25 x 2  0 . 3125


(0)

(0)

nh
Vi
en


Zo

(1 )

2/ Từ x(0) tính x(1):

om

0
 3
10

T  3
0
10

1
 2
 8
8

Si

Tổng quát: x(k) 

Sai số: Như lặp đơn với q = ||T||:
SinhVienZone.com

x


k 

 x*





q
1 q

/>
x

1 

 x

0 



LẶP JACOBI KHÔNG BIẾN ĐỔI MA TRẬN A
--------------------------------------------------------------------------------------------------------------------------

( k 1)

 10 x 1

 3 x 2  x 3  7 .5


( k 1)
(k )
(k )
10
x

3
x

x
 9

2
1
3

( k 1)
(k )
(k )
8
x

x

2
x
 2 .5
3
1

2

(k )



SinhVienZone.com

om

.C

: Giữ đ/chéo chính ở vế trái
( x(k+1)) ; Chuyển số hạng
còn lại sang vế phải ( x(k))
: Thay x(k) vào các số hạng

(k )

 9

ngoài đường chéo chính.

  2 .5

Xem x(k+1) là ẩn. Giảix(k+1)

( k 1)

 x3


(k )

 8 x3

 2 x2

chính

 7 .5

 x3

 10 x 2



 3 x 2  x 3  7 .5
 10 x 1 

 x3  9
 10 x 2  3 x 1

 2 .5
 8 x 3  x1  2 x 2

(k )

(k )


3 x2

Si

( k 1)

 10 x 1

(k )

3
x

1

(k )

x
1


nh
Vi
en

Zo

(k )

Đ / chéo


ne

Hệ Ax = b:

 10 x 1  3 x 2  x 3  7 . 5

  3 x 1  10 x 2  x 3  9

  x1  2 x 2  8 x 3   2 .5

( k 1)

/>

TÍNH TOÁN & KẾT QUẢ LẶP JACOBI
-----------------------------------------------------------------------------------------------------------------------------------

 ( k 1)
 3 x 2  x 3  7 .5
x

 1
10

(k )
(k )
3 x1  x 3  9
 ( k 1)


 x2
10

(k )
(k )
 ( k 1)
x1  2 x 2  2 .5

 x3
8


ne

(k )

(k )

om

(k )

0

1

x1(k)

0.0


0.75

x2(k)

0.0

0.9

x3(k)

0.0

–0.3125

Zo

k

nh
Vi
en

(k )

( k 1)

 10 x 1
  3 x 2  x 3  7 .5

( k 1)

(k )
(k )
:  10 x 2
 3 x1  x 3  9

( k 1)
(k )
(k )
8
x

x

2
x
 2 .5
3
1
2


.C

 10 x 1  3 x 2  x 3  7 . 5

Hệ :   3 x 1  10 x 2  x 3  9  Lặp Jacobi

  x1  2 x 2  8 x 3   2 .5

x(k)-x(k-1)


2

0.9

Si

Ưu điểm Lặp Jacobi: Giải các hệ “thưa” (chứa rất nhiều số 0)

ĐK đủ : T



1

M/trận đ/c trội nghiêm ngặt:

n

a ii 


j 1, j  i

SinhVienZone.com

/>
a ij  i



LẶP GAUSS – SEIDEL
--------------------------------------------------------------------------------------------------------------------------

om

Tương tự lặp Jacobi nhưng với thông tin cập nhật hoá
 ( k 1)
 3 x 2  x 3  7 .5

 x1
10

(k )
(k )
3 x1  x 3  9
 ( k 1)

 x2
10

(k )
(k )
 ( k 1)
x1  2 x 2  2 .5

 x3
8


Seidel


ne

Dùng x(k)
để

tính

giá

trò

của x(k+1)

(k )

Si



Zo

 ( k 1)
 3 x 2  x 3  7 .5

 x1
10

( k 1)
(k )

3 x1
 x3  9
 ( k 1)

 x2
10

( k 1)
( k 1)
 ( k 1)
x1
 2 x2
 2 .5

 x3
8

SinhVienZone.com
(k )

Gauss

nh
Vi
en

 10 x 1  3 x 2  x 3  7 . 5
Lặp



Hệ :   3 x 1  10 x 2  x 3  9
Jacobi

  x1  2 x 2  8 x 3   2 .5

(k )

.C

(k )

 x1 (mới): dùng x2 (cũ), x3 (cũ)
 x2 (mới): dùng x1 (mới), x3 (cũ)
 x3 (mới): dùng x1 (mới), x2 (mới)
/>

LẶP GAUSS – SEIDEL: SƠ ĐỒ TÁCH MA TRẬN
-------------------------------------------------------------------------------------------------------------------------

( k 1)

 10 x 1
 3 x2

( k 1)
( k 1)
 10 x 2

  3 x1


( k 1)
( k 1)
( k 1)

x

2
x

8
x

1
2
3


(k )

 7 .5

(k )

 9

 x3
x3

ne


.C

(k )

 2 .5

Si

nh
Vi
en

Zo

 10 x 1  3 x 2  x 3  7 . 5

  3 x 1  10 x 2  x 3  9 

  x1  2 x 2  8 x 3   2 .5

om

Trình bày dạng khác: Xem x(k+1) là ẩn và chuyển sang vế trái

x

0 

k  0  b


k 

k  k 1
Giải

hệ  x

k 1

Gauss - Seidel: Biết x(k)  Tính vế phải b(k)  Giải hệ ra x(k+1)
SinhVienZone.com

/>

LẶP GAUSS – SEIDEL: VÍ DỤ TÁCH MA TRẬN
--------------------------------------------------------------------------------------------------------------------------

( k 1)

 10 x 1
 3 x2

( k 1)
( k 1)

3
x

10
x



1
2

( k 1)
( k 1)
( k 1)

x

2
x

8
x

1
2
3


om

Xét ví dụ lặp Gauss – Seidel, x(0) = [0, 0, 0]T. Công thức lặp:
(k )

 x3

(k )


x3

0

x

nh
Vi
en

k

Zo

ne

.C

(k )

0.0

x2(k)

0.0

x3(k)

0.0


x(k)-x(k-1)

x

1

2

b

x

Si

x1(k)

b

 7 .5 

k 
 9

b


 2 .5 

Phép lặp  Thay hệ Ax = b bằng giải liên tiếp nhiều hệ 

SinhVienZone.com

/>
b


×