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

Phương pháp lặp giải hệ phương tuyến tính số chiếu lớn

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 (470.29 KB, 57 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2

VŨ THỊ VUI

PHƯƠNG PHÁP LẶP GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH
SỐ CHIỀU LỚN

LUẬN VĂN THẠC SĨ TOÁN HỌC

Hà Nội - 2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2

VŨ THỊ VUI

PHƯƠNG PHÁP LẶP GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH
SỐ CHIỀU LỚN

Chuyên ngành: Toán giải tích
Mã số: 60 46 01 02

LUẬN VĂN THẠC SĨ TOÁN HỌC

Người hướng dẫn khoa học:
TS. Hà Bình Minh

Hà Nội - 2015



Lời cảm ơn
Luận văn được hoàn thành tại trường Đại học Sư phạm Hà Nội 2 dưới
sự hướng dẫn của thầy giáo TS. Hà Bình Minh. Sự giúp đỡ và hướng
dẫn tận tình, nghiêm túc của thầy trong suốt quá trình thực hiện luận văn
này đã giúp tôi trưởng thành hơn rất nhiều trong cách tiếp cận một vấn
đề mới. Tôi xin bày tỏ lòng biết ơn, lòng kính trọng sâu sắc nhất đối với
thầy.
Tôi xin trân trọng cảm ơn Ban giám hiệu trường Đại học Sư phạm Hà
Nội 2, phòng Sau đại học, các thầy cô giáo trong nhà trường đã giúp đỡ,
tạo điều kiện thuận lợi cho tôi trong suốt quá trình học tập.
Tôi xin chân thành cảm ơn gia đình, người thân, bạn bè đã giúp đỡ,
động viên và tạo điều kiện thuận lợi để tôi hoàn thành khóa học Thạc sĩ
cũng như hoàn thành luận văn này.

Hà Nội, ngày 09 tháng 06 năm 2015
Tác giả

Vũ Thị Vui


Lời cam đoan
Luận văn được hoàn thành tại trường Đại học Sư phạm Hà Nội 2 dưới
sự hướng dẫn của TS. Hà Bình Minh.
Tôi xin cam đoan luận văn là công trình nghiên cứu của riêng tôi.
Trong quá trình nghiên cứu và hoàn thành luận văn tôi đã kế thừa
những thành quả khoa học của các nhà khoa học và đồng nghiệp với sự
trân trọng và biết ơn.
Tôi xin cam đoan rằng các thông tin trích dẫn trong luận văn đã được
chỉ rõ nguồn gốc.


Hà Nội, ngày 09 tháng 06 năm 2015
Tác giả

Vũ Thị Vui


i

Mục lục
Mục lục . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

i

Mở đầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

Chương 1. Một số phương pháp lặp cổ điển . . . . . . . . . . . . . . .

3

1.1. Phương pháp Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.1.1. Giới thiệu phương pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3


1.1.2. Điều kiện hội tụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.1.3. Ví dụ số minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2. Phương pháp Gauss - Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.2.1. Giới thiệu phương pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.2.2. Điều kiện hội tụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

1.2.3. Ví dụ số minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

Chương 2. Các phương pháp Krylov . . . . . . . . . . . . . . . . . . . . .

14

2.1. Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


14

2.2. Phương pháp Gradient liên hợp . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.2.1. Giới thiệu phương pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.2.2. Ví dụ số minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.3. Phương pháp GMRES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.3.1. Giới thiệu phương pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.3.2. Ví dụ số minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.4. Phương pháp QMR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27


2.4.1. Giới thiệu phương pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

2.4.2. Ví dụ số minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

2.5. Phương pháp Bi-CGSTAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

2.5.1. Giới thiệu phương pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

2.5.2. Ví dụ số minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37


ii

Chương 3. Ứng dụng của phương pháp lặp . . . . . . . . . . . . . . .

39

3.1. Ứng dụng trong giải phương trình Poisson . . . . . . . . . . . . . . . . . .

39


3.2. Ví dụ số minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

Kết luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

Phụ lục . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45


1

Mở đầu
1. Lí do chọn đề tài
Nhiều bài toán trong thực tế đòi hỏi phải giải hệ phương trình tuyến
tính cỡ lớn có dạng Ax ✏ b, trong đó A là ma trận có số chiều lớn và
thưa (tức là chỉ có một số ít các phần tử khác 0). Chẳng hạn, những hệ
phương trình này xuất hiện ta giải bài toán biên của phương trình đạo
hàm riêng bằng các phương pháp rời rạc hóa, như phương pháp sai phân
hoặc phương pháp phần tử hữu hạn. Những phương pháp cổ điển để giải
hệ phương trình tuyến tính, chẳng hạn như phương pháp khử Gauss, sẽ
rất khó có thể áp dụng để giải những hệ này. Lý do là vì phương pháp khử

Gauss được áp dụng cho ma trận đặc và khi áp dụng cho ma trận thưa sẽ
làm cho số phép toán trở nên rất lớn, không thể thực hiện nổi đối với máy
tính thông thường. Hơn nữa, số lượng bộ nhớ sử dụng cho phương pháp
Gauss cũng trở nên rất lớn.
Với những lý do nêu trên, phương pháp lặp giải hệ phương trình tuyến
tính cỡ lớn được nghiên cứu từ lâu. Theo phương pháp này, bắt đầu từ
một vector khởi tạo x♣0q , ta sẽ sinh ra một dãy các vector

x♣0q

Ñ x♣1q Ñ x♣2q Ñ . . .

hội tụ đến nghiệm x. Quá trình sinh vector x♣k 1q từ vector x♣kq sử dụng
phép nhân ma trận A với một vector nào đó. Phép nhân này rất tiết kiệm
do A là ma trận thưa và chỉ cần số ít bộ nhớ để lưu trữ. Hai phương pháp
lặp được biết đến nhiều nhất theo hướng này là phương pháp Jacobi và
phương pháp Gauss-Seidel.
Bên cạnh đó, một lớp các phương pháp lặp được phát triển trong thời
gian gần đây là lớp các phương pháp Krylov. Đặc trưng của lớp các phương
pháp này quá trình lặp sẽ hội tụ đến nghiệm chính xác sau một số hữu hạn
bước lặp. Cụ thể, quá trình lặp sẽ cho nghiệm x♣kq sẽ là xấp xỉ tốt nhất


2

nghiệm của hệ Ax ✏ b trong không gian Krylov k chiều. Một số phương
pháp lặp thuộc lớp này phải kể đến là: phương pháp gradient liên hợp của
Hestenes và Stiefel (1952) cho hệ tuyến tính có ma trận A đối xứng xác
định dương; phương pháp GMRES của Saad và Schultz (1986); phương
pháp QMR của Freund và Nachtigal (1991); và phương pháp Bi-CGSTAB

của van der Vorst (1992).

2. Mục đích và nhiệm vụ nghiên cứu
Khảo cứu một số phương pháp lặp dùng để giải hệ phương trình tuyến
tính cỡ lớn, và áp dụng để nghiệm số cho phương trình đạo hàm riêng.

3. Đối tượng và phạm vi nghiên cứu
Hệ phương trình tuyến tính cỡ lớn, phương trình vi phân đạo hàm riêng.

4. Phương pháp nghiên cứu
Sử dụng các phương pháp giải số, ngôn ngữ lập trình MATLAB,...

5. Đóng góp mới của đề tài
Áp dụng phương pháp lặp để giải hệ phương trình tuyến tính cỡ lớn, sau
đó lập trình, thực hiện các phương pháp này bằng phần mềm MATLAB.


3

CHƯƠNG 1

Một số phương pháp lặp cổ điển
Nội dung của chương này được tham khảo chủ yếu từ các tài liệu [1, 2].

1.1. Phương pháp Jacobi
1.1.1. Giới thiệu phương pháp
Xét hệ phương trình tuyến tính

Ax ✏ b,


(1.1)

được khai triển dưới dạng sau:


a11


a21

.

✕ ..

a12
a22
..
.

an1 an2

✜✔ ✜ ✔ ✜
☎ ☎ ☎ a1n ✣ ✖ x1 ✣ ✖ b1 ✣
☎ ☎ ☎ a2n ✣✣ ✖✖ x2 ✣✣ ✏ ✖✖ b2 ✣✣ .
. . . .. ✣ ✖ .. ✣ ✖ .. ✣
. ✢✕ . ✢ ✕ . ✢
☎ ☎ ☎ ann
xn
bn


Để sử dụng phương pháp lặp Jacobi, ta giả thiết rằng ma trận A có tính
chéo trội, được định nghĩa như sau:
Định nghĩa 1.1.1 (Ma trận chéo trội). Ma trận A được gọi là có tính
chéo trội nếu giá trị tuyệt đối của các phần tử nằm trên đường chéo chính
lớn hơn tổng các giá trị tuyệt đối của các phần còn lại nằm trên cùng hàng,
tức là

n

j ✁1,j ✘i

⑤aij ⑤ ➔ ⑤aii⑤, ♣i ✏ 1, nq.

(1.2)


4

Ví dụ 1.1.1. Ma trận



A✏✕

10 2 1
2 20 ✁2
✁2 3 10




✢,

là ma trận chéo trội.
Trong phương pháp lặp Jacobi, trước hết, ta biến đổi hệ (1.1) về dạng
sau:

aii xi  

ñ


j ✁1,j ✘i

aij xj

✏ bi, ♣i ✏ 1, nq,



aij
bi
✏✁
xj   , ♣i ✏ 1, nq,
a
aii
j ✁1,j ✘i ii
✜✔ ✜ ✔ ✜
✔ ✜ ✔
x1
0 b12 ☎ ☎ ☎ b1n

x1
g1
















x
b
0



b
x
g
2
21
2n

2
2
ñ ✖✖ .. ✣✣ ✏ ✖✖ .. .. . . . .. ✣✣ ✖✖ .. ✣✣   ✖✖ .. ✣✣,
. ✢✕ . ✢ ✕ . ✢
✕ . ✢ ✕ . .
xn
bn1 bn2 ☎ ☎ ☎ 0
xn
gn
❧♦♦♦♦♦♦♦♦♦♦♦♦♠♦♦♦♦♦♦♦♦♦♦♦♦♥
❧♦♦♠♦♦♥

ñ

xi

x ✏ Bx   g

g

B


✫0,
bi
n
và B ✏ ♣bij q1 với bij ✏
trong đó gi ✏
✪✁ aij ,
aii

a
ii

(1.3)

✏ i,
j ✘ i.

j

Ý tưởng của phương pháp lặp Jacobi là tính một dãy các vector x♣0q , x♣1q , . . . ,

x♣nq , . . . dựa trên phương trình (1.3), cụ thể như sau:
Phương pháp lặp Jacobi:
Đầu vào: Ma trận A, b.

Đầu ra: Dãy x♣0q , x♣1q , . . . , x♣nq , . . . .
Với B , g xác định bởi (1.3), ta chọn vector khởi tạo x♣0q và xác định
các phần tử của dãy x♣0q , x♣1q , . . . , x♣nq , . . . theo các bước sau:


5

✏ Bx♣0q   g.
Tính x♣2q ✏ Bx♣1q   g.

• Bước 1: Tính x♣1q
• Bước 2:
...


• Bước k: Tính x♣kq

✏ Bx♣k✁1q   g.

1.1.2. Điều kiện hội tụ
Một phép lặp Jacobi chỉ đem lại hiệu quả khi vector x♣kq hội tụ đến

nghiệm chính xác x✝ . Điều kiện để một dãy sinh bởi phép lặp Jacobi hội
tụ được nêu trong Định lý 1.1.1.
Định lí 1.1.1. Xét phương trình x ✏ Bx   g và vector khởi tạo x♣0q
cho trước. Nếu ⑥B ⑥ ➔ 1 với một chuẩn nào đó, thì sẽ tồn tại x✝ sao cho

x✝

✏ kÑ ✽
lim x♣kq là nghiệm chính xác của (1.1). Hơn nữa, vector x♣kq trong

phép lặp

x♣1q
x♣2q




Bx♣0q   g,



Bx♣k✁1q   g,


..
.

x♣kq

Bx♣1q   g,

sẽ hội tụ tới nghiệm duy nhất x✝ . Hơn nữa, sai số giữa x♣kq và nghiệm
chính xác x✝ được đánh giá bằng các công thức sau:

⑥x♣kq ✁ x✝⑥ ↕ 1 ✁⑥B⑥⑥B ⑥ ⑥x♣kq ✁ x♣k✁1q⑥,

(1.4)

hoặc

⑥x♣kq ✁ x✝⑥


B ⑥k
↕ 1 ✁ ⑥B ⑥ ⑥x♣1q ✁ x♣0q⑥.

(1.5)


6

Ta sẽ áp dụng định lý trên cho phép lặp Jacobi. Trong phép lặp Jacobi,
ma trận B được cho bởi


a12
a1n ✜
0



a11
a11 ✣

a21
a2n


0 ☎☎☎


a22
a22 ✣ .
B ✏ ✁✖

..
..
. . . .. ✣

.
.
. ✣
✕ an1 an2


☎☎☎ 0
ann ann
Ta thấy rằng nếu A là ma trận chéo trội thì

⑥B ⑥✽ :✏ 1max
↕i↕n

n


j ✏1

⑤bij ⑤ ✏ 1max
↕i↕n

➳ ⑤aij ⑤
tổng hàng thứ i

max
➔ 1,
1↕i↕n

a


a

ii
ii
j ⑧✏i


nên theo Định lý 1.1.1, phép lặp Jacobi là hội tụ. Như vậy,
Điều kiện cần để Phương pháp lặp Jacobi hội tụ là A là ma trận chéo
trội.

1.1.3. Ví dụ số minh họa
Ví dụ 1.1.2. Tìm nghiệm gần đúng của hệ phương trình sau:





✫4x1   0.24x2 ✁ 0.08x3 ✏ 8
0.09x1   3x2 ✁ 0.15x3 ✏ 9



✪0.04x1   0.08x2 ✁ 4x3 ✏ 20
Các ma trận tham số của hệ Ax ✏ b tương ứng là:


✔ ✜
4 0.24 ✁0.08
8




A ✏ ✕ 0.09 3 ✁0.15 ✢ , b ✏ ✕ 9 ✢ .
0.04 0.08 ✁4

20

• Bước 1: Kiểm tra tính chéo trội của ma trận A. Dễ thấy A là ma trận
chéo trội vì ⑤a11 ⑤ ✏ 4 → ⑤a12 ⑤   ⑤a13 ⑤ ✏ 0.32, ⑤a22 ⑤ → ⑤a21 ⑤   ⑤a23 ⑤ và
⑤a33⑤ → ⑤a31⑤   ⑤a32⑤.


7

• Bước 2: Đưa hệ về dạng x ✏ Bx   g như sau:

✔ ✜ ✔
✜✔ ✜ ✔ ✜
x1
0
✁0.06 0.02
x1
2







✕ x2 ✢ ✏ ✕ ✁0.03 0 0.05 ✢ ✕ x2 ✢   ✕ 3 ✣
✢ ✏ Bx   g.
x3
✁0.01 0.02 0
x3

5
❧♦♦♦♦♦♦♦♦♦♦♦♦♦♦♠♦♦♦♦♦♦♦♦♦♦♦♦♦♦♥
❧♦♦♠♦
♦♥
g

B

• Bước 3: Kiểm tra điều kiện hội tụ ⑥B ⑥✽

⑥B ⑥✽ ✏


➔ 1:

max♣0   0.06   0.02; 0.03   0   0.05; 0.01   0.02   0q

max♣0.08; 0.08; 0.03q ✏ 0.08 ➔ 1.

Vậy điều kiện hội tụ được thỏa mãn.

• Bước 4: Chọn vector khởi tạo x♣0q ✏



2 3 5

✙T

, rồi tính x♣1q , x♣2q , . . .


theo Phương pháp lặp Jacobi, ta được bảng kết quả sau:

x♣0q

x♣1q

x♣2q

x♣3q

✔ ✜
2





3✣
✕ ✢



1.92





3.19 ✣






1.9094





3.1944 ✣





1.909228





3.194948 ✣



5

5.04


5.0446

5.044794

• Đánh giá sai số: giả sử ta xem x♣3q là nghiệm gần đúng cần tìm, ta sẽ
đánh giá sai số giữa x♣3q và nghiệm chính xác x✝ theo công thức (1.4)
như sau:

⑥x♣3q ✁ x✝⑥✽ ↕ 1 ✁⑥B⑥⑥B✽⑥ ⑥x♣3q ✁ x♣2q⑥✽

↕ 1 ✁0.08
max♣0.000172; 0.000548; 0.000194q
0.08
✏ 0.0000476 ✓ 5 ✂ 10✁5.


8

1.2. Phương pháp Gauss - Seidel
1.2.1. Giới thiệu phương pháp
Tương tự như phương pháp lặp Jacobi, ta biến đổi hệ (1.1) về dạng
sau:

aii xi  


j ✁1,j ✘i

aij xj


✏ bi, ♣i ✏ 1, nq,

➳ aij
bi
✏✁
xj   , ♣i ✏ 1, nq,
aii
aii
✜✔ ✜
✔ ✜j✁1,j✔✘i
x1
0 0 ☎☎☎ 0
x1












x
b
0




0
x
2
21
2
ñ ✖✖ .. ✣✣ ✏ ✖✖ .. .. . . . .. ✣✣ ✖✖ .. ✣✣  
. ✢✕ . ✢
✕ . ✢ ✕ . .
xn
bn1 bn2 ☎ ☎ ☎ 0
xn
❧♦♦♦♦♦♦♦♦♦♦♦♠♦♦♦♦♦♦♦♦♦♦♦♥

ñ

xi

B1

ñ

x ✏ B1 x   B2 x   g

(1.6)


0



0

.

✕ ..

✜✔ ✜ ✔ ✜
b12 ☎ ☎ ☎ b1n
x1
g1









x
g
0 ☎ ☎ ☎ b2n ✣
2
2






 
.. . .
.. ✣ ✖ .. ✣ ✖ .. ✣,
. . ✢✕ . ✢ ✕ . ✢
.
0 0 ☎☎☎ 0
xn
gn
❧♦♦♦♦♦♦♦♦♦♦♦♠♦♦♦♦♦♦♦♦♦♦♦♥
❧♦♦♠♦♦♥
g

B2

(1.7)

trong đó

gi
B1

B2



bi
,
aii



✫0,
n
✏ ♣bij q1 là ma trận tam giác dưới với bij ✏ ✪ aij
✁a ,
✩ ii
✫0,
n
✏ ♣bij q1 là ma trận tam giác trên với bij ✏ ✪ aij
✁a ,
ii

➙ i,
j ➔ i.

j

↕ i,
j → i.

j


9

Ý tưởng của phương pháp lặp Gauss-Seidel là tính dãy các vector
x♣0q , x♣1q , . . . , x♣nq , . . . , dựa trên phương trình (1.7), như sau:
Phương pháp lặp Gauss-Seidel:
Đầu vào: Ma trận A, b.

Đầu ra: Dãy x♣0q , x♣1q , . . . , x♣nq , . . . .

Với B1 , B2 , g cho bởi (1.7), ta chọn vector khởi tạo x♣0q và xác định
các phần tử tiếp theo của dãy như sau:

✏ B1x♣1q   B2x♣0q   g.
Tính x♣2q ✏ B1 x♣2q   B2 x♣1q   g.

• Bước 1: Tính x♣1q
• Bước 2:
...

• Bước k: Tính x♣kq

✏ B1x♣kq   B2x♣k✁1q   g.

Trong bước thứ k , do B1 là ma trận tam giác dưới nên phép nhân B1 x♣kq

♣kq

♣kq

chỉ liên quan đến k ✁ 1 phần tử từ x1 đến xk✁1 . Như vậy, phương pháp
Gauss - Seidel cải tiến phương pháp Jacobi bằng cách dùng ngay những
kết quả vừa tính được cho các thành phần tiếp theo.

1.2.2. Điều kiện hội tụ
Phương pháp Gauss-Seidel sẽ hội tụ khi ma trận A là chéo trội. Ta có
định lý sau:
Định lí 1.2.1. Nếu ma trận A có tính chéo trội thì phương pháp GaussSeidel sẽ hội tụ.
Chứng minh. Vì ma trận A có tính chéo trội, nên ⑥B ⑥✽
B ✏ ♣bij qn1 , với



✫0,
bij ✏
✪✁ aij ,
a
ii

i ✏ j,
i ✘ j.

➔ 1, trong đó


10

Áp dụng Định lý 1.1.1 suy ra phương trình (1.3) có nghiệm x✝ duy nhất.
Để đánh giá sai số, ta xét hiệu

➳ ♣k 1q ✝ ➳ ♣kq ✝

k  1q

xi
✁ xi ✏ bij ♣xj ✁ xj q   bij ♣xj ✁ xj q.
j ➔i
j →i

Suy ra


⑤xi♣k 1q ✁ x✝i ⑤ ↕


j ➔i


⑤bij ⑤

x♣k 1q ✁ x✝ ✽

 

  ⑤bij ⑤ x♣kq ✁ x✝ ✽, ♣i ✏ 1, nq.
j →i


Đặt βi :✏ j ➔i ⑤bij ⑤; γi :✏ j ➙i ⑤bij ⑤, ta có
⑤x♣ik 1q ✁ x✝i ⑤ ↕ βi x♣k 1q ✁ x✝ ✽  
  γi x♣kq ✁ x✝ ✽, ♣i ✏ 1, nq.
♣k 1q ✁ x✝ ⑤ ✏ ⑤x♣k 1q ✁ x✝ ⑤.
Giả sử x♣k 1q ✁ x✝ ✽ ✑ max ⑤xi
i
i
i
1↕i↕n
Áp dụng (1.8) cho i ✏ i0 , ta được
x♣k 1q ✁ x✝ ✽ ↕ βi x♣k 1q ✁ x✝ ✽  γi x♣kq ✁ x✝
0

0


0

(1.8)

0

✽,

hay

x♣k 1q ✁ x✝ ✽ ↕
trong đó ν

γi0
1 ✁ βi0

x♣kq ✁ x✝ ✽ ↕ ν

γi
✏ 1max
.
↕i↕n 1 ✁ β

x♣kq ✁ x✝ ✽ ,

i




βi   γi
nên



n


j ✏1

βi   γi ✁

do đó

⑤bij ⑤ ↕ 1max
↕i↕n

n

j ✏1

⑤bij ⑤ ✏ ⑥B ⑥✽ ➔ 1,

βi ♣1 ✁ βi ✁ γi q

➙ 0,
1 ✁ βi
1 ✁ βi
γi


γi
✏ 1max
↕ max ♣β   γiq ✏ ⑥B ⑥✽ ➔ 1.
↕i↕n 1 ✁ βi 1↕i↕n i
Từ (1.9) suy ra x♣kq ✁ x✝ ✽ Ñ 0, ♣k Ñ ✽q.
ν

(1.9)


11

Nhận xét:
1. Điều kiện hội tụ của phương pháp lặp Gauss-Seidel cũng giống với
phương pháp lặp Jacobi. Phương pháp Gauss-Seidel nói chung hội tụ
nhanh hơn phương pháp Jacobi.
2. Phương pháp Gauss - Seidel tiết kiệm bộ nhớ, vì các thành phần vừa
tính được, được sử dụng ngay để tính các thành phần tiếp theo.

1.2.3. Ví dụ số minh họa
Ví dụ 1.2.1. Tìm nghiệm gần đúng của hệ phương trình sau theo phương
pháp lặp Gauss-Seidel:





✫4x1   0.24x2 ✁ 0.08x3 ✏ 8
0.09x1   3x2 ✁ 0.15x3 ✏ 9




✪0.04x1   0.08x2 ✁ 4x3 ✏ 20

Các ma trận tham số của hệ Ax ✏ b tương ứng là:


4

A ✏ ✕ 0.09

0.24
3
0.04 0.08


✔ ✜
✁0.08
8


✁0.15 ✢ , b ✏ ✕ 9 ✣✢ .
✁4
20

• Bước 1: Kiểm tra tính chéo trội của ma trận A. Dễ thấy A là ma trận
chéo trội vì ⑤a11 ⑤ ✏ 4 → ⑤a12 ⑤   ⑤a13 ⑤ ✏ 0.32, ⑤a22 ⑤ → ⑤a21 ⑤   ⑤a23 ⑤ và
⑤a33⑤ → ⑤a31⑤   ⑤a32⑤.



12

• Bước 2: Đưa hệ về dạng x ✏ B1 x   B2 x   g như sau:

✔ ✜ ✔
✜✔ ✜
x1
0
0 0
x1





✕ x2 ✢ ✏ ✕ ✁0.03 0 0 ✢ ✕ x2 ✣
✢ 
x3
✁0.01 0.02 0
x3
❧♦♦♦♦♦♦♦♦♦♦♦♠♦♦♦♦♦♦♦♦♦♦♦♥
B

✜✔ ✜ ✔ ✜
0 ✁0.06 0.02
x1
2






✕ 0 0 0.05 ✢ ✕ x ✢   ✕ 3 ✣

1

2

0
0
0
❧♦♦♦♦♦♦♦♦♦♦♦♠♦♦♦♦♦♦♦♦♦♦♦♥



x3

5
❧♦♦♠♦
♦♥
g

B2

B1 x   B2 x   g.

• Bước 3: Kiểm tra điều kiện hội tụ ⑥B ⑥✽

➔ 1:
⑥B ⑥✽ ✏ max♣0   0.06   0.02; 0.03   0   0.05; 0.01   0.02   0q

✏ max♣0.08; 0.08; 0.03q ✏ 0.08 ➔ 1.

Vậy điều kiện hội tụ được thỏa mãn.

• Bước 4: Chọn vector khởi tạo x♣0q ✏



2 3 5

✙T

, rồi tính x♣1q , x♣2q , . . .

theo Phương pháp lặp Gauss-Seidel, ta được bảng kết quả sau:

x♣0q

✔ ✜
2





3✣
✕ ✢
5








x♣1q
1.92
3.1924
5.044648







x♣2q

x♣3q



1.9093489





3.194952 ✣






1.909199





3.1949643 ✣



5.0448056

5.0448073

• Đánh giá sai số: giả sử ta xem x♣3q là nghiệm gần đúng cần tìm, ta sẽ
đánh giá sai số giữa x♣3q và nghiệm chính xác x✝ theo công thức sau:
⑥x♣3q ✁ x✝⑥✽ ↕ 1 ✁ν ν ⑥x♣3q ✁ x♣2q⑥✽.
Ta có

⑥x♣3q ✁ x♣2q⑥✽ ✏ max♣0.0001499; 0.000123; 0.0000017q ✏ 0.0001499,


13

ν


γi
✏ max♣0.08; 0.0515463; 0q ✏ 0.08.
✏ 1max
↕i↕n 1 ✁ β
i

Như vậy

⑥x♣3q ✁ x✝⑥✽ ↕ 1 ✁0.08
0.0001499 ✓ 1.3 ✂ 10✁5 .
0.08


14

CHƯƠNG 2

Các phương pháp Krylov
Nội dung của chương này được tham khảo chủ yếu từ tài liệu [2], mục
8.7.

2.1. Giới thiệu
Xét hệ phương trình tuyến tính

Ax ✏ b,
với A là ma trận thực không suy biến. Bắt đầu từ một vector x♣0q , phương
pháp Krylov sẽ sinh ra một dãy các vector

x♣0q


Ñ x♣1q Ñ ☎ ☎ ☎ Ñ x♣mq,

tiến tới nghiệm chính xác x♣mq

m ↕ n.

✏ x✝ :✏ A✁1b sau nhiều nhất m bước, với

Các Phương pháp Krylov: sử dụng phép lặp để sinh ra dãy tx♣kq ✉
thỏa mãn

x♣kq

€ x♣0q   Kk ♣r♣0q, Aq,

với mọi k

✏ 1, 2, . . . ,

trong đó Kk ♣r♣0q , Aq là không gian Krylov được định nghĩa như sau:

Kk ♣r♣0q , Aq :✏ spanrr♣0q , Ar♣0q , . . . , Ak✁1 r♣0q s, k

✏ 1, 2, . . .


15

Một số đặc điểm của các phương pháp Krylov:


• Do có sai số luôn xảy ra trong quá trình tính toán (làm tròn số thực,
phép nhân, chia số thực,...) nên trên thực tế các phương pháp này
không thể kết thúc sau hữu hạn bước. Điều này dẫn đến câu hỏi về
tốc độ hội tụ của phương pháp là bao nhiêu.
• Khối lượng tính toán trên mỗi phép lặp tương đương với khối lượng
tính toán của phép nhân ma trận với một vector.
• Các phương pháp chỉ thích hợp khi A là ma trận thưa (là ma trận có
nhiều phần tử bằng 0), không thích hợp nếu A là ma trận đặc (là ma
trận có ít phần tử bằng 0).
Các phương pháp Krylov được trình bày trong chương này bao
gồm:
1) Phương pháp Gradient liên hợp: Phương pháp này được đề xuất bởi
Hestenes và Stiefel (1952) cho hệ với ma trận A xác định dương. Ta

