Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

PHƯƠNG PHÁP TÍNH

Hệ Phương Trình Tuyến Tính

Bài toán

 Tìm nghiệm gần đúng của hệ gồm n phương trình


và n ẩn số có dạng AX = B, trong đó
 a11 a12 ... a1n   x1   b1 
a a22 ... a2 n  x  b 
A  ( aij )   21  x   b 2
2

 ... ... ... ...   ...   ... 


     
 a n1 a n 2 ... ann   xn   bn 

 A : Ma trận hệ số
 X : véctơ ẩn số
 B : véctơ tự do

Các phương pháp giải

 Phương pháp giải đúng


 Phương pháp Cramer
 Phương pháp Gauss
 Phương pháp Gauss – Jordan
 Phương pháp nhân tử LU
 Phương pháp giải gần đúng
 Phương pháp lặp Jacobi
 Phương pháp lặp Gauss - Seidel

1
PHẦN 1
CÁC PHƯƠNG PHÁP GIẢI ĐÚNG

Phương pháp Cramer


 Công thức
Aj
xj  , j  1,2,..., n
A

với Aj có từ A bằng cách thay cột thứ j bằng cột tự do


 Hạn chế:
 Khối lượng tính toán lớn
 Không thích hợp cho các hệ nhiều phương trình
(thường xuất hiện trong thực tế)

Phương pháp khử Gauss


 Gồm hai bước
 Quá trình thuận: Sử dụng các phép biến đổi sơ
cấp trên dòng để đưa hệ về dạng tam giác trên.
 Quá trình ngược: Tìm nghiệm, xuất phát từ ẩn số
cuối cùng

 a11 a12 a13   x1   b1  a11 a12 a13   x1   b1 


a a23   x   b   0 a22 ' a23 '  x   b '
 21 a22  2  2   2  2 
a31 a32 a33   x3  b3   0 0 a33 '  x3  b3 '

2
Phương pháp khử Gauss
 Các phép biến đổi sơ cấp trên dòng
 Đổi chỗ hai dòng
 Nhân một dòng với một số khác 0
 Thay một dòng bằng dòng đó cộng với bội số của
một dòng khác
 6 2 2 4   x1   16 
 Ví dụ 1  12  8
 6 10   x2   26 

 3  13 9 3   x3    19 
    
 6 4 1  18  x4   34

Phương pháp khử Gauss


 Quá trình thuận
 Bước 1: Khử x1 trên các phương trình 2, 3, 4.
6  2 2 4   x1   16 
0  4 2 2  x    6 
Trụ thứ nhất   2  
0  12 8 1   x3   27
     
0 2 3  14  x4    18 
 Bước 2: Khử x2 trên các phương trình 3, 4
6  2 2 4   x1   16 
0  4 2 2  x    6 
   2  
Trụ thứ hai 0 0 2  5   x3    9 
     
0 0 4  13  x4   21

Phương pháp khử Gauss

 Bước 3: Khử x3 trên các phương trình 2, 3, 4.


6  2 2 4   x1   16 
Trụ thứ ba 0  4 2 2   x    6
   2  
0 0 2  5  x3    9
     
0 0 0  3  x4    3

 Tóm tắt quá trình thuận


 6 2 2 4   x1   16  6  2 2 4   x1   16 
 12  8 6 10   x2   26  0  4 2 2   x    6
    2  
 3  13 9 3   x3    19  0 0 2  5  x3   9
          
 6 4 1  18  x4   34 0 0 0  3  x4    3 

3
Phương pháp khử Gauss

 Quá trình ngược


 Lần lượt tính nghiệm x4, x3, x2, x1.

6  2 2 4   x1   16 
0  4 2 2   x    6
   2   
0 0 2  5  x3   9 
     
0 0 0  3  x4    3
3 95
x4   1, x3   2
3 2
 6  2(2)  2(1) 16  2(1)  2( 2)  4(1)
x2   1, x1  3
4 6

Phương pháp khử Gauss

 Công thức khử tổng quát


a  
aij  aij   i1 a1 j (1  j  n) 
 a11  
To eliminate x1 2  i  n
a  
b j  b j   i1 b1 
 a11  

a  
aij  aij   i 2 a2 j ( 2  j  n) 
 a22  
To eliminate x2 3  i  n
a  
b j  b j   i 2 b2 
 a22  

Phương pháp khử Gauss

 Công thức khử tổng quát

a  
aij  aij   im amj (m  j  n ) 
 amm  
