Bài tập lớn này sẽ trình bày định nghĩa và ứng dụng của phân tích LU vàPLU trong việc giải các phương trình tuyến tính dưới dạngAX=B.. Cuối cùng, chúng emsẽ giới thiệu một số ứng dụng th
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
BÀI TẬP LỚN HỌC PHẦN ĐẠI SỐ TUYẾN TÍNH
ĐỀ TÀI 12:
PHÂN TÍCH LU LỚP L13 – NHÓM 12 – HK 241 Giảng viên hướng dẫn: Th.S Nguyễn Xuân Mỹ
Sinh viên thực hiện Mã số sinh viên Điểm số Chữ ký
Trương Việt Tiến 2413492
Trương Đình Thái Bảo 2410306
Võ Hoàng Khang 2411487
Trang 3LỜI CẢM ƠN
Đầu tiên, cho chúng em xin gửi lời cảm ơn chân thành đến Trường đại học BáchKhoa – ĐHQG TPHCM, đã đưa môn Đại Số Tuyến Tính vào chương trìnhgiảng dạy Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc đến giảng viên bộmôn là Thạc Sĩ Nguyễn Xuân Mỹ đã dạy dỗ, truyền đạt cho chúng em kiến thứcquý báu trong những ngày qua Trong suốt thời gian tham gia lớp Đại Số TuyếnTính của cô, chúng em tự thấy bản thân mình tư duy nhạy bén hơn, học tập hiệuquả và nghiêm túc hơn Những kiến thức cô truyền đạt chắc chắn là những trithức quý báu, là hành trang cần thiết cho chúng em sau này.
Bộ môn Đại Số Tuyến Tính là một môn học vô cùng hữu ích, có tính thực tếcao, đảm bảo cung cấp đủ nhu cầu thực tiễn cho sinh viên Tuy nhiên, do vốnkiến thức và kinh nghiệm của chúng em còn nhiều hạn chế nên mặc dù đã cốgắng hết sức nhưng chắc chắn bài tâp lớn Đại Số Tuyến Tính lần này khó có thểtránh khỏi những thiếu sót Kính mong cô có thể xem xét, góp ý cho bài tập củachúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!
Trang 4Mục lục
MỤC LỤC……… 3 LỜI MỞ ĐẦU………4
I PHÂN TÍCH LU………4-7
1 Định nghĩa……… 4
2 Phương pháp phân tích LU và PLU……….5-7
II ĐIỀU KIỆN PHÂN TÍCH LU VÀ PLU……… 7-8 III ÁP DỤNG PHƯƠNG PHÁP LU/PLU VÀO GIẢI HỆ PHƯƠNGTRÌNH TUYẾN
TÍNH……… 9-13
1 Phương pháp LU ……… 9-11
2 Phương pháp PLU……… 11-13
IV PHÂN TÍCH ĐÁNH GIÁ PHƯƠNG PHÁP LU/PLU và GAUSS.14-16
1 Nhắc lại phương pháp GAUSS……… 14-16
2 Phân tích đánh giá PP GAUSS và PT LU/PLU……… 16
V PHÂN TÍCH LU/PLU TRONG PHẦN MỀM MATLAB……… 17-18
1 Tổng quan về MATLAB……… 17
2 Chương trình code MATLAB……….17-18 2.1 Các lệnh được dùng trong MATLAB……… 17-18 2.2 Đoạn code hoàn chỉnh……… 18
VI ỨNG DỤNG PHƯƠNG PHÁP LU VÀO THỰC TẾ……… 18-21 Kết luận 22 Tài liệu tham khảo……….23
Trang 5LỜI MỞ ĐẦU:
Trong lĩnh vực toán học và khoa học máy tính, giải quyết các hệ phươngtrình tuyến tính là một nhiệm vụ quan trọng trong nhiều lĩnh vực như kỹ thuật,vật lý và kinh tế Phương pháp phân tích LU (LU decomposition) là kỹ thuậtmạnh mẽ giúp phân tách một ma trận thành tích của hai ma trận tam giác dưới(L) và tam giác trên (U) Phương pháp này không chỉ đơn giản hóa quá trìnhgiải hệ phương trình mà còn cải thiện hiệu suất tính toán, đặc biệt trong các bàitoán lớn với nhiều biến Để áp dụng phân tích LU, ma trận A cần phải là matrận vuông và không có phần tử chính bằng 0, trong khi phân tích PLU (PLUdecomposition) cho phép hoán vị hàng nhằm tăng tính ổn định.
Bài tập lớn này sẽ trình bày định nghĩa và ứng dụng của phân tích LU vàPLU trong việc giải các phương trình tuyến tính dưới dạngAX=B Chúng emsẽ
so sánh ưu điểm của hai phương pháp này với phương pháp Gauss truyền thống
và áp dụng chúng trong MATLAB để thực hiện và kiểm tra kết quả Cuối cùng,
chúng emsẽ giới thiệu một số ứng dụng thực tế của phân tích LU và PLU, từ
mô hình hóa trong kỹ thuật đến các bài toán tối ưu hóa trong kinh tế, nhằmminh họa tính ứng dụng và hiệu quả của các phương pháp này trong thực tế.
I Phân tích LU
1. Định nghĩa
Trong đại số tuyến tính, phân tíchLU( LU decomposition, LU factorization)
là phương pháp phân tích ma trậnA thành tích của 1 tam giác dướiL và một matrận tam giác trênU
A = … … … … … … …
L = 1 0 … 0 … … … … 1 … 0
… 1 ; U = … … … … 0 0 0 … … …
Phương pháp phân tích LU
Trang 6Phân tích LU của A là cách viết A thành tích của 2 ma trận có dạng: A = LU,trong đó:
Với I21 = = = 2 Ta có phép biến đổi dòng thứ hai là h2 − I21.h1 = h2 – 2h1
-Tương tự, ta cũng tính ra được I31 = = = 4 Và phép biến đổi dòng thứ ba
Trang 7→ L = 1 0 0 I(21) 1 0 I(31) I(32) 1 =1 0 0 2 1 0 4 1 1
Hoặc: Lập ma trận đơn vị I cùng cỡ vớ i A Biến đổi I thành ma trận tam giác
dướ i bằng phép biến đổi hi → hi +h j
I=1 0 0 0 1 0 0 0 1 → 1 0 0 0 1 0 0 1 1 → 1 0 0 0 1 0 4 1 1 → 1 0 0 2 1 0 4 1 1
Vậy A=LU=1 0 0 2 1 0 4 1 1 1 2 1 0 1 1 0 0 6=1 2 1 2 5 3 4 9 1
II ĐIỀU KIỆN PHÂN TÍCH LU VÀ PHÂN TÍCH PLU:
1 ĐIỀU KIỆN PHÂN TÍCH LU:
Phân tích LU là phương pháp phân tích ma trận A thành tích của một ma trậntam giác dưới L và một ma trận tam giác trên U Một ma trận khả nghịch cấp nthỏa phép phân tích LU nếu và chỉ nếu tất cả các ma trận con chính cấp k, k = 0,hoặc phần tử đường chéo của L (hoặc U) đều bằng 1.
Trang 8Vậy A=LU=1 0 0 2 1 0 3 1 1 1 2 1 0 1 1 0 0 5
Lưu ý:
➢ Theo một cách nói khác, ta có L là một ma trận tam giác dưới, đườngchéo có các phần tử bằng 1, các phần tử phía dưới đường chéo là các hệ số αtrong phép biến đổi hi → hi - αh j.
➢ Ở ví dụ trên, ta thấy ma trận L có thể tìm được ngay, không cần dùng đếncác phép biến đổi ngược Trong trường hợp này ta dùng phép biến đổi h2 → h2
- 2h1 , h3 → h3 -3h1 và h3 → h3 - h2, nên ma trận L có các phần tử: l21 = 2,l31 = 3, l32 = 1.
2 PHÂN TÍCH PLU:
➢ Phân tích PLU: Phân tích PLU là cách phân tích có dạng A = PLU với L
và U vẫn tương ứng là ma trận tam giác dưới và trên, và P là một ma trận hoán
vị Mọi ma trận khả nghịch A - bất kể vuông hay không - đều có phân tích PLU.
➢ - Khi sử dụng các phép biến đổi sơ cấp hi ->hi + αh j mà trên đường chéoxuất hiện phần tử 0, lúc này ta có thể dùng phương pháp hoán đổi hai hàng hi
<-> h j để làm cho phần tử ở vị trí này khác 0 Điều này tương đương với việcnhân bên trái cho ma trận sơ cấp tương ứng với phép hoán đổi Ta có kết quảnhư sau: Với mọi ma trận A không suy biến luôn tồn tại hoán vị P sao cho PA cóthể phân tích thành dạng PA=LU.
III Áp dụng phương pháp LU/PLU vào giải hệ phương trình tuyến tính
1 Phương pháp LU
Phân tích LU của ma trận A có dạng: A = LU, trong đó:
- A: một ma trận vuông và có khả năng phân tích LU (không suy biến).
- L: ma trận tam giác dưới (L là viết tắt của Lower trong Lower Triangle).
- U: ma trận tam giác trên (U là viết tắt của Upper trong Upper Triangle).
* Áp dụng ma trận A=LU giải hệ phương trình tuyến tính:
+ Bước 1: Đầu tiên, ta biểu diễn hệ phương trình đó thành ma trận A và hệ số tự
do b Sau đó, ta thực hiện các phép biến đổi trên dòng để đưa A thành một matrận bậc thang Lúc đó, ma trận bậc thang chính là U.
+ Bước 2: Tìm ma trận tam giác dưới L bằng phương trình L = AU-1 Hoặc nóicách khác, L là ma trận tam giác dưới, có các phần tử trên đường chéo chính bằng 1, các phần tử phía dưới đường chéo là các hệ số trong các phép biến đổitrên.
Trang 9+ Bước 3: Sau khi đưa ma trận A về dạng tích LU thì phương trình Ax = b ta cóthể giải bằng cách sau
Ax = b LUx = b {
Dùng biến đổi giải ngược đối với ma trận tam giác dưới và ma trận tam giáctrên ta sẽ được kết quả.
Ví dụ: Giải hệ phương trình sau: 321
- Bước 1: Trước hết, ta biểu diễn thành ma trận A 4 3 2 2 2 1 6 5 4 và hệ số b
235.Ta cần tính toán
hệ số Aij = α là hệ số trong phép biến đổi hi → hi – αh j Với α21 = = = 0.5
Ta có phép biến đổi dòng thứ hai là h2 − α21.h1 = h2 – 0.5h1.
-Tương tự, ta cũng tính ra được α31 = = = 1.5 Và phép biến đổi dòng thứ
Trang 10➢ Sử dụng phương pháp phân tích PLU khi nào?
Phương pháp PLU là một mở rộng của phương pháp LU và được sửdụng khi phương pháp LU gặp phải một số vấn đề, chẳng hạn như matrận có các phần tử chính (pivot) bằng 0 hoặc rất nhỏ Khi đó, phân rãPLU sẽ thay thế phân rã LU để đảm bảo tính ổn định và khả năng thựcthi.
➢ Phân tích PLU như thế nào?
Phân tích PLU là phương pháp biến đổi ma trận A thành các ma trậnP,L,U, trong đó;
-A là ma trận ban đầu.
-P là ma trận hoán vị để thay đổi vị trị các hang.
-L là ma trận tam giác dưới có các phần tử trên đường chéo chính là 1.
-U là ma trận tam giác trên.
Phân tích PLU được viết dưới dạng:
Trang 11Và khi giải hệ phương trình ta có thể viết dưới dạng:
LUx=Pb3.Áp dụng phân tích PLU vào hệ phương trình tuyến tính.
Các bước tổng quát như sau:
Giả sử ta có hệ Ax=b, sau khi thực hiện phép phân tích PLU, ta có :
PAx=Pb => LUx=Pb Bước 1: phân tích A thành P,L và U
Sử dụng phương pháp khử Gauss và phép hoán vị để tìm các ma trận P, L và Usao cho PA=LU.
Như vậy ta thấy ở =0, ta không thực hiện được phương pháp LU.Vì vậy tiếp
đó ta cần hoán vị sao cho thành phần 0 không ở hang đầu nữa bằng cách hoán vịcác hàng.
Bước 1: Hoán vị các hàng ở ma trận A bằng cách nhân với ma trận P.
Trang 12PA=3 1 6 2 2 5 0 2 1 , với P=0 0 1 0 1 0 1 0 0
Bước 2: Phân tích ma trận PA=LU như phương pháp phân tích LU
Ta sử dụng phép khử gauss trên ma trân PA thì ta có được ma trận bậc thang U
Trang 13IV Phân tích đánh giá phương pháp LU/PLU và GAUSS
1 Nhắc lại phương pháp GAUSS
Phương pháp Gauss là một thuật toán cơ bản và hiệu quả trong đại số tuyến tính, được sử dụng để giải các hệ phương trình tuyến tính, tìm hạng của một
ma trận, và tính ma trận nghịch đảo của một ma trận vuông khả nghịch Phương pháp này dựa trên việc biến đổi ma trận hệ số của hệ phương trình thành một ma trận bậc thang hoặc ma trận tam giác trên thông qua các phép biến đổi hàng cơ bản.
-Các phép biến đổi hàng cơ bản:
Có ba loại phép biến đổi hàng cơ bản:
1 Đổi chỗ hai hàng: Thay đổi vị trí của hai hàng bất kỳ trong ma trận.
2 Nhân một hàng với một số khác 0: Nhân tất cả các phần tử của một hàng vớimột số khác 0.
3 Cộng một bội của một hàng vào một hàng khác: Cộng một bội của một hàngvào một hàng khác.
3 Giải hệ phương trình từ ma trận bậc thang: Từ ma trận bậc thang, ta viết lại
hệ phương trình tương đương và giải hệ phương trình này để tìm nghiệm.
Trang 14Biến đổi thành ma trận:
2 1 1 1 3 2 1 1 1 542
Các bước biến đổi:
1 Đổi hàng 1 và hàng 2 để số 1 ở vị trí hàng đầu, cột đầu:
Trang 15Ta giải hệ bằng cách: Từ phương trình (3), ta có z = 2/5.Thay z vào (2), tìmđược y = 1 Thay y và z vào phương trình thứ nhất, tìm được x = 1
Vậy nghiệm của hệ là: (x, y, z) = (1, 1,2/5)
2 Phân tích đánh giá phương pháp GAUSS và phương pháp LU/PLU Nhắc lại:
Trong đại số tuyến tính,
• phân tích LU (LU decomposition, LU factorization) là phương pháp phântích ma trận thành tích của một ma trận tam giác dưới và một ma trận tamgiác trên Phép phân tích này thường được dùng trong giải tích số để giải
hệ phương trình tuyến tính hoặc tính định thức của ma trận.
• phép khử Gauss là một thuật toán có thể được sử dụng để tìm nghiệm củamột hệ phương trình tuyến tính, tìm hạng (hay rank ) của một ma trận, đểtính ma trận nghịch đảo của một ma trận vuông khả nghịch.
1 Tiêu chí so sánh: Liệt kê các tiêu chí để đánh giá cả hai phương pháp (ví dụ:hiệu quả tính toán, sử dụng bộ nhớ, và tính phù hợp cho các hệ lớn).
2 Ưu điểm và nhược điểm:
• Phương pháp Gauss: Đơn giản nhưng có thể cần sử dụng kỹ thuật pivot đểduy trì tính ổn định số Không phù hợp cho các phép tính lặp lại với cùngmột ma trận nhưng các vế phải khác nhau.
• Phân tích LU/PLU: Hữu ích cho các ma trận cần phân tích một lần và giảinhiều lần với các vế phải khác nhau Thường hiệu quả hơn cho các hệ lớn.
3 Các tình huống áp dụng:
➢ Phương pháp khử Gauss thích hợp cho các hệ nhỏ hoặc giải một lần.
➢ Phân tích LU/PLU thích hợp cho các hệ cần giải nhiều lần với các vế phảithay đổi.
Các ví dụ:
Giải ma trận bằng phương pháp phân tích LU/PLU
Cho ma trận A=1 2 1 2 5 3 3 7 1
Trang 16Đưa về ma trận tam giác trên U:
Giải 1 ma trận với phương pháp Gauss
V PHÂN TÍCH LU/PLU TRONG PHẦN MỀM MATLAB
1 Tổng quan về MATLAB
- MATLAB (viết tắt của Matrix Laboratory) là một ngôn ngữ lập trình bậc cao bốnthế hệ, môi trường để tính toán số học, trực quan và lập trình Được phát triển bởiMathWorks
h 2 → h 2 -2h 1 h 3 → h 3 -3h 1
h 3 - h 2
h 3 → h 3 +h 2 h 3 → h 3 +3h 1 h 2 → h 2 +2h 1
Trang 17- Nó cho phép thao tác với ma trận, vẽ biểu đồ với hàm và số liệu, hiện thực thuậttoán, tạo ra giao diện người dùng, bao gồm C, C++, Java và Fortan ; phân tích dữliệu, phát triển thuật toán, tạo các kiểu mẫu và ứng dụng.
- Nó có rất nhiều lệnh và hàm toán học nhằm hỗ trợ đắc lực cho bạn trong việc tínhtoán, vẽ các hình vẽ, biểu đồ thông dụng và thực thi các phương pháp tính toán
2 Chương trình code MATLAB
2.1.Các lệnh được dùng trong đoạn code
2.2.Đoạn code hoàn chỉnh
ban dau
nguoi dung nhap lai
size [m, n] = size(A) Lấy kích thước của ma trận Amxn
while while điều kiện
câu lệnhend
Tạo vòng lặp thực hiện cho đến khiđiều kiện trả về sai
eye A = eye(n) Tạo ma trận đơn vị A có kích thước
nxnfor for i = m : n
câu lệnhend
Tạo vòng lặp với (n-m+1) vòng lặp
break break Thoát khỏi vòng lặp
if if điều kiện
câu lệnhend
Nếu điều kiện trả về đúng thì thựchiện câu lệnh
continue continue Chuyển đến vòng lặp tiếp theo
Trang 188 U = A; %Sao chep ma tran A cho ma tran U
tren duong cheo
cua cac hang duoi
do voi hang hien tai
Trang 19Nhập [0 1 2; 3 4 5; 6 7 8] vào Command Window ta được ma trận A nhưsau:
- Quá trình phân tích A thành hai ma trận LU:
+ Đầu tiên ta tạo vòng lặp để duyệt qua i hàng, trong ví dụ này vòng lặp sẽlặp
3 lần:
Trang 21continue ;
end
+ Ta tiến hành đưa U về dạng ma trận bật thang và tìm ma trận L:
L(j,i) = U(j,i) / ptcheo;
U(j,:) = U(j,:) - L(j,i) * U(i,:);
end
Trong ví dụ này vòng lặp for sẽ lặp 2 lần
Ở lần lặp thứ nhất ta có j = 2, i = 1, từng biến lần lượt mang giá trị là:L(2,1) = U(2,1) : ptcheo
Trang 22Sau khi j = 3 tức là vòng lặp không tiếp tục lặp nữa, chương trình sẽ tiếnhành lặp vòng lặp lớn hơn để tăng giá trị i, ta tiến hành thực hiện cácbước tương tự để tìm ma trận L và U
- Ta thu được kết quả cuối cùng là:
Ma trận L là:
L =1 0 0 0 1 0 2 1 1
Ma trận U là:
U =3 4 5 0 1 2 0 0 0
Kết quả được in trong phần mềm MATLAB là:
VI Ứng dụng phương pháp LU vào thực tế
• Ứng dụng phân tích A = LU vào giải một hệ phương trình.
Cho phương trình Ax = Lux = b ta muốn giải phương trình này với A và b chotrước Khi đó nghiệm của phương trình được tính qua 2 bước:
• Bước 1: Giải phương trình Ly = b để tìm y
• Bước 2: Giải phương trình Ux = y để tìm x
Ví dụ:
Ở một lớp Đại số tuyến tính tại trường Đại học Bách khoa – ĐHQG TP.HCM,top 22 bạn có điểm kiểm tra cao nhất bao gồm các điểm 8, 9, 10 Biết rằng tổng
Trang 23số điểm của 22 bạn là 198 điểm và tổng số bạn đạt điểm 9 và 10 nhiều hơn số bạn đạt điểm 8 là 4 bạn Hỏi có bao nhiêu bạn đạt điểm 8, bao nhiêu bạn đạtđiểm 9 và bao nhiêu bạn đạt điểm 10?
Trang 24• Tính định thức
Các ma trận L và U có thể được dùng để tính định thức của ma trận rất hiệu quả
vì det( A) = det( L) det(U ) và định thức của các ma trận tam giác đơn giản là tíchcác phần tử trên đường chéo của nó Đặc biệt, nếu L là ma trận tam giác đơn vịthì:
det(A)=det(L)det(U)=1×det(U)=
Tương tự với phân tích LUP Định thức của ma trận hoán vị P là (−1)S , với S là
số lượng phép hoán đổi dòng trong phép phân tích.∏ =
Trang 26Với các ưu điểm:
- giúp ta tiết kiệm thời gian,giúp ta giảm số phép tính khi giải nhiều hệ phương trình
- khi hoạt động tính toán trên các phần mềm toán học giúp ta tiết kiệm bộnhớ do chỉ cần lưu trữ các phần tử khác không trong 2 ma trận tam giáctrên dưới
- đơn giản hóa quá trình tính toán thủ công
Mặc dù vậy vẫn có một số nhược điểm sau:
- Một số bài toán yêu cầu chuyển vị ma trận, điều này có thể phức tạp hơnvới một số ma trận không khả nghịch,…
- Dễ gặp sai số khi làm việc với các số rất nhỏ hoặc rất lớn
➔Tóm lại, phân tích LU là một phương pháp mạnh và tiện lợi, nhưng khi
áp dụng cần cẩn trọng với sai số và các trường hợp đặc biệt của ma trận