gọi ⑥z ⑥A :✏ z T Az là chuẩn sinh ra từ ma trận xác định dương A.
Theo phương pháp này, ở bước thứ k ta sẽ đi tìm x♣kq sao cho:



✫x♣kq € x♣0q   Kk ♣r♣0q, Aq,

✪⑥x♣kq ✁ x✝⑥A ✏ z€x  min
K ♣r
♣0q

k

♣0q



z ✁ x ✝ ⑥A .
,Aq

Chúng tôi sẽ mô tả phương pháp này trong mục 2.2.
2) Phương pháp GMRES (generalized minimum residual method): Phương
pháp GMRES được áp dụng trong trường hợp ma trận A không suy
biến. Theo phương pháp này, ở bước thứ k ta sẽ đi tìm x♣kq sao cho:



✫x♣kq € x♣0q   Kk ♣r♣0q, Aq,

✪⑥b ✁ Ax♣kq⑥2 ✏ z€x  min
K ♣r
♣0q

k

♣0q

,Aq

⑥b ✁ Az⑥2.

Phương pháp GMRES sẽ được mô tả trong mục 2.3.


16

3) Phương pháp QMR (quasi-minimal residual method): Phương pháp

QMR được áp dụng trong trường hợp ma trận A thưa (tức là ma
trận có nhiều phần tử bằng 0). Phương pháp này dựa trên thuật
toán song trực giao hóa Lanczos để xây dựng cơ sở không trực giao