To eliminate xm m  1  i  n
 aim  
b j  b j   bm

 amm  

continue until xn 1 is eliminated.

4
Phương pháp khử Gauss

 Hạn chế của phương pháp Gauss


 Khi các hệ số trụ bằng 0

0 1  x1  1
1 1  x   2
   2  
 Khi hệ số trụ quá bé có thể dẫn đến các sai số
trong quá trình tính toán
10 10 1  x1  1 
    
 1 1  x2  2

Phương pháp khử Gauss


(with scaled partial pivoting)
 Ví dụ 2: Giải hệ phương trình
1  1 2 1   x1   1 
3 2 1 4  x2   1 
 
5 8 6 3  x3   1 
     
4 2 5 3  x4   1
 Bước khởi đầu
 Véctơ tỉ lệ (Scale vector): S = [2 4 8 5]
 Véctơ chỉ số (index vector): L = [1 2 3 4]

Phương pháp khử Gauss


(with scaled partial pivoting)
 Quá trình thuận:
 Khử x1: Chọn phương trình trụ thứ nhất
1  1 2 1  x1   1 
3 2 4 x   1 
 1  2      S  [2 4 8 5]
5 8 6 3  x3   1   L  [1 2 3 4 ]
     
4 2 5 3  x4   1
 al ,1  1 3 5 4 
R   i i  1,2,3,4   , , , 
 Sli   2 4 8 5 

Giá trị lớn nhất của các tỉ số trên ứng với l4  chọn
phương trình thứ 4 làm phương trình trụ thứ nhất. Đổi
vị trí của l1 và l4, ta có L = [4 2 3 1].

5
Phương pháp khử Gauss
(with scaled partial pivoting)
Cập nhật các ma trận A và B
1  1 2 1  x1   1 
3 2 1 4  x2   1 
  Phương trình
5 8 6 3  x3   1  trụ thứ nhất
     
4 2 5 3  x4    1
0  1.5 0.75 0.25   x1  1.25 
0 0.5  2.75 1.75   x  1.75 
   2  
0  10.5  0.25  0.75  x3  2.25
     
4 2 5 3   x4    1 

Phương pháp khử Gauss


(with scaled partial pivoting)
 Khử x2: Chọn phương trình trụ thứ hai
0  1.5 0.75 0.25   x1  1.25 
0 0.5  2.75 1.75   x  1.75 
   2  
0  10.5  0.25  0.75  x3  2.25
     
4 2 5 3   x4    1 
S  [2 4 8 5 ] L[ 4 2 3 1]

 al , 2   0.5 10.5 1.5 


R   i i  2,3,4    L [ 4 3 2 1]
S 4 8 2 
 li  

Phương pháp khử Gauss


(with scaled partial pivoting)
Cập nhật các ma trận A và B

0  1.5 0.75 0.25   x1  1.25  Phương trình


0 0.5  2.75 1.75   x  1.75 
  2   trụ thứ hai
0  10.5  0.25  0.75  x3  2.25
     
4 2 5 3  x
 4   1 
L  [ 4 3 2 1]
0 0 0.7857 0.3571  x1  0.9286
0 0  2.7619 1.7143  x2  1.8571
 
0  10.5  0.25  0.75   x3   2.25 
     
 4 2 5 3   4   1 
x

6
Phương pháp khử Gauss
(with scaled partial pivoting)
 Khử x3: Chọn phương trình trụ thứ ba
0 0 0.7857 0.3571  x1  0.9286
0 0  2.7619 1.7143  x2  1.8571
 
0  10.5  0.25  0.75   x3   2.25 
     
 4 2 5 3   4   1 
x
S  [2 4 8 5 ] L[ 4 3 2 1 ]

 al , 3   2.7619 0.7857 
R   i i  3,4    L  [ 4 3 2 1]
S 4 2 
 li  

Phương pháp khử Gauss


(with scaled partial pivoting)
Cập nhật các ma trận A và B
Phương trình
0 0 0.7857 0.3571  x1  0.9286 trụ thứ ba
0
 0  2.7619 1.7143  x2  1.8571

0  10.5  0.25  0.75   x3   2.25 
     
 4 2 5 3   4   1 
x
L  [ 4 3 2 1]
0 0 0 0.8448  x1  1.4569
0
 0  2.7619 1.7143  x2  1.8571

0  10.5  0.25  0.75   x3   2.25 
     
4 2 5 3   x4    1 

