Ta đã biết hai cách giải hệ phương trình tuyến tính cỡ n×n. Đó là phương pháp khử Gauss và quy tắc Cramer. Khi hệ có nghiệm, các cách giải này cho ta nghiệm đúng sau một số hữu hạn bước (với giả thiết không có sai số làm tròn). Tuy nhiên các cách giải này thường chỉ áp dụng cho hệ có kích thước nhỏ. Giải hệ cỡ lớn, như hệ 30×30, theo quy tắc Cramer trên chiếc máy tính có tốc độ tính 20 nghìn tỉ phép tínhgiây mất 378080 tỉ năm. Ngoài ra, kết quả nhận được có thể sai lệch so với nghiệm đúng rất nhiều do những sai số xuất hiện quá nhiều khi máy tính làm tròn. Ngay cả phương pháp khử Gauss, mặc dù có số phép tính ít hơn quy tắc Cramer rất nhiều, cũng không hiệu quả trong trường hợp hệ cỡ lớn hoặc ma trận hệ số có nhiều số 0. Trong phần này ta nghiên một số phương pháp hiệu quả hơn để giải hệ phương trình tuyến tính cỡ n×n. Đó là các phương pháp giải gần đúng với độ chính xác tùy ý.
Trang 1C hương 10
GIỚI THIỆU PHƯƠNG PHÁP SỐ GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH _
Ta đã biết hai cách giải hệ phương trình tuyến tính cỡ n×n Đó là phương pháp khử Gauss và quy
tắc Cramer Khi hệ có nghiệm, các cách giải này cho ta nghiệm đúng sau một số hữu hạn bước (với giả thiết không có sai số làm tròn) Tuy nhiên các cách giải này thường chỉ áp dụng cho hệ có kích thước nhỏ Giải hệ cỡ lớn, như hệ 30×30, theo quy tắc Cramer trên chiếc máy tính có tốc độ tính 20 nghìn tỉ phép tính/giây mất 378080 tỉ năm Ngoài ra, kết quả nhận được có thể sai lệch so với nghiệm đúng rất nhiều do những sai số xuất hiện quá nhiều khi máy tính làm tròn Ngay cả phương pháp khử Gauss, mặc dù có số phép tính ít hơn quy tắc Cramer rất nhiều, cũng không hiệu quả trong trường hợp hệ cỡ lớn hoặc ma trận hệ số có nhiều số 0 Trong phần này ta nghiên một số
phương pháp hiệu quả hơn để giải hệ phương trình tuyến tính cỡ n×n Đó là các phương pháp giải
gần đúng với độ chính xác tùy ý
10.1 KIẾN THỨC CHUẨN BỊ
Tất cả các phương pháp giải gần đúng hệ phương trình ta sẽ trình bày đều có chung một đặc điểm là xây dựng dãy vectơ hội tụ tới nghiệm đúng Bây giờ ta chính xác hóa khái niệm dãy vectơ, sự hội
tụ
Giới hạn của dãy vect ơơơơ
Cho n dãy số { ( )
1
k
x }, { ( )
2
k
x }, , { (k)
n
x } với k ∈N và (k)
i
x là số hạng thứ k của dãy số thứ i Với mỗi
k , ký hiệu v (k) là vectơ ( )
1
k
x , ) 2
k
x , , (k)
n
x ) ∈ Rn, ta có dãy vectơ v(0), v(1), v(2), Dãy này được viết
tắt là {v (k)} Như vậy một dãy vectơ trong Rn chẳng qua là n dãy số được cho đồng thời
Khi k → ∞, nếu mỗi thành phần thứ i của vectơ v (k) có giới hạn là αi , thì v = (α1, α2, , αn) được gọi là giới hạn của dãy {v (k) }, và ta nói {v (k)} hội tụ tới v
Ví dụ 1 Khi k → ∞, dãy vectơ {v (k) =
2 , 1 2 ,
1
k k
k } hội tụ tới v = (0, 2, 2)
Trang 2Chuẩn của vect ơơơơ và chuẩn của ma trận
Trong Rn ta đã định nghĩa độ dài của vectơ v theo tích vô hướng (Xem 6.1) Độ dài này có ba tính
chất giống như tính chất của các vectơ hình học
(i) ||v|| ≥ 0, với dấu "=" xảy ra khi và chỉ khi v = 0
(ii) ||cv|| = |c|||v|| đối với vô hướng c bất kỳ
(iii) ||v + w|| ≤ ||v|| + ||w|| (bất đẳng thức Tam giác)
Nhờ khái niệm độ dài của vectơ, ta có thể hiểu đơn giản {v (k) } hội tụ tới v có nghĩa là
||v (k) - v||→ 0 khi k → ∞
Tuy nhiên, độ dài vectơ định nghĩa theo tích vô hướng có nhược điểm là tính toán cồng kềnh, không thuận tiện trong thực hành, nên người ta đi tìm những định nghĩa độ dài khác tốt hơn Sau đây là một định nghĩa mới: Với v = (x1, x2, , x n)∈Rn , ta gọi max{|x1|, , |x n |} là độ dài của v Độ dài này cũng thỏa mãn ba tính chất (i), (ii), (iii) nói trên, nhưng nói chung với mỗi v∈R n độ dài này
khác ||v|| Vì vậy, để phân biệt ta gọi nó là chuẩn vô hạncủa vectơ, và ký hiệu là
||v||∞ = max{|x1|, , |x n|}
Đối với chuẩn này ta có tiêu chuẩn hội tụ
Định lý 10.1 {v (k) } hội tụ tới v nếu và chỉ nếu ||v (k) - v||∞→ 0 khi k →∞
Sau này, trong lúc xác lập sự hội tụ của một dãy vectơ tới nghiệm đúng và đánh giá sai số của nghiệm xấp xỉ so với nghiệm đúng ta cũng cần đến khái niệm chuẩn của ma trận Chuẩn vô hạn của ma trận thực B = (b ij)n ×n , ký hiệu ||B||∞, là số thực
||B||∞ = max
∑
∑
∑
=
=
=
n
j nj n
j j n
j
b
1
1 2
1 1
|
| , ,
|
| ,|
Ví dụ 2
B =
−
−
−
0 02 0 01 0
05 0 0 03 0
02 0 06 0 0
có ||B||∞ = max{0.08; 0.08; 0.03} = 0.08
Trang 310.2 PHƯƠNG PHÁP LẶP ĐƠN
Nội dung phương pháp lặp đơn
Cho hệ Ax = b cỡ n×n Có nhiều cách để đưa hệ này về dạng x = Bx + g tương đương với Ax = b Chẳng hạn, ta tách A thành S - T, trong đó S khả nghịch, thì Ax = b tương đương với Sx = Tx + b
Đặt B = S-1T , g = S-1b , ta có hệ x = Bx + g
Ta xây dựng dãy vectơ {v (k) }, như sau: Cho trước v(0) rồi tính v (k) theo công thức
v (k) = Bv (k-1) + g (k = 1, 2, ) (1)
Ta gọi (1) là công thức tính lặp , k ≥ 1 là số lần lặp Phương pháp tính {v (k)} như thế này được gọi
là phương pháp lặp đơn
Nếu {v (k)} hội tụ, thì ta nói phương pháp lặp đơn hội tụ Nếu {v (k) } hội tụ tới v, thì v là nghiệm của Ax = b Thật vậy, chuyển qua giới hạn ở hai vế của (1) ta có v = Bv + g, nghĩa là v là nghiệm của x = Bx + g, tức cũng là nghiệm của Ax = b Với ε > 0 cho trước, nếu k đủ lớn ta có
||v (k) - v||∞ ≤ ε Khi đó ta nói v (k) là nghiệm xấp xỉ của nghiệm đúng với độ chính xác ε
Trong thực tế, ta bắt buộc phải dừng tính toán ở bước thứ k nào đó và xem v (k) là nghiệm gần đúng
Ví dụ 1 Cho hệ phương trình
4x1 + 0.24x2 - 0.08x3 = 8
0.09x1 + 3x2 - 0.15x3 = 9
0.04x1 - 0.08x2 + 4x3 = 20 Lần lượt chia phương trình 1, 2, 3 cho 4, 3, 4 rồi chuyển vế, ta có hệ
x1 = -0.06x2 + 0.02x3 + 2
x2 = -0.03x1 + 0.05x3 + 3
x3 = -0.01x1 + 0.02x2 + 5
Hệ này có dạng x = Bx + g, với
B =
−
−
−
0 02 0 01 0
05 0 0 03 0
02 0 06 0 0
và g =
5 3
2
Với v (k) = ( ( )
1
k
x , )
2
k
x , ( ) 3
k
x ), v (k-1) = ( ( 1 )
1
−
k
x , ( 1 )
2
−
k
x , ( 1 )
3
−
k
x ) công thức (1) cụ thể là
) ( 1
k
x = -0.06 ( 1 )
2
−
k
x + 0.02 ( 1 )
3
−
k
x + 2
) (
2k
x = -0.03 ( 1 )
1
−
k
x + 0.05 ( 1 )
3
−
k
x + 3
x3(k) = -0.01 ( 1 )
1
−
k
x + 0.02 ( 1 )
2
−
k
x + 5
Khởi đầu ta lấy v(0) = (2, 3, 5) Thay v(0) vào vế phải của công thức này ta tính được v(1) = ( ( 1 )
1
x , ( 1 ) 2
x ,
)
1
(
3
x ) với
( 1 ) 1
x = -0.06(3) + 0.02(5) + 2 = 1.92
x(21) = -0.03(2) + 0.05(5) + 3 = 3.19
x3(1) = -0.01(2) + 0.02(3) + 5 = 5.04
Trang 4Sự hội tụ của phương pháp lặp đơn và đánh giá sai số của nghiệm xấp xỉ
Dưới đây là điều kiện đủ cho sự hội tụ của phương pháp lặp đơn áp dụng cho phương trình x = Bx +
g với B = (b ij)n ×n
Định lý 10.2 Nếu ||B||∞<1, thì với mọi v(0) ∈Rn cho trước dãy {v (k)} xác định bởi
v (k+1) = Bv (k) + g (k = 0, 1, )
hội tụ tới nghiệm duy nhất v của x = Bx + g Hơn nữa ta có đánh giá sai số
||v (k) - v||∞ ≤
∞
∞
−|| ||
1
||
||
B
B k
||v(1) - v(0)||∞ (2)
Nhận xét
1) Với điều kiện của Định lý 10.2, với v(0) và ε > 0 chọn trước, muốn xác định số lần lặp k để
nghiệm xấp xỉ đạt độ chính xác ε (tức là ||v (k) - v||∞ < ε), ta chỉ cần tính v(1) rồi tìm k nhờ giải bất
phương trình
∞
∞
−|| ||
1
||
||
B
B k
||v(1) - v(0)||∞ ≤ε
2) Sai số trong quá trình tính toán không ảnh hưởng đến kết quả cuối cùng vì nếu ở một bước nào
đó có sai số thì lại xem đó là xấp xỉ ban đầu v(0) Vì vậy, người ta nói rằng phương pháp lặp đơn có khả năng tự sửa sai
Ví dụ 2 Hệ phương trình trong Ví dụ 1 có ||B||∞ = 0.08 < 1, nên ở đây phương pháp lặp đơn hội tụ
Ta có thể đánh giá sai số của v(3) so với nghiệm đúng v theo (2):
v(1) - v(0) = (-0.08, 0.19, 0.04)
||v(3) - v||∞ ≤
∞
∞
−|| ||
1
||
|| 3
B
B
||v(1) - v(0)||∞ =
08 0 1
08
0 3
− max{0.08; 0.19; 0.04} =
08 0 1
08
0 3
− 0.19 ≈ 10-4
Độ chính xác gần 10-4, nên khá là cao
Phương pháp Jacobi
Nếu trong hệ Ax = b ma trận A có tất cả các phần tử trên đường chéo khác 0, ta tách A thành hiệu
S - T, trong đó
S =
nn a
a a
O
22 11
, T =
−
−
−
−
−
−
0
0
0
2 1
2 21
1 12
n n
n n
a a
a a
a a
M O
thì Ax = b tương đương với Sx = Tx + b Đặt
Trang 5B = S-1T =
−
−
−
−
−
−
0
0
0
2 1
22
2 22
21
11
1 11
12
nn n
nn n
n n
a
a a
a
a
a a
a
a
a a
a
M O M
và g = S-1b,
ta có hệ tương đương x = Bx + g Phương pháp lặp đơn tiến hành theo công thức v (k+1) = Bv (k) + g
được gọi là phương pháp Jacobi
Trong Ví dụ 1 ta đã dùng phương pháp Jacobi
Phương pháp Jacobi sẽ hội tụ, nếu A = (a ij)n ×n là ma trận đường chéo trội , tức là với mọi i =
1, , n,
|a ii| > ∑
≠
=
n
i j j ij a
1
|
|
Thật vậy, tổng trị tuyệt đối của các phần tử trên mỗi hàng của B nhỏ hơn 1, nên ||B||∞ < 1 Do đó, theo Định lý 10.2, phương pháp lặp đơn
v (k+1) = Bv (k) + g hội tụ với mọi v(0) ∈Rn
Trong Ví dụ 1, ma trận hệ số của hệ phương trình là ma trận đường chéo trội, nên phương pháp này hội tụ
10.3 PHƯƠNG PHÁP SEIDEL
Nội dung phương pháp Seidel
Để dễ hình dung nội dung của phương pháp Seidel, ta quay lại Ví dụ 1 ở 10.2 Trong phương pháp
lặp đơn v (k) = ( ( )
1
k
x , ( ) 2
k
x , ( ) 3
k
x ) được tính qua v (k-1) = ( ( 1 )
1
−
k
x , ( 1 )
2
−
k
x , ( 1 )
3
−
k
x ) nhờ công thức tính lặp
) ( 1
k
x = -0.06 ( 1 )
2
−
k
x + 0.02 ( 1 )
3
−
k
x + 2
) (
2k
x = -0.03 ( 1 )
1
−
k
x + 0.05 ( 1 )
3
−
k
x + 3
x3(k) = -0.01 ( 1 )
1
−
k
x + 0.02 ( 1 )
2
−
k
x + 5 Người ta cải tiến phương pháp lặp đơn này như sau: khi tính )
2k
x sử dụng ngay ( )
1k
x vừa tính được,
khi tính ( )
3
k
x sử dụng ngay ( )
1
k
x , ( ) 2
k
x vừa tính được Cụ thể là ta tính v (k) = ( ( )
1
k
x , ( ) 2
k
x , ) 3
k
x ) qua
v (k-1) = ( ( 1 )
1
−
k
x , ( 1 )
2
−
k
x , ( 1 )
3
−
k
x ) theo các công thức
) (
1k
x = -0.06 ( 1 )
2
−
k
x + 0.02 ( 1 )
3
−
k
x + 2
) ( 2
k
x = -0.03 ( )
1
k
x + 0.05 ( 1 )
3
−
k
x + 3
x3(k) = -0.01 ( )
1k
x + 0.02 ( )
2k
x + 5
Với v(0) = (2, 3, 5), ta tính được v(1) = ( ( 1 )
1
x , ( 1 ) 2
x , ( 1 ) 3
x ) với
Trang 6) 1 ( 1
x = -0.06(3) + 0.02(5) + 2 = 1.92
x(21) = -0.03(1.92) + 0.05(5) + 3 = 3.1924
x3(1) = -0.01(1.92) + 0.02(3.1924) + 5 = 5.044648 Cách làm này được gọi là phương pháp Seidel (một biến dạng của phương pháp lặp đơn) Ý chính
của phương pháp Seidel là các thành phần vừa tính được của v (k) được sử dụng ngay để tính thành phần tiếp theo của nó
Ưu điểm của phương pháp Seidel là tiết kiệm được bộ nhớ trong máy tính và nói chung phương pháp Seidel hội tụ nhanh hơn phương pháp lặp đơn
Sự hội tụ của phương pháp Seidel và đánh giá sai số của nghiệm xấp xỉ
Dưới đây là điều kiện đủ cho sự hội tụ của phương pháp Seidel áp dụng cho phương trình x = Bx +
g với B = (b ij)n ×n
Định lý 10.3 Nếu ||B||∞ <1, thì với mọi v(0) ∈Rn phương pháp Seidel hội tụ tới nghiệm duy nhất v của x = Bx + g Hơn nữa ta có đánh giá sai số
||v (k) - v||∞ ≤
µ
µk
−
1 ||v
(1) - v(0)||∞ (3)
trong đó µ =
i
i n
β
−
≤ 1
max
1 với αi = ∑−
=
1 1
|
|
i
j ij
b , βi = ∑
=
n
i ij
b |
| (α1 = 0)
Phương pháp Gauss - Seidel
Cho hệ Ax = b với A có tất cả các phần tử trên đường chéo khác 0 Giống như phương pháp Jacobi,
ta đưa nó về phương trình x = Bx + g Phương pháp Seidel áp dụng cho phương trình x = Bx + g
được gọi là phương pháp Gauss - Seidel
Nếu A là ma trận đường chéo trội, thì ||B||∞ < 1 (Trong phần Phương pháp Jacobi đã nói) Vì
vậy, theo Định lý 10.3 phương pháp Gauss-Seidel hội tụ với mọi v(0) ∈Rn
Ví dụ Xét hệ phương trình trong Ví dụ 1 của 10.2 Vì ||B||∞ = 0.08 < 1, nên ở đây phương pháp
Gauss - Seidel hội tụ Ta có thể đánh giá sai số của v(3) so với nghiệm đúng v theo (3):
v(1) - v(0) = (-0.08; 0.1924; 0.044648)
||v(1) - v(0)||∞ = max{0.08; 0.1924; 0.044648} = 0.1924
β1 = 0.08, α1 = 0; β2 = 0.05, α2 = 0.03; β3 = 0, α3 = 0.03
µ =
i
i
β
−
≤ 1
max
3
1 = max{0.08; 0.0515463; 0} = 0.08
Trang 7||v(3) - v||∞ ≤
µ
µ
−
1 ||v
(1) - v(0)||∞ =
08 0 1
08
0 3
− 0.1924 ≈ 10-4
Độ chính xác gần 10-4, nên khá là cao
NHỮNG Ý CHÍNH TRONG BÀI GIẢNG TUẦN 13
1 Chuẩn vô hạn của vectơ và ma trận vuông
2 Nội dung của phương pháp lặp đơn Sự hội tụ của phương pháp lặp đơn và đánh giá sai số của
nghiệm xấp xỉ Phương pháp Jacobi
3 Nội dung của phương pháp Seidel Sự hội tụ của phương pháp Seidel và đánh giá sai số của
nghiệm xấp xỉ Phương pháp Gauss - Seidel