v ♣1q , . . . , v ♣kq cho không gian Krylov Kk ♣r♣0q , Aq k chiều. Sử dụng hệ
cơ sở này, ta có thể tính toán xấp xỉ x♣kq € x♣0q   Kk ♣r♣0q , Aq với phần
dư nhỏ nhất. Phương pháp QMR sẽ được mô tả trong mục 2.4.

4) Phương pháp Bi-CGSTAB: Phương pháp Bi-CGSTAB được áp dụng
trong trường hợp ma trận A là tùy ý. Phương pháp này được đề xuất
bởi Van der Vost (1992) và được mô tả trong mục 2.5.

2.2. Phương pháp Gradient liên hợp
2.2.1. Giới thiệu phương pháp
Xét hệ phương trình tuyến tính

Ax ✏ b,

(2.1)

với A là ma trận thực, xác định dương, n ✂ n chiều, b
chính xác x✝ ✏ A✁1 b.
Ta ký hiệu ⑥z ⑥A :✏

€ Rn và nghiệm



z T Az là chuẩn sinh ra từ ma trận A.
Xét phiếm hàm toàn phương F : Rn Ñ R có dạng sau:

F ♣z q :✏

1
2

⑥♣z ✁ x✝q⑥2A,

Ta nhận thấy rằng nghiệm chính xác x✝
của hàm F ♣z q vì