Phương pháp khử Gauss


(with scaled partial pivoting)
 Quá trình ngược:
0 0 0  x1  1.4569 
0.8448  L  [ 4 3 2 1]
0 0  2.7619 1.7143 
 x  1.8571 
  2   
 0  10 .5  0.25  0.75 
 x3   2.25 
     
4 2 5  x4    1 
3 
bl4 1.4569 bl  a x
l3 , 4 4
x4    1.7245 , x3  3  0.3980
al4 , 4 0.8448 a l3 , 3
bl2  al 2 , 4 x 4  al2 , 3 x3
x2    0.3469
al 2 , 2
bl1  al1 , 4 x4  al1 , 3 x3  al1 , 2 x2
x1    1.8673
al1 ,1

7
Phương pháp khử Gauss - Jordan

 Đặc điểm:
Sử dụng phép biến đổi sơ cấp trên dòng đưa hệ
phương trình AX = B về dạng I.X = D
Chỉ gồm quá trình thuận (không cần quá trình
ngược)
 Ví dụ: Giải hệ phương trình sau bằng phương pháp
Gauss - Jordan 2  2 2   x1  0
4 2  1  x   7 
   2  
2  2 4   x3  2

Phương pháp khử Gauss - Jordan

2  2 2   x1  0
4 2  1  x   7
   2  
2  2 4   x3  2
Step 1 Eleminate x1 from equations 2and 3

eq1  eq1 / 2 
 1  1 1   x1  0
4  
eq 2  eq 2   eq1  0 6  5  x2   7
1 
0 0 2   x3  2
2  
eq3  eq3   eq1
1 

Phương pháp khử Gauss - Jordan

1  1 1   x1  0
0 6  5  x   7 
   2  
0 0 2   x3  2
Step 2 Eleminate x 2 from equations 1 and 3

eq 2  eq 2 / 6 
 1 0 0.1667   x1  1.1667
 1 
eq1  eq1   eq 2  0 1  0.8333  x   1.1667
 2  
 1   0 0 2   x3   2 
0  
eq3  eq3   eq 2 
1 

8
Phương pháp khử Gauss - Jordan

1 0 0.1667   x1  1.1667 
0 1  0.8333  x   1.1667 
   2  
0 0 2   x3   2 
Step 3 Eleminate x 3 from equations 1 and 2

eq3  eq3 / 2 
 1 0 0  x1  1 
 0.1667       
eq1  eq1   eq3   0 1 0  x2   2
 1   0 0 1   x  1 
  0.8333      3  
eq 2  eq 2   eq3
 1  

Phương pháp khử Gauss - Jordan

2 2 2   x1  0
4 2  1  x2   7

2  2 4   x3  2
1 0 0  x1  1  x1  1 
 0 1 0  x2   2   x2   2
    
0 0 1  x3  1  x3  1 

Phương pháp phân tích LU

 Ý tưởng chính
Phân tích ma trận A thành tích hai ma trận L và U
A = L.U
với L là ma trận tam giác dưới, U là ma trận tam
giác trên.
Phương trình AX = B  L(UX) = B
Đưa về việc giải hai hệ phương trình
 LY  B

UX  Y

9
Phương pháp phân tích LU

 Công thức Doolittle: Với A không suy biến và a11  0,


A có thể phân tích thành
A = L.U
trong đó
 1 0 ... 0  u11 u12 ... u1n 
l  0 u ... u2 n 
1 ... 0
L   21  U  22 
 ... ... ... ...   ... ... ... ... 
   
 ln1 ln 2 ... 1  0 0 ... unn 

Phương pháp phân tích LU


 u1 j  a1 j , 1  j  n

 ai1
li 1  , 2in
 u11
 i 1

 uij  aij   lik ukj , 1  i  j
k 1
 j 1
 1
 lij  [aij   lik ukj ], 1  j  i
 u jj k 1

Phương pháp phân tích LU

 Ví dụ 1: Giải hệ phương trình


 2 x1  2 x2  3x3  9

 4 x1  3x2  4 x3  15
 2x  x  2x  3
 1 2 3

 Giải Áp dụng công thức Doolittle, ta có


u11  a11  2, u12  a12  2, u13  a13  3, l21  2, l31  1
u22  a22  l21u12  1, u 23  a23  l21u13  2
1
l32  a32  l31u12   1, u33  a33  l31u13  l32u23  3
u22

10
Phương pháp phân tích LU

