ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC
- - - - - - - - - - - - - - - - - -
Trần Thị Hương Liên
PHƯƠNG PHÁP KHỬ GAUSS
GIẢI HỆ PHƯƠNG TRÌNH
ĐẠI SỐ TUYẾN TÍNH
LUẬN VĂN THẠC SỸ TOÁN HỌC
Chuyên ngành: TOÁN ỨNG DỤNG
Mã số: 60 46 01 12
Người hướng dẫn khoa học
PGS. TS. TẠ DUY PHƯỢNG
THÁI NGUYÊN - NĂM 2014
Mục lục
Mở đầu 3
1 Các phương pháp giải hệ phương trình đại số tuyến tính 5
1.1 Các phương pháp khử . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 Phương pháp khử Gauss . . . . . . . . . . . . . . . . 6
1.1.2 Phương pháp phần tử trội toàn phần . . . . . . . . . 9
1.1.3 Phương pháp khử Gauss - Jordan . . . . . . . . . . . 10
1.2 Phương pháp phân rã LU . . . . . . . . . . . . . . . . . . . . 11
1.3 Phương pháp Cholesky . . . . . . . . . . . . . . . . . . . . . 14
1.4 Phương pháp phân rã QR . . . . . . . . . . . . . . . . . . . . 16
1.5 Phương pháp lặp đơn . . . . . . . . . . . . . . . . . . . . . . 18
1.6 Phương pháp lặp theo Seidel . . . . . . . . . . . . . . . . . . 21
1.7 Phương pháp lặp theo Jacobi và phương pháp lặp theo Gauss-
Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 Tổng quan về phương pháp khử Gauss giải hệ phương trình
đại số tuyến tính 26
2.1 Sơ lược về các thuật toán song song giải hệ phương trình đại
số tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.1 Sơ lược về các phần mềm giải phương trình đại số tuyến
tính trên máy tính song song . . . . . . . . . . . . . . 26
2.1.2 Giải hệ tam giác trên máy tính với bộ nhớ phân tán . 28
2.2 Các phương pháp giải hệ phương trình có ma trận hệ số thưa 29
2.2.1 Hệ ba đường chéo. Phương pháp Thomas . . . . . . . 30
2.2.2 Hệ ma trận băng. Phương pháp Thomas cải biên . . . 32
3 Sử dụng máy tính điện tử khoa học và phần mềm Maple
trong đại số tuyến tính 33
1
3.1 Sử dụng máy tính điện tử khoa học trong giải hệ phương trình
tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.1 Tính toán ma trận trên CASIO fx-570VN PLUS . . . 33
3.1.2 Giải hệ phương trình bậc nhất hai ẩn trên CASIO fx-
570VN PLUS . . . . . . . . . . . . . . . . . . . . . . 36
3.1.3 Hệ ba phương trình bậc nhất ba ẩn trên CASIO fx-
570VN PLUS . . . . . . . . . . . . . . . . . . . . . . 38
3.1.4 Hệ bốn phương trình bậc nhất bốn ẩn trên CASIO
fx-570VN PLUS . . . . . . . . . . . . . . . . . . . . . 39
3.1.5 Tính toán trên ma trận trên Vinacal 570 ES Plus . . . 40
3.1.6 Giải hệ phương trình bậc nhất bốn ẩn trên Vinacal 570
ES Plus . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.2 Sử dụng phần mềm Maple trong giải hệ phương trình tuyến
tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Kết luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . 51
2
Mở đầu
Phương pháp khử Gauss giải hệ phương trình đại số tuyến tính đã được
biết đến từ lâu. Tuy nhiên, do nhu cầu của thực tiễn, nhiều bài toán của thực
tế hoặc của chính toán học (sai phân hóa và giải số phương trình vi phân, ),
phương pháp khử Gauss nói riêng, phương pháp giải hệ phương trình đại số
tuyến tính nói chung, vẫn được quan tâm nghiên cứu, đặc biệt vào những
năm gần đây với việc sử dụng những thành tựu mới của công nghệ thông
tin (máy tính tốc độ cao, máy tinh song song, ). Luận văn " Phương pháp
khử Gauss giải hệ phương trình đại số tuyến tính" có mục đích trình bày các
phương pháp giải hệ phương trình đại số tuyến tính, trong đó đặc biệt chú
trọng trình bày phương pháp khử Gauss. Ngoài ra, nhằm phục vụ cho giảng
dạy đại số tuyến tính trong trường phổ thông, Luận văn cũng đề cập đến
cách giải phương trình đại số tuyến tính trên máy tính điện tử khoa học và
sử dụng phần mềm Maple. Luận văn bao gồm phần mở đầu, ba chương, kết
luận và danh mục tài liệu tham khảo.
Chương 1 Các phương pháp giải hệ phương trình đại số tuyến
tính
Các phương pháp giải hệ phương trình đại số tuyến tính trong chương này
được phân thành hai nhóm chính: nhóm các phương pháp trực tiếp và nhóm
các phương pháp lặp. Các phương pháp trực tiếp thường sử dụng cho hệ
phương trình đại số tuyến tính cỡ không lớn, số phép toán có thể dự đoán
trước được, ma trận hệ số thường không suy biến. Còn phương pháp lặp
thường được sử dụng cho hệ có kích thước lớn hoặc hệ gần suy biến hoặc
thỏa mãn điều kiện xấu. Mỗi một phương pháp được nêu trong chương thường
kèm theo ví dụ minh họa.
3
Chương 2 Tổng quan về phương pháp khử Gauss giải hệ phương
trình đại số tuyến tính
Chương này trình bày tổng quan theo [6] các phương pháp giải hệ phương
trình tuyến tính trong những năm gần đây: Sơ lược giới thiệu một số phần
mềm giải hệ phương trình đại số tuyến tính trên máy tính song song; Giải hệ
phương trình đại số tuyến tính có dạng đặc biệt: hệ có ma trận hệ số thưa,
ma trận chéo khối,
Chương 3 Sử dụng máy tính khoa học và phần mềm Maple trong
đại số tuyến tính
Chương này giới thiệu sơ lược cách sử dụng các máy tính khoa học (CASIO
fx-570VN Plus, Vinacal 570 ES Plus) và phần mềm Maple trong đại số tuyến
tính, chủ yếu đi sâu vào cách giải hệ phương trình đại số tuyến tính.
Luận văn được hoàn thành dưới sự hướng dẫn và chỉ bảo tận tình của
PGS.TS. Tạ Duy Phượng- Viện Toán học, Viện khoa học và Công nghệ Việt
Nam. Từ đáy lòng em xin bày tỏ lòng biết ơn sâu sắc đối với sự quan tâm,
động viên và chỉ dạy, hướng dẫn tận tình đầy tâm huyết của Thầy.
Tôi xin chân thành cảm ơn các Thầy, các Cô giảng viên Trường Đại học
Khoa học, phòng đào tạo Trường Đại học Khoa học, khoa Toán-Tin Trường
Đại học Khoa học-Đại học Thái Nguyên. Đồng thời tôi xin gửi lời cảm ơn
tới gia đình, bạn bè, tập thể lớp cao học toán K6D Trường Đại học Khoa
học-Đại học Thái Nguyên đã luôn quan tâm, động viên giúp đỡ tôi trong quá
trình học tập và làm luận văn này.
4
Chương 1
Các phương pháp giải hệ phương
trình đại số tuyến tính
1.1 Các phương pháp khử
.
Xét hệ phương trình đại số dạng tổng quát
a
11
x
1
+ a
12
x
2
+ + a
1n
x
n
= b
1
,
a
21
x
1
+ a
22
x
2
+ + a
2n
x
n
= b
2
,
a
n1
x
1
+ a
n2
x
2
+ + a
nn
x
n
= b
n
,
(1.1)
hoặc ở dạng ma trận
Ax = b, (1.2)
trong đó
A =
a
11
a
12
a
1n
a
21
a
22
a
2n
a
n1
a
n2
a
nn
được gọi là ma trận hệ số của phương trình đại số tuyến tính (1.1),
x =
x
1
x
2
x
n
là véctơ ẩn cần tìm,
b =
b
1
b
2
b
n
5
là véctơ hệ số tự do.
Ma trận
A
1
= (A|b) =
a
11
a
12
a
1n
b
1
a
21
a
22
a
2n
b
2
a
n1
a
n2
a
nn
b
n
được gọi là ma trận suy rộng của hệ phương trình đại số tuyến tính (1.1).
1.1.1 Phương pháp khử Gauss
.
Phương pháp khử Gauss là bằng phương pháp thế hoặc cộng đại số khử dần
các ẩn để đưa hệ phương trình đã cho về dạng tam giác rồi giải hệ tam giác
này từ dưới lên trên hoặc từ trên xuống để tìm nghiệm (x
1
, , x
n
) của hệ
phương trình đã cho. Cơ sở thuật toán của phương pháp khử Gauss như sau
Sử dụng phép biến đổi tương đương trên ma trận A
1
để đưa ma trận A
về dạng tam giác trên. Tức là:
(1.1) ⇔
a
11
x
1
+a
12
x
2
+ +a
1n
x
n
= b
1
,
a
22
x
2
+ +a
2n
x
n
= b
2
,
a
nn
x
n
= b
n
.
(1.3)
Từ hệ phương trình trên ta đi ngược từ dưới lên để tìm nghiệm:
x
n
, x
n−1
, x
n−2
, , x
1
Ta mô tả gắn gọn phương pháp khử Gauss như sau
Phần thuận:
Không làm mất tính tổng quát, giả sử các a
(k)
ii
= 0 (k =
1, n − 1). Ngay
ở bước khử đầu tiên, ta nhân dòng thứ nhất với đại lượng
−a
21
/
a
11
rồi cộng
vào dòng thứ hai sẽ khử được biến x
1
ở phương trình thứ hai. Sau nhiều nhất
n −1 phép biến đổi ta đưa phần tử ở cột một từ vị trí thứ hai đổ xuống của
ma trận A
1
về giá trị không. Ở bước hai, bằng cách làm tương tự. Qua nhiều
nhất n − 2 phép biến đổi ta đưa phần tử ở cột hai tính từ vị trí thứ ba đổ
6
xuống của ma trận biến đổi (lần hai) về giá trị không, tức là loại bỏ biến x
2
ra khỏi phương trình từ phương trình thứ ba đến phương trình thứ n.
Quy trình đó, về nguyên tắc dừng ở bước khử biến thứ n−1 trong phương
trình thứ n tương ứng với ma trận biến đổi là cột thứ n −1 về giá trị không
ở vị trí thứ n, để nhận được phương trình có ma trận hệ số là ma trận tam
giác trên. Trong quá trình biến đổi ta cũng biến đổi cùng một lúc vế phải
của hệ phương trình (tức là véctơ b), ta được hệ phương trình có dạng (1.3).
Phần nghịch: Từ hệ phương trình tuyến tính (1.3) ta đi tính ngiệm
x
n
, , x
1
của hệ phương trình đã cho theo công thức:
x
n
=
b
n
a
nn
, x
k
=
b
k
−
n
j=k+1
a
kj
x
j
a
kk
, k = 1, n −1.
Ví dụ 1.1 Giải hệ phương trình đại số tuyến tính sau bằng phương pháp
khử Gauss:
x
1
+2x
2
+5x
3
= −9,
x
1
−x
2
+3x
3
= 2,
3x
1
−6x
2
−x
3
= 25.
Giải
Viết ma trận suy rộng và thực hiện phép biến đổi như trên, ta có:
1 2 5 −9
1 −1 3 2
3 −6 −1 25
⇒
1 2 5 −9
0 −3 −2 11
0 −12 −16 52
⇒
1 2 5 −9
0 −3 −2 11
0 0 −8 8
Khi đó ta có hệ phương trình:
x
1
+2x
2
−5x
3
= −9
−3x
2
−2x
3
= 11
−8x
3
= 8
Quy trình thế ngược trở lại ta được nghiệm của hệ phương trình là :
x
3
= −1, x
2
= −3, x
1
= 2.
7
Phương pháp trên có hai yếu điểm. Một là, ở bước khử nào đó mà phần tử
trên đường chéo bằng không thì biến đổi dừng lại. Hai là, các phần tử trên
đường chéo khác không nhưng có giá trị tuyệt đối nhỏ hơn các phần tử khác
cùng cột khi chia sẽ làm tăng sai số, do đó khuyếch đại sai số là làm tròn số
dẫn đến lời giải bài toán bị sai số lớn.
Có thể khắc phục hai nhược điểm này bằng phương pháp như sau. Ở bước
khử đầu tiên ta chọn phần tử lớn nhất trên cột một, nếu phần tử đó nằm ở
dòng k (k = 1) ta đổi vị trí dòng đó cho dòng một rồi thực hiện phép biến
đổi như trong phương pháp Gauss. Bước thứ hai, ta cũng chọn phần tử có
giá trị tuyệt đối lớn nhất trên cột hai, thực hiện đổi dòng nếu cần thiết, và
thực hiện phép khử từ vị trí thứ ba trở xuống. Tất cả các bước khử đều thực
hiện với modul lớn nhất trên cột tương ứng trước khi tiến hành phép khử.
Tức là, ở bước khử x
1
ta chọn hàng r sao cho:
|a
r1
| = max {|a
k1
|, k = 1, , n}.
Sau đó đổi hàng r cho hàng 1 và tiếp tục các bước khử như đã nêu ở trên.
Tương tự trong các bước khử x
2
, x
3
, , x
n−1
ta cũng tìm phần tử có modul
lớn nhất trên từng cột tương ứng
|a
ri
| = max {|a
ki
|, k = i, i + 1, , n} (i = 2, 3, , n −1) .
Phương pháp khử kết hợp với phép chọn như vậy làm cho thuật toán ổn
định và luôn thực hiện trên ma trận suy rộng, không làm thay đổi thứ tự
của các ẩn số.
Ví dụ 1.2 Giải hệ phương trình sau bằng phương pháp khử Gauss:
2x
1
+3x
2
+x
3
= 11,
−x
1
+2x
2
−x
3
= 0,
3x
1
+2x
3
= 9.
Giải. Xét ma trận suy rộng của hệ phương trình trên ta có:
A
1
=
2 3 1 11
−1 2 −1 0
3 0 2 9
.
Trên cột một của ma trận A
1
ta thấy max {|a
k1
|/k = 1, 2, 3} = a
31
= 3, đổi
dòng ba cho dòng một, rồi nhân lần lượt dòng một vừa biến đổi với phần tử
8
1/3 rồi cộng với dòng hai và nhân với phần tử (−2/3) rồi cộng với dòng ba
ta được:
A
1
=
3 0 2 9
−1 2 −1 0
2 3 1 11
⇒ A
1
=
3 0 2 9
0 2 −1/3 3
0 3 −1/3 5
.
Ở bước khử thứ hai ta có max {|a
k2
|/k = 2, 3} = a
32
= 3. Thực hiện
phép đổi vị trí dòng hai cho dòng ba, rồi nhân dòng vừa hoán đổi cho phần
tử (−2/3) sau đó cộng với dòng ba ta được:
A
1
=
3 0 2 9
0 3 −1/3 5
0 2 −1/3 3
⇒ A
1
=
3 0 2 9
0 3 −1/3 3
0 0 −1/9 −1/3
Khi đó hệ phương trình đã cho có dạng:
3x
1
+2x
3
= 9
3x
2
−
1
3
x
3
= 5
−
1
9
x
3
= −
1
3
Quy trình thế ngược trở lại ta nhận được nghiệm của hệ phương trình đã
cho là:
x
3
= 3, x
2
= 2, x
1
= 1.
1.1.2 Phương pháp phần tử trội toàn phần
Ngay từ bước khử đầu tiên, ta chọn phần tử có giá trị tuyệt đối lớn nhất
trong số các phần tử a
ij
(1 ≤ i, j ≤ n) của ma trân. Giả sử phần tử đó là a
pq
(dòng thứ p và cột thứ q). Ta gọi dòng p là dòng trội, lần lượt nhân dòng
này với thừa số
−a
lp
/
a
pq
(l = p) rồi cộng dòng thứ l. Bằng cách này loại bỏ
ẩn x
p
ra khỏi hệ phương trình, trừ phương trình thứ p. Sau đó loại hàng trội
và cột q ra khỏi hệ phương trình vừa biến đổi, ta thu được hệ gồm n − 1
phương trình. Tiếp tục thực hiện bước khử thứ hai như bước ban đầu thu
được hệ gồm n − 2 phương trình. Cứ như vậy sau n − 1 lần thực hiện phép
khử như trên ta nhận được phương trình một ẩn.
Giai đoạn tiếp theo, ta tính nghiệm từ phương trình cuối cùng, rồi đến
phương trình hai ẩn ở hàng trội bị bỏ sau bước khử thứ n−1, rồi đến phương
9
trình ba ẩn là hàng trội bị bỏ sau bước khử thứ n − 2, cho đến phương
trình đủ n là dòng trội đầu tiên bị bỏ sau bước khử lần thứ nhất. Đặc trưng
của phương pháp này là các ẩn được tính từ giai đoạn hai không theo thứ tự
từ x
n
đến x
1
mà xuất hiện nhiều lần thay đổi các ẩn. Trong quá trình khử,
vế phải của hệ cũng được thực hiện biến đổi đồng thời.
1.1.3 Phương pháp khử Gauss - Jordan
Cơ sở của phương pháp này như sau: Từ ma trận suy rộng A
1
, dùng phép
biến đổi tương đương đưa ma trận hệ số của hệ phương trình về ma trận đơn
vị E, và vế phải của hệ cũng được biến đổi đồng thời.
A
1
⇔
1 0 0
b
1
0 1 0 b
2
0 0 1 b
n
Khi đó nghiệm của hệ phương trình (1.1) là x = (b
1
, b
2
, , b
n
)
T
Để biến đổi ma trận về dạng tương đương ta dùng phép biến đổi như mô
tả trong phương pháp Gauss, có thể kết hợp với phương pháp chọn như trên
hoặc phương pháp phần tử trội như đã mô tả (nếu cần thiết). Ở đây không
cần phần nghịch để tìm nghiệm của hệ phương trình như trong phương pháp
Gauss nhưng phép khử lại nhiều hơn.
Phương pháp này không những giải hệ phương trình tuyến tính (1.1) mà
còn dùng để tìm ma trận nghịch đảo của ma trận không suy biến bất kì.Ta
có sơ đồ để giải hệ phương trình (1.2) và tìm ma trận nghịch đảo như sau:
(A|b|E) →
E|x|A
−1
Ví dụ 1.4 Giải hệ phương trình sau bằng phương pháp Gauss-Jordan và ma
trận nghịch đảo của ma trận hệ số:
2x
1
+3x
2
+x
3
= 11
−x
1
+2x
2
−x
3
= 0
3x
1
+2x
3
= 9
10
Giải.
Sử dụng biến đổi như trong ví dụ 1.2 và kết hợp ma trận đơn vị E biến
đổi (A|b|E) như sau:
2 3 1 11 1 0 0
−1 2 −1 0 0 1 0
3 0 2 9 0 0 0
⇒
3 0 2 9 0 0 1
−1 2 −1 0 0 1 0
2 3 1 11 1 0 0
⇒
3 0 2 9 0 0 1
0 2
1
3
3 0 1
1
3
0 3 −
1
3
5 1 0 −
2
3
⇒
3 0 2 9 0 0 1
0 3 −
1
3
5 1 0 −
2
3
0 2 −
1
3
3 0 1
1
3
⇒
3 0 2 9 0 0 1
0 3 −
1
3
5 1 0 −
2
3
0 0 −
1
9
−
1
3
−
2
3
1
7
9
⇒
3 0 2 9 0 0 1
0 3 −
1
3
5 1 0 −
2
3
0 0 1 3 6 −9 −7
⇒
3 0 0 3 12 18 15
0 3 0 6 3 −3 −3
0 0 1 3 6 −9 −7
⇒
1 0 2 1 −4 6 5
0 1 0 2 1 −1 −1
0 0 1 3 6 −9 −7
Vậy nghiệm của hệ phương trình là: x = (1, 2, 3)
T
và ma trận nghịch đảo
tìm được là:
A
−1
=
−4 6 5
1 −1 −1
6 −9 −7
.
1.2 Phương pháp phân rã LU
Như chúng ta đã biết, nếu hệ phương trình (1.2) có dạng tam giác thì rất
dễ giải. Nếu ma trận vuông A cấp n có tính chất: tất cả các định thức con
từ cấp một đến đến cấp n trên đường chéo chính đều khác không thì ta có
thể phân tích ma trận A thành tích hai ma trận:
A = L.U, (1.4)
11
trong đó L là ma trận tam giác dưới, U là ma trận tam giác trên có dạng
tổng quát như sau:
L =
1 0 0 0
α
21
1 0 0
α
31
α
32
1 0
α
n1
α
n2
α
n3
1
; U =
β
11
β
12
β
13
β
1n
0 β
22
β
23
β
2n
0 0 β
33
β
3n
0 0 0 β
nn
. (1.5)
Nếu ta chọn β
ii
= 1
i = 1, n
thì ta có công thức tương ứng với α
ii
i = 1, n
chưa xác định. Ở đây để tiện trình bày ta chỉ sử dụng công thức (1.5). Sử
dụng công thức nhân hai ma trận ta có thể xác định α
ij
(i > j) và β
ij
(i ≤ j)
như sau:
∀j = 1, n :
β
ij
= a
ij
−
i−1
k=1
α
ik
β
kj
(1 ≤ i ≤ j)
(1.6a)
α
ij
=
1
β
jj
a
ij
−
j−1
k=1
α
ik
β
kj
(1.6b)
Khi đó hệ (1.2) viết được dưới dạng:
LUx = b.
Kí hiệu:
Ly = x. (1.7a)
Ta nhận được hệ phương trình tương với (1.2) dạng:
Ux = y ((1.7b)
Việc tìm nghiệm (1.1) tương ứng việc tìm nghiệm (1.7b) trước rồi tính nghiệm
(1.7a) sau. Việc tính nghiệm có thể viết dưới dạng sau:
y
1
=
b
1
/
α
11
, y
i
=
1
α
ii
b
i
−
i−1
k=1
α
ik
y
k
(1.8)
x
n
=
y
n
/
β
nn
, x
i
=
1
β
ii
y
i
−
i−1
k=1
β
ik
y
k
(1.9)
12
Ví dụ 1.5 Giải hệ phương trình đại số tuyến tính sau :
2x
1
+3x
2
+x
3
= 11
−x
1
+2x
2
−x
3
= 0
3x
1
+2x
3
= 9
bằng phương pháp phân rã LU.
Giải Xét ma trận hệ số của hệ phương trình
A =
2 3 1
−1 2 −1
3 0 2
Vì A là ma trận vuông cấp 3 nên ta có thể phân tích ma trận thành tích hai
ma trận có dạng A = LU, trong đó:
L =
1 0 0
α
21
1 0
α
31
α
32
1
, U =
β
11
β
12
β
13
0 β
22
β
23
0 0 β
33
Ta đi tính các hệ số α
ij
(i > j) và β
ij
(i ≤ j)
Với j = 1 theo (1.6a) ta tính được β
11
= a
11
= 2. Tiếp theo dùng công
thức (1.6b) ta tính được:
α
21
=
1
β
11
(a
21
) = −
1
2
,
α
31
=
1
β
11
(a
31
) =
3
2
Với j = 2 làm tương tự như trên ta tính được
β
12
= a
12
= 3,
β
22
= a
22
− α
21
β
12
=
7
2
,
α
32
=
1
β
22
(a
32
− α
31
β
12
) = −
9
7
.
Với j = 3 ta tính được:
β
13
= a
13
= 1
β
23
= a
23
− α
21
β
13
= −
1
2
β
33
= (a
33
− α
31
β
13
− α
32
β
23
) = −
1
7
Khi đó ta tìm được ma trận:
L =
1 0 0
−1/2 1 0
3/2 −9/7 1
, U =
2 3 1
0 7/2 −1/2
0 0 −1/7
13
Bây giờ ta đi tìm nghiệm của hệ phương trình Ly = b. Suy ra
1 0 0
−1/2 1 0
3/2 −9/7 1
y
1
y
2
y
3
=
11
0
9
Giải hệ phương trình này ta tìm được y =
11;
11
2
; −
3
7
T
Bước tiếp theo, giải hệ phương trình Ux = y ta có:
2 3 1
0 7/2 −1/2
0 0 −1/7
x
1
x
2
x
3
=
11
11/2
−3/7
Cuối cùng ta tìm được nghiệm x
3
= 3, x
2
= 2, x
1
= 1
1.3 Phương pháp Cholesky
Xét hệ phương trình (1.1). Nếu A là ma trận đối xứng thì ta có thể phân
tích ma trận A dưới dạng:
A = S.S
T
(1.10)
với S là ma trận tam giác dưới, S
T
là ma trận chuyển vị của S.
S =
s
11
0 0
s
12
s
22
0
s
1n
s
2n
s
nn
; S
T
=
s
11
s
12
s
1n
0 s
22
s
2n
0 0 s
nn
.
Khi đó:
(1.2) ⇔ S.S
T
x = b
(1.7) ⇔
Sy = b
S
T
x = y
Các công thức (1.6)(1.8)(1.9) bây giờ có dạng:
s
11
=
√
a
11
; s
1j
=
a
1j
s
11
;
j = 2, n
s
ii
=
a
ii
−
i−1
k=1
s
ki
;
i = 2, n
s
ij
=
a
ij
−
i−1
k=1
s
ki
s
kj
s
ii
(i < j) ; s
ij
= 0 (i > j)
(1.11)
14
y
1
=
b
1
s
11
; y
i
=
b
i
−
i−1
k=1
s
ik
y
k
s
ii
; (i > 1)
x
n
=
y
n
s
nn
; x
i
=
y
i
−
n
k=i+1
s
ik
x
k
s
ii
(1.12)
Ví dụ 1.6 Giải hệ phương trình đại số tuyến tính sau:
x
1
+2x
2
+x
3
= 1
2x
1
+5x
2
+x
3
= 1
x
1
+x
2
+2x
3
= 1
bằng phương pháp Cholesky.
Giải. Xét ma trận
A =
1 2 1
2 5 1
1 1 2
là ma trận đối xứng. Khi đó ta có thể phân tích ma trận A thành tích hai
ma trận A = S
T
.S, trong đó S là ma trận tam giác trên. Nên ta có:
s
11
=
√
1 = 1; s
12
=
a
12
s
11
= 2; s
13
=
a
13
s
11
= 1;
s
22
=
a
22
− s
2
12
=
√
5 − 2
2
= 1;
s
23
=
a
23
−s
12
.s
13
s
22
= −1;
s
33
=
a
33
− s
2
13
− s
2
23
=
√
−2 − 1 − 1 =
√
−4 = 2i.
⇒ S =
1 2 1
0 1 −1
0 0 2i
⇒ S
T
=
1 0 0
2 1 0
1 −1 2i
Tìm y:
y
1
=
1
1
= 1,
y
2
= 1 − 2y
1
= −1,
y
3
=
1−y
1
+y
2
2i
=
i
2
.
Tìm x:
x
3
=
i
2
.
1
2i
=
1
4
,
x
2
= −1 +
1
4
= −
3
4
,
x
1
= 1 −
1
4
+
3
2
=
9
4
.
Vậy nghiệm của hệ phương trình là x =
9
4
,
−3
4
,
1
4
T
.
15
1.4 Phương pháp phân rã QR
Nếu A là ma trận n × n thì luôn phân tích được dưới dạng:
A = QR, (1.13)
trong đó R là ma trận tam giác trên, Q là ma trận trực giao
Q
T
= Q
−1
Khi đó hệ (1.2) có dạng:
QRx = b.
Nhân cả hai vế hệ phương trình trên với Q
T
ta được:
Rx = Q
T
b.
Do R là ma trận tam giác trên nên nghiệm của hệ được tính ngay bằng công
thức truy hồi;
x
n
=
b
n
a
nn
; x
k
=
b
k
−
n
j=k+1
a
kj
x
j
a
kk
; k = n − 1, , 1.
Vì Q là ma trận trực giao, vấn đề đặt ra là ta phải tìm phép biến đổi trực
giao nào đó để đưa các phần tử nằm dưới đường chéo của ma trận Q về ma
trận không. Và ta có phép biến đổi Householder là một phép biến đổi trực
giao, có khả năng đưa một loạt các phần tử của một cột về không mà vẫn
giữ nguyên các phần tử ở bên trái và bên phải nó. Chẳng hạn, đưa các phần
tử trên cột một, tính từ phần tử thứ hai trở xuống về không ta xây dựng ma
trận Householder theo công thức
P
1
= E −
u
1
.u
T
1
u
1
2
(1.14)
với véctơ sinh
u
1
= (a
11
+ sign (a
11
) .α, a
21
, , a
n1
)
T
; α =
n
i=1
a
2
i1
(1.15)
Bằng kiểm tra trực tiếp ta thấy các phần tử nằm trên cột một của ma
trận P
1
A đều có giá trị bằng không, ngoại trừ phần tử đầu tiên có giá trị là:
−sign (a
11
) .α (1.16)
16
Cũng bằng kiểm tra trực tiếp các phần tử của ma trận P
1
A được tính
bằng công thức sau:
a
ij
= a
ij
−
a
1
a
j
u
1
2
2
(1.17)
trong đó kí hiệu a
1
và a
j
để chỉ cột thứ nhất và cột thứ j của ma trận
A. Trong công thức (1.17) khi i = 1 thay vì viết phần tử a
11
ta phải lấy
a
11
+ sign(a
11
)α.
Tiếp theo, ta xây dựng ma trận Householder của phép biến đổi House-
holder P
2
theo (1.14) nhưng dựa trên véctơ sinh:
u
2
= (0, a
22
+ sign (a
22
) .α
, a
32
, , a
n2
)
T
; α
=
n
i=2
a
2
i2
Khi đó, ma trận P
2
P
1
A sẽ có cột một và cột hai thỏa mãn điều kiện ma
trận tam giác trên. Và các phần tử nằm trên cột một và dòng một không
thay đổi giá trị, trong kki các phần tử khác của ma trận P
1
A vẫn thay đổi
giá trị nhưng vẫn tuân thủ (1.16) và (1.17) với các chỉ số thay đổi tương ứng.
Như vậy, sử dụng n − 1 phép biến đổi Householder P
1
; P
2
; P
n−1
được
xây dựng như mô tả ở trên ta sẽ đưa được ma trận A ban đầu về ma trận R
là ma trận tam giác trên.
P
n−1
P
1
A = R (1.18)
Kí hiệu Q
T
= P
n−1
P
1
từ (1.18) và từ tính chất ma trận trực giao ta suy
ra
A = QR; Q = P
T
1
P
T
n−1
(1.19)
Bây giờ ta đi tính nghiệm của hệ (1.2) sau khi sử dụng phân rã QR.
Từ (1.18) ta có:
P
n−1
P
1
A x=P
n−1
P b → R x = Q
T
b (1.20)
Vì R là ma trận tam giác trên nên hệ (1.20) giải được nhờ công thức truy
hồi như đã nêu trên.
17
1.5 Phương pháp lặp đơn
Trước tiên ta nhắc lại khái niệm chuẩn của ma trận.
Định nghĩa 1.1: Cho ma trận A = (a
ij
)
n×n
. Chuẩn của ma trận A là một
số không âm được kí hiệu là A và thỏa mãn các tính chất sau:
i) A ≥ 0, A = 0 ⇔ A = Θ,
ii) λA = |λ|A,
iii) A + B ≤ A+ B.
Ba chuẩn thường dùng đối với ma trận là:
A
∞
= max
1≤i≤n
n
j=1
|a
ij
|, A
1
= max
1≤j≤n
n
i=1
|a
ij
|, A
F
=
n
i,j=1
a
2
ij
.
(1.21)
Người ta thường định nghĩa chuẩn của ma trận theo chuẩn của véctơ
tương ứng như sau:
A = sup
x=0
Ax
x
Dễ thấy A xác định như trên thỏa mãn ba điều kiện về định nghĩa
chuẩn của ma trận.
Từ hệ (1.2) bằng phép biến đổi tương đương ta thu được hệ ở dạng:
x = Bx + g (1.22)
Phép lặp đơn được xây dựng trên (1.22) theo công thức:
x
k+1
= Bx
k
+ g (k = 0, 1, 2, ) (1.23a)
hoặc viết theo từng ẩn ta có:
x
k+1
i
= b
i1
x
k
1
+ b
i2
x
k
2
+ + b
in
x
k
n
+ g
i
=
b
ij
x
k
j
+ g
i
i = 1, n
(1.23b)
trong đó x
k
và x
k+1
là các xấp xỉ nghiệm ở bước lặp thứ k và k + 1
Như vậy bằng phép lặp (1.23) ta tạo ra được dãy các véctơ. Câu hỏi đặt
ra là: Khi nào dãy đó hội tụ đến x
∗
là nghiệm đúng của (1.1)
Định lý 1.1.(về điều kiện đủ để phép lặp (1.23) hội tụ)
18
Phép lặp (1.23) sẽ hội tụ đến nghiệm x
∗
của hệ (1.1) với mọi xấp xỉ ban
đầu x
0
nếu ta có:
B < 1 (1.24)
Hơn nữa ta có đánh giá sai số:
x
k
− x
∗
≤
B
1−B
x
k
− x
k−1
x
k
− x
∗
≤
B
k
1−B
x
1
− x
0
(1.25)
Chứng minh: Ta có đánh giá sau:
x
m+1
− x
m
=
Bx
m
− Bx
m−1
≤ B
x
m
− x
m−1
, ≤ ≤ B
m−k
x
k+1
− x
k
(∀m > k ≥ 0) .
Sử dụng đánh giá này vào bất đẳng thức:
x
k+p
− x
k
≤
x
k+p
− x
k+p−1
+ +
x
k+1
− x
k
ta được:
x
k+p
− x
k
≤
1 + B + B
2
+ + B
p−1
x
k+1
− x
k
=
1−B
p
1−B
x
k+1
− x
k
.
Lấy giới hạn hai vế cuả bất đẳng thức này khi k cố định, còn p → ∞, ta
sẽ nhận được đánh giá sau:
x
k
− x
∗
≤
x
k+1
− x
k
1 − B
≤ ≤
B
k
1 − B
x
1
− x
0
Trên thực tế đánh giá này còn dùng làm tiêu chuẩn dừng phép lặp. Nghĩa
là ta lặp theo (1.25) tới bước thứ k + 1 thì dừng, nếu thỏa mãn điều kiện:
x
k+1
− x
k
1 − B
< ε, (1.26)
Nhận xét:
19
- Đối với phép lặp (1.23) thỏa mãn (1.25) thì ta có thể lấy x
0
≡ g
- Luôn tồn tại cách đưa (1.2) về (1.22) thoả mãn (1.25). Chẳng han, nếu
det A = 0, ta nhân hai vế của (1.2) với D ≡ A
1
−ε trong đó ε = (ε
ij
) là ma
trận mà các phần tử ε
ij
đủ nhỏ về giá trị tuyệt đối. Khi đó ta có:
A
−1
− ε
Ax = Db → x =εAx + Db ≡ Bx + g
Vì ta lấy |ε
ij
| đủ nhỏ nên B < 1
-Dùng phương pháp lặp đơn có thể tính được ma trận nghịch đảo A
−1
.
Thật vậy:
Xét phép lặp:
B
k+1
= B
k
(2E − AB
k
). (1.27)
Dễ thấy rằng:
A
−1
− B
k
= A
−1
E − AB
k
= A
−1
{E − A[B
k−1
(2E − AB
k−1
)]}
=A
−1
E − AB
k−1
2
= = A
−1
E − AB
0
2
k
.
Suy ra:
A
−1
− B
k
≤
A
−1
E − AB
0
2
k
Biểu thức này cho thấy nếu chọn B
0
sao cho
E − AB
0
< 1
thì phép lặp (1.27) hội tụ rất nhanh đến A
−1
và khi đó dãy các véctơ xác
định bởi công thức {x
k
≡ B
k
b} hội tụ đến nghiệm chính xác của (1.2)
Ta có thể chọn B
0
= εA
T
với:
ε =
1
n
i,j=1
a
ij
hoặc
ε =
1
max
i
n
j=1
|a
ij
| + max
j
n
i=1
|a
ij
|
Như vậy, dùng phép lặp (1.23) ta có thể tính được ma trận A
−1
và kết
hợp với công thức x
k
= B
k
b khi
A
−1
− B
k
đủ nhỏ ta sẽ nhận được lời giải
xấp xỉ (1.2).
20
1.6 Phương pháp lặp theo Seidel
Xét phương trình (1.22). Ta phân tích ma trận B thành tổng của hai ma
trận
B = B
1
+ B
2
,
trong đó: B
1
là ma trận tam giác dưới nhận được từ ma trận B bằng cách
giữ nguyên phần tử nằm dưới đường chéo chính, còn các phần tử khác bằng
0, còn ma trận B
2
= B − B
1
. Khi đó (1.22) có dạng:
x = B
1
x + B
2
x + g, (1.28a)
hoặc viết theo từng ẩn:
x
k+1
i
=
i−1
j=1
b
ij
x
k+1
j
+
n
j=1
b
ij
x
k
j
+g. (1.28b)
Công thức (1.28) cho thấy trong phương pháp lặp theo Seidel, các ẩn tìm ở
bước hiện tại (bước k + 1) được sử dụng ngay để tìm các ẩn số tiếp theo, còn
các ẩn số chưa được tính thị dùng giá trị ở bước trước (bước k)
Định lý (về điều kiện đủ để phép lặp Seidel hội tụ)
Nếu ta có B < 1 thì phép lặp (1.28) hội tụ.
Chứng minh. Ta lấy chuẩn B = B
∞
Do B < 1 nên phép lặp đơn hội tụ nên ta có:
x
∗
i
=
b
ij
x
∗
j
+ g
i
. (i)
Lấy (1.28b) trừ đi (i) ta được:
x
k+1
i
− x
∗
i
=
j<i
b
ij
(x
k+1
j
− x
∗
j
) +
j≥i
b
ij
(x
k
j
− x
∗
j
).
Từ đó ta có:
x
k+1
i
− x
∗
i
≤
j<i
|b
ij
|
(x
k+1
− x
∗
)
m
+
j≥i
|b
ij
|
(x
k
− x
∗
)
m
. (ii)
21
Suy ra:
x
k+1
i
− x
∗
i
≤ c
i
x
k+1
− x
∗
m
+ d
i
x
k
− x
∗
m
, (iii)
với c
i
=
j<1
|b
ij
|; d
i
=
j≥i
|b
ij
|
Giả sử
x
k+1
− x
∗
m
≡ max
x
k+1
i
− x
∗
i
=
x
k+1
p
− x
∗
p
, (1 ≤ p ≤ n)
Lấy i = p. Khi đó (iii) có dạng:
x
k+1
− x
∗
≤ c
p
x
k+1
− x
∗
+ d
p
x
k
− x
∗
→
x
k+1
− x
∗
≤
d
p
1 − c
p
x
k
− x
∗
≤ γ
x
k
− x
∗
(iv)
trong đó ta kí hiệu γ = max
i
d
i
1−c
i
.
Mặt khác ta có:
c
i
+ d
i
=
n
j=1
b
ij
≤ max
i
i
|b
ij
| ≡ B
∞
< 1
nên d
i
≤ B
∞
− c
i
< 1 − c
i
.
Do đó:
d
i
1−c
i
< 1 ∀i = 1, n. Nghĩa là: γ < 1. Từ (iv) ta có:
x
k+1
− x
∗
≤ γ
k+1
x
0
− x
∗
.
Suy ra:
x
k+1
− x
∗
→ 0 (k → ∞)
Từ đây ta có đánh giá sai số:
x
k
− x
∗
≤
γ
k
1 − γ
x
1
− x
0
.
(1.29)
Nhận xét:
- Ta có B
m
− γ = c
i
+ d
i
−
d
i
1−c
i
=
c
i
(1−c
i
−d
i
)
1−c
i
≥ 0. Do đó: B
m
≥ γ.
- Qua (1.25). (1.29) và bất đẳng thức B
m
≥ γ, ta thấy tốc độ hội tụ của
phương pháp lặp đơn thấp hơn tốc độ hội tụ của phương pháp lặp Seidel,
nếu cả hai cùng hội tụ. Điều khẳng định này sẽ thấy thông qua ví dụ ở phần
sau.
22
1.7 Phương pháp lặp theo Jacobi và phương pháp lặp
theo Gauss-Seidel
Định nghĩa 1.1. Ta nói ma trận A là ma trận đường chéo trội nếu nó
thỏa mãn ít nhất một trong hai điều kiện sau:
i)
n
j=1,j=i
|a
ij
| < |a
ii
|
1 = 1, n
ii)
n
i=1,i=j
|a
ij
| < |a
jj
|
j = 1, n
()
(1.30ab)
Nếu hệ (1.1) có ma trận A là chéo trội bằng phương pháp biến đổi đưa
(1.1) về dạng công thức lặp:
x = Cx + g (1.31)
trong đó các phần tử của ma trân C và g được xác định như sau:
Nếu A là ma trận chéo trội thỏa mãn điều kiện (i) thì:
g
i
=
b
i
a
ii
i = 1, n
; C = (c
ij
)
n×n
=
0 (i = j) ,
−
a
ij
a
ii
(i = j)
(1.32a)
Nếu A là ma trận chéo trội thỏa mãn điều kiện (ii) thì:
g
i
= b
i
i = 1, n
, C = (c
ij
)
n×n
=
0 (i = j)
−
a
ij
a
jj
(i = j)
(1.32b)
Vì ma trận A là ma trận chéo trội nên dễ thấy C < 1 trong cả hai
trường hợp. Do đó, phép lặp đơn của hệ (1.35) hội tụ.
Trong trường hợp chéo trội theo cột thì nghiệm của hệ (1.1) nhận được
bằng cách chia nghiệm x
i
tính được bằng phép lặp nói trên cho hệ số a
ii
tương ứng. Phép lặp đơn trong trường hợp này được gọi là phép lặp theo
Jacobi. công thức lặp như sau:
x
k+i
i
=
i−1
j=1
c
ij
x
k
j
+
n
j=i+1
c
ij
x
k
j
+ g
i
i =
1, n
(1.33)
23
Nếu ta sử dụng phép lặp Seidel cho hệ (1.33) thì phép lặp đó gọi là lặp
theo Gauss-Seidel. Công thức lặp như sau:
x
k+i
i
=
i−1
j=1
c
ij
x
k+1
j
+
n
j=i+1
c
ij
x
k
j
+ g
i
i = 1, n
(1.34)
Ví dụ 1.8 Tính nghiệm gần đúng của hệ phương trình sau:
5x
1
+x
2
+x
3
= 1
x
1
+5x
2
+x
3
= 1
x
1
+x
2
+5x
3
= 1
bằng phương pháp Jacobi và phương pháp Gauss-Seidel, với sai số ε = 0, 02
Giải. Xét ma trận hệ số
A =
5 1 1
1 5 1
1 1 5
.
Dễ thấy A là ma trận chéo trội. Đưa hệ phương trình đã cho về dạng:
x
1
= −0, 2x
2
−0, 2x
3
+0, 2
x
2
= −0, 2x
1
−0, 2x
3
+0, 2
x
3
= −0, 2x
1
−0, 2x
2
+0, 2
Lặp theo phương pháp Jacobi: Ta xây dựng công thức lặp hội tụ đến
nghiệm của hệ có dạng:
x
k+1
= Cx
k
+ g
trong đó:
C =
0 −0, 2 −0, 2
−0, 2 0 −0, 2
−0, 2 −0, 2 0
; g =
0, 2
0, 2
0, 2
Ta thấy C < 1 nên phép lặp hội tụ.
Chọn x
0
= g = (
0, 2 0, 2 0, 2
)
T
ta có kết quả tính toán của quá trình
lặp Jacobi là:
k 1 2 3 4 5
x
k
1
0.12 0.216 0.2164 0.152 0.139712
x
k
2
-0.04 0.184 0.12 0.15072 0.134456
x
k
3
-0.04 0.184 0.12 0.15072 0.134456
x
k
− x
k−1
0.88 0.188 0.0896 0.0372 0.016264
24