✏ A✁1b chính là điểm cực tiểu

0 ✏ F ♣x✝ q ✏ minn F ♣z q.
z €R

Như vậy việc tìm nghiệm chính xác x✝ tương đương với việc tìm điểm cực

tiểu của hàm F ♣z q. Để tìm cực tiểu hàm F ♣z q, ta có thể sử dụng “Phương
pháp giảm nhanh nhất”, trong đó dãy x♣0q Ñ x♣1q Ñ ☎ ☎ ☎ , được xây dựng


17

theo hướng Gradient của F như sau:

x♣k 1q : F ♣x♣k 1q q ✏ min F ♣x♣kq  ur♣kq q với r♣kq :✏ ✁∇F ♣x♣kq q ✏ ✁Ax♣kq  b.
u

Phương pháp Gradient liên hợp khác với “Phương pháp giảm nhanh nhất”
ở chỗ: tại bước x♣kq Ñ x♣k 1q , việc tính toán x♣k 1q sẽ được cực tiểu hóa


trên không gian ♣k   1q chiều, thay vì chỉ cực tiểu hóa trên không gian 1
chiều như “Phương pháp giảm nhanh nhất”:

x♣k 1q :

F ♣x♣k 1q q ✏ min F ♣x♣kq   u0 r♣0q   ☎ ☎ ☎   uk r♣kq q,
u0 ,...,uk