Do đó
  1 0 0   2 2  3
A    2 1 0 0 1  2
 1  1 1 0 0 3 

Giải hệ LY = B
 1 0 0   y1   9  9
 2 1 0   y    15   y   3 
  2     
 1 1 1   y   3   3 
  3     

Phương pháp phân tích LU

Giải hệ UX = Y

 2 2 3   x1   9  2
 0 1 2   x    3   x   1 
    
2  
 0 0 3   x   3   1 
  3     
Vậy nghiệm của hệ phương trình
x1 = 2, x2 = 1, x3 =-1

PHẦN 2
PHƯƠNG PHÁP LẶP

11
Giới thiệu

 Như thế nào?


 Biến đổi hệ AX = B về dạng X = TX + C, với ma
trận T và véctơ tự do C được chọn thích hợp
 Chọn một véctơ xấp xỉ ban đầu X(0).
 Xây dựng dãy lặp X(1), X(2),…, X(m),…xác định bởi
X(m) = TX(m-1) + C
 Điều kiện: Dãy X(m) hội tụ về nghiệm chính xác

Giới thiệu

 Tại sao?
 Các phương pháp giải đúng vẫn có thể có sai số
xuất hiện do việc làm tròn số. Sai số này có thể khá
lớn và thường khó kiểm soát.
 Vớiphương pháp lặp, người sử dụng kiểm soát
được sai số của nghiệm xấp xỉ sau mỗi bước lặp.
 Khi véctơ xấp xỉ ban đầu được chọn “tốt” thì khối
lượng tính toán sẽ ít.

Giới thiệu

 Điều kiện hội tụ?


Chuẩn của ma trận T

n
 Nếu T 
 max  tij  1 thì, với mọi véctơ ban đầu X(0),
1 i  n
j 1

dãy X(m) sẽ hội tụ về nghiệm chính xác theo nghĩa


 
X (m)  X *  max xi  xi* n 0
 1i  n

Khoảng cách giữa X(m) và X*

12
Giới thiệu

 Điều kiện hội tụ  0 0,2  0,3



 Ví dụ: Với T   0,4 0 0,2  , hãy kiểm tra sự

 0,1  0,6 0 

hội tụ của dãy lặp X(m).

 0 0,2  0,3 |0| + |0,2| + |-0,3| = 0,5

T   0,4 0 0,2  |-0,4| + |0| + |0,2| = 0,6


Giá trị lớn
nhất là 0,7

 0,1  0,6 0  |0,1| + |-0,6| + |0| = 0,7

Vậy dãy lặp sẽ hội tụ về nghiệm chính xác.

Giới thiệu

 Đánh giá sai số


Đánh giá tiên nghiệm
m
T
X (m)  X *  
X (1)  X ( 0)
 1 T 

Đánh giá hậu nghiệm


T
X m   X *  
X m   X m 1
 1 T 

Giới thiệu

Xác định ma trận T và véctơ tự do C


như thế nào?

Phương pháp lặp Phương pháp lặp


Jacobi Gauss - Seidel

13
Phương pháp lặp Jacobi

 Giả thiết:
 A là ma trận đường chéo trội nghiêm ngặt
n
aii   aij , i  1,2,..., n.
j 1
j i

Lưu ý
Nếu A là ma trận đường chéo trội nghiêm ngặt
thì det(A)  0 và aii  0, với mọi i.

Phương pháp lặp Jacobi

 Định lý: Cho A là ma trận đường chéo trội nghiêm


ngặt. Khi đó, ta có
A.X = B  X = T.X + C

với T = D-1.(L + U) và C = D-1B. Hơn nữa T 


 1.

a11 0  0  0 0  0  0  a12   a1n 


0 a22  0  0
 a 0  0  0   a2n 
D L   21 U 
             
     
0 0  ann    an1  an 2  0  0 0  0 

Phương pháp lặp Jacobi

 Công thức lặp Jacobi

X(m) = T.X(m-1) + C

hay, một cách tường minh,

1 i1 (m1) n
xi(m)  [a x   aij xi(m1)  bi ], i  1, n
aii j1 ij i j i1

14
Phương pháp lặp Jacobi

 Ví dụ: Cho hệ phương trình sau

3x1 – 0,1x2 – 0,2x3 = 7,85 (1)

0,1x1 + 7x2 – 0,3x3 = -19,3 (2)

0,3x1 – 0,2x2 + 10x3 = 71,4 (3)

