Chương 2: Hệ Phương Trình Tuyến Tính
Nguyễn Đức Nghĩa, Vũ Văn Thiệu, Trịnh Anh Phúc
1 Bộ
1
mơn Khoa Học Máy Tính, Viện CNTT & TT,
Trường Đại Học Bách Khoa Hà Nội.
Ngày 4 tháng 12 năm 2012
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
1 / 68
Giới thiệu
1
Thế nào là hệ phương trình tuyến tính ?
2
Ví dụ 3 chiều
3
Ma trận hoán vị và ma trận tam giác
4
Phân tích LU
5
Vai trị của phần tử trụ
6
Hiệu ứng của sai số làm tròn
7
Hệ xác định tồi và số điều kiện của ma trận
8
Giải hệ phương trình tuyến tính bằng phân tích ma trận
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
2 / 68
Hệ phương trình tuyến tính
Định nghĩa
a11 x1 + a12 x2 + · · · + a1n xn = b1
a21 x1 + a22 x2 + · · · + a2n xn = b2
···
am1 x1 + am2 x2 + · · · + amn xn = bm
Ký hiệu
A = (aij ) với i = 1, · · · , m và j = 1, · · · , n là ma trận hệ số A.
b = (b1 , b2 , · · · , bm )T là vectơ vế phải.
x = (x1 , x2 , · · · , xn )T là vectơ biến.
ta có thể viết lại hệ phương trình tuyến tính dưới dạng ma trận
Ax = b
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
3 / 68
Hệ phương trình tuyến tính
Ví dụ 1 :
Xét hệ phương trình tuyến tính có
Ma trận hệ số A =
3 2
1 −1
Vec tơ vế phải là b =
−1
1
thì hệ có nghiệm duy nhất x =
0.2
−0.8
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
4 / 68
Hệ phương trình tuyến tính
Ví dụ 2 :
Xét hệ phương trình tuyến tính có
Ma trận hệ số A =
1 0 3
0 1 −5
1
2
1 − 3t
thì hệ có vơ số nghiệm x = 2 + 5t với mọi t ∈ R.
t
Vec tơ vế phải là b =
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
5 / 68
Hệ phương trình tuyến tính
Ví dụ 3 :
Xét hệ phương trình tuyến tính có
1 0
Ma trận hệ số A = 0 1
3 4
1
Vec tơ vế phải là b = 2
3
thì hệ vơ nghiệm.
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
6 / 68
Hệ phương trình tuyến tính
Đối với hệ phương trình tuyến tính có thể xảy ra
m = n : hệ vng (số phương trình bằng số ẩn, thường có nghiệm
duy nhất)
m < n : hệ thiếu (số phương trình ít hơn số ẩn số, hệ thường vô số
nghiệm)
m > n : hệ dư (số phương trình nhiều hơn số ẩn số, hệ thường vô
nghiệm)
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
7 / 68
Giải hệ phương trình tuyến tính
Hệ phương trình vng
Ax = b
trong đó A ∈ Rn×n cịn x và b là các vec tơ ∈ Rn
Giải hệ phương trình vng
Nếu ma trận A khơng suy biến (singular) thì nghiệm duy nhất của
phương trình là
x = A−1 b
Matlab
» x=inv(A)*b
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
8 / 68
Giải hệ phương trình tuyến tính
Ví dụ 4 :
Giải hệ phương trình A = (7) và b = (21) hay phương trình
7x = 21
Cách 1 : Giải trực tiếp phép chia x = 21/7 = 3
Cách 2 : Nghịch đảo 7−1 rồi nhân với 21 sẽ dẫn đến
x = 7−1 × 21 = 0.142857 × 21 = 2.99997
Rõ ràng cách 1 tốt hơn cách 2, thêm nữa cách 2 còn có khối lượng tính
tốn lớn hơn khi xác định nghịch đảo 7−1 .
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hà Nội. ) 12 năm 2012
Tính TT, Trường
Ngày 4 tháng
9 / 68
Giải hệ phương trình tuyến tính
Nhận xét
Ngay cả trong lời giải tổng quát, khi ta xét hệ gồm nhiều phương trình thì
việc giải nó thường là tạo ra lời giải trực tiếp mà khơng qua tính giá trị
nghịch đảo A−1 .
Chẳng hạn các cách giải :
Phân tích LU (LU Factorization)
Phân tích Cholesky (Cholesky Factorization)
Phân rã QR (QR Decomposition)
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
10 / 68
Giải hệ phương trình tuyến tính
Tốn tử chia ma trận trong Matlab
Nếu A là ma trận bất kỳ và B là ma trận có số hàng giống A thì lời giải
của hệ phương trình
AX = B
thì ta dùng phép chia trái X = A\B.
Cịn lời giải của hệ phương trình
XA = B
thì ta dùng phép chia phải X = B/A.
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &toán khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
11 / 68
Giải hệ phương trình tuyến tính
Ví dụ 5 : Chia trái
» A=[3 2;1 -1];b=[-1;1];
» x = A\b;
x = 0.2000
-0.8000
Ví dụ 6 : Chia phải
» AA=A’;bb=b’;
» xx = bb/AA;
xx = 0.2000 -0.8000
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &toán khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
12 / 68
Giải hệ phương trình tuyến tính
Các định lượng cơ bản khi giải hệ phương trình vng
Định thức (Determinant) để xác định hình thức nghiệm (vơ nghiệm
hoặc vơ số nghiệm, hay nghiệm duy nhất).
Vết (Trace) là tổng các phần tử đường chéo chính.
Hạng (Rank) là số dịng hay cột độc lập tuyến tính lớn nhất của ma
trận.
Matlab
» D=det(A)
» T=trace(A)
» R=rank(A)
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
13 / 68
Giải hệ phương trình tuyến tính
Định lý Kronecker-Capelli
Hệ phương trình tuyến tính Ax = b có nghiệm khi và chỉ khi
rank(A) = rank(Ab)
Ví dụ 7 : cùng hạng
» A=[1 2 3; 4 5 6; 8 10 12];
» b=[5;6;12];
» rA=rank(A);
» rAb=rank([Ab])
rA = 2
rAb = 2
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
14 / 68
Giải hệ phương trình tuyến tính vng
Các tình huống xảy ra khi có giá trị định thức khi giải Ax = b
Hệ phương trình có nghiệm duy nhất nếu det(A) = 0.
Khi det(A) = 0 hệ phương trình có thể có vơ số nghiệm hoặc vơ
nghiệm (Ta có thể áp dụng định lý Kronecker-Capelli để xác định rõ
nó vơ nghiệm hay vơ số nghiệm).
Khi det(A) = 0 thì tồn tại ma trận nghịch đảo của A và A được gọi
là ma trận khơng suy biến.
Khi det(A) = 0 thì nghịch đảo A−1 không tồn tại và A được gọi là
ma trận suy biến.
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
15 / 68
Giải hệ phương trình tuyến tính vng
Ví dụ 8 :
» A1=[-1 1; -2 2];b1=[1 ; 0];
% hệ vô nghiệm
» x1 = A1\b1, D1 = det(A1)
Warning : Matrix is singular to working precision.
x1 = Inf
Inf
D1=0
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
16 / 68
Giải hệ phương trình tuyến tính vng
Ví dụ 9 :
» A2=[-1 1; -2 2];b2=[1 ; 2];
% hệ vô số nghiệm
» x2 = A2\b2
Warning : Matrix is singular to working precision.
x2 = -1
0
Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
17 / 68
Giải hệ phương trình tuyến tính vng
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
18 / 68
Giải hệ phương trình tuyến tính vng
Ví dụ 3 chiều
Cho hệ phương trình cấp 3 sau :
7
10 −7 0
x1
−3 2 6 x2 = 4
6
x3
5 −1 5
ta viết lại dưới dạng hệ phương trình tuyến tính
10x1 − 7x2
=7
−3x1 + 2x2 + 6x3 = 4
5x1 − x2 + 5x3 = 6
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
19 / 68
Giải hệ phương trình tuyến tính vng
Ví dụ 3 chiều (tiếp)
Hệ phương trình tuyến tính
10x1 − 7x2
=7
(1)
−3x1 + 2x2 + 6x3 = 4
(2)
5x1 − x2 + 5x3 = 6
(3)
ta tiến hành giải
Khử x1 ⇒ (1) × −0.3 + (2) và (1) × 0.5 − (3)
Hệ số 10 của ẩn x1 trong (1) đc gọi là phần tử trụ, các hệ số -0.3 và 0.5
đc gọi là nhân tử.
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
20 / 68
Giải hệ phương trình tuyến tính vng
Ví dụ 3 chiều (tiếp)
Hệ phương trình tuyến tính sau khi khử x1
10x1 − 7x2
=7
(4)
−0.1x2 + 6x3 = 6.1
(5)
2.5x2 + 5x3 = 2.5
(6)
ta tiếp tục giải
Khử x2 ⇒ do phần tử trụ của x2 trong (5) là -0.1 có trị tuyệt đối
nhỏ, ta tiến hành đổi chỗ hai phương trình (5) và (6) rồi mới tiến
hành khử x2 .
Việc làm này gọi là phép xoay
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &toán khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
21 / 68
Giải hệ phương trình tuyến tính vng
Ví dụ 3 chiều (tiếp)
Hệ phương trình tuyến tính sau khi thực hiện phép xoay
10x1 − 7x2
=7
(7)
2.5x2 + 5x3 = 2.5
(8)
−0.1x2 + 6x3 = 6.1
(9)
ta tiếp tục giải
Khử x2 ⇒ (8) × 0.04 + (9)
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &toán khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
22 / 68
Giải hệ phương trình tuyến tính vng
Ví dụ 3 chiều (tiếp)
Hệ phương trình tuyến tính sau khi thực hiện phép khử x2
10x1 − 7x2
=7
(10)
2.5x2 + 5x3 = 2.5
(11)
6.2x3 = 6.2
(12)
ta tiếp tục giải
Từ phương trình (12) ⇒ x3 = 1.
thay x3 vào (11) thì 2.5x2 + 5 × (1) = 2.5 ⇒ x2 = −1.
thay x2 vào (10) thì 10x1 − 7 × (−1) = 7 ⇒ x1 = 0.
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &toán khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
23 / 68
Giải hệ phương trình tuyến tính vng
Các ma trận L,U,P
Tồn bộ cách giải vừa trình bày có thể được gói gọn trong các
1
0
0
10 −7 0
1
L = 0.5
1
0 , U = 0 2.5 5 , P = 0
−0.3 0.04 1
0
0 6.2
0
ma trận sau
0 0
0 1
1 0
Với
L là ma trận chứa các nhân tử
U là ma trận hệ số cuối cùng
P là ma trận hốn vị mơ tả phép xoay
thì chúng ta có
LU = PA
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
24 / 68
Giải hệ phương trình tuyến tính vng
Trịnh Anh Phúc ( Bộ mơn Khoa Học Máy Tính, Viện CNTT &tốn khoa họcĐại Học Bách Khoa Hàtháng )12 năm 2012
Tính TT, Trường
Ngày 4 Nội.
25 / 68