r♣iq :✏ b ✁ Ax♣iq với i ↕ k.

(2.2)

Sử dụng công thức (2.2) ta xây dựng được dãy các vector tx♣kq ✉ theo thuật
toán sau:
Thuật toán Gradient liên hợp:
Đầu vào: Ma trận A, b.
Đầu ra: Dãy x♣0q , x♣1q , . . . , x♣nq , . . . .
Khởi tạo: Chọn x♣0q
Cho k

✏ 0, 1, . . . :

€ Rn, và đặt p♣0q :✏ r♣0q :✏ b ✁ Ax♣0q.

• Bước 1: Nếu p♣kq ✏ 0, tập m :✏ k và dừng lại: x♣kq là nghiệm của
Ax ✏ b. Nếu không thì, chuyển sang Bước 2.
• Bước 2: Tính



r♣kq qT r♣kq
ak :✏ ♣kq T ♣kq , x♣k 1q :✏ x♣kq   ak p♣kq ,
♣p q Ap
♣r♣k 1qqT r♣k 1q ,
r♣k 1q :✏ r♣kq ✁ ak Ap♣kq , bk :✏
♣r ♣ k q qT r ♣ k q
p♣k 1q :✏ r♣k 1q   bk p♣kq .

Theo thuật toán, tại mỗi bước chỉ có 4 vector x♣kq , r♣kq , p♣kq , và Ap♣kq
cần được lưu trữ. Công việc tính toán chủ yếu tại mỗi bước lặp chỉ là một
phép nhân ma trận Ap♣kq .