a) Tính nghiệm gần đúng X(5), với X(0) = 0.

b) Tính sai số của nghiệm X(5).

Phương pháp lặp Jacobi

 3  0,1  0,2
A   0,1 7  0,3 là ma trận đường chéo trội.
0,3  0,2 10 
Xây dựng công thức lặp


 x1m   1 / 3. 0,1x2m 1  0,2 x3m1  7,85 
 m 

 x2  1 / 7.  0,1x1
 m 1
 0,3x3m1  19,3 
 3 
 x m   1 / 10.  0,3 x m 1  0,2 x m 1  71,4
1 2 

Phương pháp lặp Jacobi

Kết quả tính


m x1(m) x2(m) x3(m)
1 2,61667 -2,75714 7,14000
2 3,00076 -2,48852 7,00636
3 3,00081 -2,49973 7,00021
4 3,00002 -2,50000 6,99998
5 2,99999 -2,50000 6,99999
Nghiệm X(5) = (2,99999; -2,50000 ; 6,99999)

15
Phương pháp lặp Jacobi

Sai số  0 1 / 30 1 / 15 
 Ma trận: T    1 / 70 0 3 / 70 , ||T|| = 0,1.

 3 / 100 1 / 50 0 

 Khoảng cách giữa X(5) và X(4) : 2,38.10-5

 Sai số của nghiệm X(5)


T
X 5   X *  
. X 5   X 4   2,65.10 6
 1 T 

Phương pháp lặp Gauss - Seidel

 Giả thiết: A là ma trận đường chéo trội nghiêm ngặt.

 Định lý: Nếu A là ma trận đường chéo trội nghiêm


ngặt thì
AX = B  X = TX + C
với T = (D – L)-1.U và C = (D – L)-1.B (D, L U được
xác định như trong phần trước). Ngoài ra
||T|| < 1.

Phương pháp lặp Gauss - Seidel

 Công thức lặp Gauss - Seidel:

X(m) = T.X(m-1) + C

Công thức tường minh

1 i 1 n
xi( m )  [   a x ( m)   aij xi( m1)  bi ], i  1, n
aii j 1 ij i j i 1

16
Phương pháp lặp Gauss - Seidel

 Ví dụ: Giải hệ phương trình sau bằng phương pháp


lặp Gauss – Seidel
 20 x1  x2  2 x3  12

 x1  20 x2  x3  13
  2 x  x  20 x  14
 1 2 3

Chọn véctơ ban đầu X(0) = 0.


a) Tính nghiệm xấp xỉ X(4).
b) Đánh giá sai số của X(4).

Phương pháp lặp Gauss - Seidel

 20  1 2 
A   1 20  1 là ma trận đường chéo trội.
 2  1 20 
Công thức lặp Gauss - Seidel


 x1m   1 / 20. x2m 1  2 x3m 1  12 
 m 
 m 
 x2  1 / 20.  x1  x3  13
m 1

 3 
 x m   1 / 20. 2 x m   x  m   14
1 2 
Bước lặp 1: X(1) = (0,6; 0,62; 0,791)

Phương pháp lặp Gauss - Seidel

Bước lặp 1: X(1) = (0,6; 0,62; 0,791)


Bước lặp 2: X(2) = (0,5519; 0,6620; 0,7883)
Bước lặp 3: X(3) = (0,5543; 0,6617; 0,7885)
Bước lặp 3: X(4) = (0,5542; 0,6617; 0,7885)

Ta có
X  4   X 3   10 4

17
Phương pháp lặp Gauss - Seidel

 20 1 2   20 0 0  0 1  2
A   1 20 1 D  L   1 20 0  U  0 0 1 
 2 1 20 0 0 0 
 2 1 20

 0,05 0 0  0 0,05 0,1 


D  L1   0,0025 0,05 0  T  0 0,0025 0,055 
 0,0049 0,0025 0,05 0 0,0049 0,0073
T
T  0,15 X m   X *  
X 4   X 3   1,76.10 5
  1 T 

Phương pháp lặp Gauss - Seidel

Nhận xét
 Trong thực tế, khi ||T|| không quá gần 1 (nhất là
khi ||T|| gần 0) ta thường coi ||X(m) – X(m-1)|| là
sai số của nghiệm xấp xỉ X(m).
 Về mặt tính toán, công thức Gauss – Seildel cho
phép tiết kiệm bộ nhớ hơn so với công thức lặp
Jacobi.

18

You might also like