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) qx – 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ảix(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