18

Các tính chất lý thuyết quan trọng nhất của phương pháp này được
tóm tắt trong định lý sau:
Định lí 2.2.1. Giả sử A là ma trận thực, xác định dương n ✂ n chiều và
b € Rn . Gọi x♣0q € Rn là vector khởi tạo và m, m ↕ n là một số nguyên
không âm nhỏ nhất, sao cho p♣mq ✏ 0. Các vector x♣kq , p♣kq , r♣kq , k
được sinh bởi thuật toán Gradient liên hợp có các tính chất sau:

↕ m,

(a) Ax♣mq ✏ b, tức là phương pháp Gradient liên hợp tính ra được nghiệm
chính xác của phương trình Ax ✏ b sau nhiều nhất n bước.
(b) ♣r♣j q qT p♣iq

✏ 0 với 0 ↕ i ➔ j ↕ m.
(c) ♣r♣iq qT p♣iq ✏ ♣r♣iq qT r♣iq với i ↕ m.

(d) ♣p♣iq qT Ap♣j q ✏ 0 với 0 ↕ i ➔ j ↕ m, ♣p♣j q qT Ap♣j q → 0 với j ➔ m.
(e) ♣r♣iq qT r♣j q ✏ 0 với 0 ↕ i ➔ j ↕ m, ♣r♣j q qT r♣j q → 0 với j ➔ m.
(f) r♣iq ✏ b ✁ Ax♣iq với i ↕ m.

Chứng minh. Chúng ta bắt đầu chứng minh bằng việc sử dụng phép quy
nạp toán học trên k để chỉ ra rằng mệnh đề ♣Ak q sau là đúng với mọi

0 ↕ k ↕ m, ở đây m là chỉ số đầu tiên với p♣mq ✏ 0 :
(1) ♣r♣j q qT p♣iq ✏ 0 với 0 ↕ i ➔ j ↕ k,
(2) ♣r♣iq qT r♣iq → 0 với 0 ↕ i ➔ k , ♣r♣iq qT p♣iq ✏ ♣r♣iq qT r♣iq với 0 ↕ i ↕ k,
♣Ak q (3) ♣p♣iqqT Ap♣jq ✏ 0 với 0 ↕ i ➔ j ↕ k,
(4) ♣r♣iq qT r♣j q ✏ 0 với 0 ↕ i ➔ j ↕ k,
(5) r♣iq ✏ b ✁ Ax♣iq với 0 ↕ i ↕ k .
♣A0q là hiển nhiên đúng. Chúng ta giả thiết quy nạp rằng ♣Ak q đúng với
mỗi 0 ↕ k ➔ m và chứng tỏ ♣Ak 1 q đúng.
Thật vậy,
• (1): Với 0 ↕ i ➔ j
♣Ak q ♣1q, ♣3q ta có

↕ k   1, từ thuật toán Gradient liên hợp và

♣r♣k 1qqT p♣iq ✏ ♣r♣kq ✁ ak Ap♣kqqT p♣iq
✏ ♣r♣kqqT p♣iq ✁ ak A♣p♣kqqT p♣iq
✏ ♣r♣kqqT p♣iq ✁ ak Ap♣kq♣p♣iqqT
✏ 0.


19

Suy ra ♣Ak 1 q ♣1q đúng.


• (2): Với 0 ↕ i ↕ k   1, từ thuật toán Gradient liên hợp và ♣Ak 1 q ♣1q
ta có

♣r♣k 1qqT p♣k 1q ✏ ♣r♣k 1qqT ♣r♣k 1q   bk p♣kqq
✏ ♣r♣k 1qqT r♣k 1q   ♣r♣k 1qqT p♣kqbk
✏ ♣r♣k 1qqT r♣k 1q.
Suy ra ♣Ak 1 q ♣2q đúng.

• (3): Với 0 ↕ i ➔ j
♣Ak 1q ♣1q ta có

↕ k   1, từ thuật toán Gradient liên hợp và

♣p♣iqqT Ap♣k 1q ✏ ♣p♣iqqT A♣✂r♣k 1q   bk p♣kqq
♣k 1q qT r♣k 1q ✡

r
✏ ♣p♣iqqT A r♣k 1q   ♣r♣kqqT r♣kq p♣kq

p♣iq qT ♣r♣k 1q qT r♣k 1q p♣kq

k  1q T ♣iq
✏ A♣r q p   A
♣r ♣ k q qT r ♣ k q
✏ 0.
Suy ra ♣Ak 1 q ♣3q đúng.

• (4): Với 0 ↕ i
♣Ak q ♣4q, ta có


➔ j ↕ k   1, bởi thuật toán Gradient liên hợp và

♣r♣iqqT r♣k 1q ✏ ♣r♣iqqT ♣r♣kq ✁ ak Ap♣kqq
♣k q T ♣k q

iq T ♣k q

iq T ♣r q r
✏ ♣r q r ✁ ♣r q ♣p♣kqqT Ap♣kq Ap♣kq
✏ 0.
Suy ra ♣Ak 1 q ♣4q đúng.

• (5): Với 0

↕ i ↕ k   1, từ thuật toán Gradient liên hợp và ♣Ak q ♣5q


×