Professional Documents
Culture Documents
NGUYỄN TÂN ÂN
NGUYỄN THỊ THU THỦY
HÀ NỘI - 2010
NCT-FIT-HNUE Computional methods and Optimization Problems
MỤC LỤC
MỞ ĐẦU......................................................................................................................................... 5
Chương 1 TÍNH GẦN ĐÚNG VÀ SAI SỐ................................................................................... 8
1. Số gần đúng và sai số của nó .................................................................................................. 8
1.1. Số gần đúng và sai số ....................................................................................................... 8
1.2. Chữ số có nghĩa và chữ số đáng tin.................................................................................. 9
1.3. Cách viết số gần đúng .................................................................................................... 10
1.4. Sai số làm tròn................................................................................................................ 10
2. Sự lan truyền sai số ............................................................................................................... 11
2.1. Mở đầu ........................................................................................................................... 11
2.2. Sai số của tổng................................................................................................................ 11
2.3. Sai số của tích................................................................................................................. 12
2.4. Sai số của thương ........................................................................................................... 13
2.5. Sai số của hàm bất kỳ..................................................................................................... 14
3. Các loại sai số ....................................................................................................................... 14
3.1. Các loại sai số mắc phải khi giải một bài toán thực tế ................................................... 14
3.2. Các loại đánh giá sai số phương pháp........................................................................... 15
BÀI TẬP ................................................................................................................................... 15
Chương 2. TÍNH GIÁ TRỊ VÀ XẤP XỈ HÀM SỐ ...................................................................... 16
1. Tính giá trị hàm số ................................................................................................................ 16
1.1. Thuật toán Hoocner tính giá trị đa thức ......................................................................... 16
1.2. Tính hàm nhờ chuỗi lũy thừa ......................................................................................... 17
2. Bài toán nội suy hàm số ........................................................................................................ 18
2.1. Đa thức nội suy Lagrange trên mốc không đều ............................................................. 18
2.2. Đa thức nội suy Lagrange với mốc cách đều ................................................................. 22
2.3. Đa thức nội suy Newton trên mốc không cách đều........................................................ 23
2.4. Đa thức nội suy Newton trên mốc cách đều................................................................... 27
2.5. Nội suy tổng quát (nội suy Hermit)................................................................................ 29
3. Xấp xỉ bình phương cực tiểu................................................................................................. 30
3.1. Phương pháp chung........................................................................................................ 30
3.2. Một số dạng hàm cụ thể. ................................................................................................ 30
BÀI TẬP ................................................................................................................................... 33
CHƯƠNG 3 GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH PHI TUYẾN............................................ 34
1. Nghiệm và khoảng phân ly nghiệm ...................................................................................... 34
2. Phương pháp chia đôi ........................................................................................................... 35
2.1. Mô tả phương pháp ........................................................................................................ 35
2.2. Thuật toán tìm nghiệm xấp xỉ bằng phương pháp chia đôi............................................ 36
3. Phương pháp lặp đơn ............................................................................................................ 37
3.1. Mô tả phương pháp ........................................................................................................ 37
3.2. Cách chọn ϕ(x) thỏa điều kiện hội tụ của phương pháp lặp đơn ................................... 39
2
NCT-FIT-HNUE Computional methods and Optimization Problems
3.3. Thuật toán tìm nghiệm xấp xỉ bằng phương pháp lặp đơn............................................. 40
4. Phương pháp tiếp tuyến (Newton) ........................................................................................ 40
4.1. Mô tả phương pháp ........................................................................................................ 40
4.2. Sự hội tụ của phương pháp............................................................................................. 41
4.3. Thuật toán tìm nghiệm xấp xỉ bằng phương pháp Newton ............................................ 42
5. Phương pháp cát tuyến.......................................................................................................... 43
5.1. Mô tả phương pháp ........................................................................................................ 43
5.2. Thuật toán tìm nghiệm xấp xỉ bằng phương pháp Cát tuyến ......................................... 43
6. Phương pháp dây cung.......................................................................................................... 44
6.1. Mô tả phương pháp ........................................................................................................ 44
6.2. Sự hội tụ của phương pháp............................................................................................. 44
BÀI TẬP ................................................................................................................................... 44
Chương 4 PHƯƠNG PHÁP SỐ TRONG ĐẠI SỐ TUYẾN TÍNH............................................. 46
1. Đại số ma trận ....................................................................................................................... 46
1.1. Vectơ cột và vectơ hàng ................................................................................................. 46
1.2. Ma trận ........................................................................................................................... 47
2. Hệ phương trình đại số tuyến tính ........................................................................................ 50
2.1. Giới thiệu........................................................................................................................ 50
2.2. Giới thiệu phương pháp Cramer..................................................................................... 51
2.3. Phương pháp khử Gauss................................................................................................. 52
2.4. Phương pháp Gauss-Seidel ............................................................................................ 55
2.5. Phương pháp giảm dư .................................................................................................... 59
2.6. Vấn đề ổn định của nghiệm của hệ phương trình........................................................... 62
3. Tính gần đúng giá trị riêng và véc tơ riêng của ma trận ....................................................... 63
3.1. Giới thiệu........................................................................................................................ 63
3.2. Ma trận đồng dạng.......................................................................................................... 64
3.3. Tìm giá trị riêng bằng phương pháp Đa-nhi-lép-ski ...................................................... 64
3.4. Tìm vectơ riêng bằng phương pháp Đan-nhi-lep-ski ..................................................... 67
BÀI TẬP ................................................................................................................................... 69
Chương 5 TÍNH GẦN ĐÚNG ĐẠO HÀM VÀ TÍCH PHÂN .................................................... 71
1. Tính gần đúng đạo hàm......................................................................................................... 71
1.1. Đạo hàm cấp 1................................................................................................................ 71
1.2. Đạo hàm cấp hai............................................................................................................. 71
2. Tính gần đúng tích phân ....................................................................................................... 72
2.1. Giới thiệu bài toán.......................................................................................................... 72
2.2. Công thức hình chữ nhật trung tâm................................................................................ 72
2.3. Công thức hình thang ..................................................................................................... 74
2.4. Công thức Simpson (hay công thức Parabol)................................................................. 76
2.5. Các thuật toán “hcn, ht, sim” tính gần đúng tích phân xác định .................................... 78
Chương 6 BÀI TOÁN QUI HOẠCH TUYẾN TÍNH ................................................................. 79
1. Giới thiệu bài toán tối ưu tổng quát ...................................................................................... 79
1.1. Ví dụ mở đầu.................................................................................................................. 79
1.2. Mô hình bài toán tối ưu tổng quát .................................................................................. 79
3
NCT-FIT-HNUE Computional methods and Optimization Problems
1.3. Dạng chuẩn tắc và dạng chính tắc.................................................................................. 80
2. Đặc điểm của tập các phương án của bài toán QHTT .......................................................... 81
2.1. Tập lồi và đa diện lồi...................................................................................................... 81
2.2. Đặc điểm của tập các phương án của bài toán QHTT.................................................... 83
3. Thuật toán đơn hình giải bài toán QHTT.............................................................................. 84
3.1. Đường lối chung của thuật toán ..................................................................................... 84
3.2. Các định lý cơ bản của thuật toán đơn hình ................................................................... 85
3.4. Thuật toán đơn hình ....................................................................................................... 89
4. Tìm phương án cực biên ban đầu.......................................................................................... 94
4.1. Nhận xét ......................................................................................................................... 94
4.2. Định nghĩa ràng buộc chuẩn........................................................................................... 95
4.3. Phương pháp phạt hay phương pháp bài toán M............................................................ 96
BÀI TẬP ................................................................................................................................. 100
4
NCT-FIT-HNUE Computional methods and Optimization Problems
MỞ ĐẦU
1. Giới thiệu môn học Phương pháp tính
Có các tên gọi sau: Phương pháp tính (Computional methods), phương pháp số (Numerical
methods), Giải tích số (Numerical analysis), rộng hơn nữa là Toán học tính toán (Computional
mathematics, Numerical mathematics) (theo Bách khoa toàn thư về khoa học và kỹ thuật, NXB
Mc. Graw Hill 1992).
Là một khoa học nghiên cứu cách giải gần đúng, mà chủ yếu giải bằng số (gọi là giải số) các
phương trình, các bài toán xấp xỉ hàm số và các bài toán tối ưu hóa. Một cách ngắn gọn là giải
các bài toán bằng số trên máy tính.
2. Phân biệt toán tính và toán lí thuyết
Toán lí thuyết quan tâm đến các vấn đề định tính của bài toán: tồn tại, duy nhất, tính chất nghiệm
của các bài toán.
Toán tính quan tâm đến xây dựng phương pháp, thuật toán để để tìm nghiệm bài toán trên máy
tính.
Thuật toán được xây dựng phải thỏa mãn yêu cầu về tính khả thi và tính ổn định.
Một thuật toán là khả thi nếu nó thực hiện được trên máy tính. Một thuật toán gọi là ổn định nếu
sai số tính toán (do máy tính làm tròn số) không bị khuếch đại trong quá trình tính.
Ví dụ 1 (tính ổn định). Giả sử cần tính tích phân
1
I n = ∫ x n e x−1dx (n ≥ 1) .
0
Tích phân từng phần: đặt u=xn thì du = nxn-1dx; đặt dv=ex-1dx thì v = ex-1 ta được
1
I n = x n e x −1 10 − n ∫ x n−1e x −1dx = 1 − nI n−1 .
0
Ngoài ra ta có
1
1
I1 = ∫ xe x−1dx = e x−1 ( x − 1)
1
0
= ≈ 0.3679.
0
e
Như vậy, để tính I n ta thu được công thức truy hồi tính được In về mặt lý thuyết:
I n = 1 − nI n −1 , n ≥ 2,
I 1 = 0.3679.
Về mặt thực tế tính trên máy tính không cho kết quả mong muốn khi n lớn. Cụ thể là tính trên
máy tính với n=25 ta được bảng kết quả sau (liệt kê theo từng hàng)
0.3679 0.2642 0.2073 0.1709 0.1455
0.1268 0.1124 0.1009 0.0916 0.0839
5
NCT-FIT-HNUE Computional methods and Optimization Problems
0.0774 0.0718 0.0669 0.0627 0.0590
0.0555 0.0572 -0.0295 1.5596 -30.1924
635.0403 -13969.8864 321308.3881 -7711400.3133 192785008.8325
Kết quả giảm dần từ 0.3679 (khi n=1) đến 0.0555 (khi n=16)
Kết quả sau đó kết quả thay đổi thất thường và giá trị tuyệt đối tăng rất nhanh.
Điều này hoàn toàn không phù hợp với lý thuyết vì theo lý thuyết thì I n → 0 khi n → ∞ do đó
1
1
0 ≤ I n ≤ ∫ x n dx = .
0
n +1
Hiện tượng kết quả tính toán I n nêu trên là sự không ổn định của thuật toán: sai số ban đầu khi
1
tính I 1 = ≈ 0.3679 đã bị khuyếch đại trong quá trình tính.
e
1 ~
Nguyên nhân: thay vì I1 = ta thu được I 1 = I 1 + δ , trong đó δ là sai số. Giả sử các tính toán
e
tiếp theo không mắc phải sai số. Với n = 2 ta được
~ ~
I 2 = 1 − 2 I 1 = 1 − 2( I 1 + δ ) = (1 − 2 I 1 ) − 2δ = I 2 − 2δ .
~ ~
Thu được I 2 với sai số | I 2 − I 2 |= 2δ . Tương tự, ở bước thứ n thay cho giá trị đúng I n ta thu
~ ~
được giá trị gần đúng I n với sai số | I n − I n |= n!δ . Do đó, dù δ có bé thì khi n đủ lớn, sai số vẫn
đủ lớn và ta không thể nhận được giá trị chấp nhận được là gần đúng cho I n .
Giả sử n = 20. Khi đó Q ≈ 9.7073 *10 20 . Nếu tốc độ của máy tính là 100 triệu phép tính/giây thì
thời gian để thực hiện khối lượng tính toán trên là 2.6965 *10 9 giờ = 3.0782 *10 5 năm. Một thời
gian lớn vô cùng! Và như vậy, thuật toán nêu trên là hoàn toàn không khả thi dù máy tính có
tăng tốc độ lên gấp hàng nghìn, hàng vạn lần.
6
NCT-FIT-HNUE Computional methods and Optimization Problems
Ở trên ta mới chỉ xét việc giải một hệ cỡ 20, mà thực tế khoa học và công nghệ đòi hỏi phải giải
các hệ phương trình đại số tuyến tính cỡ hàng vạn, hàng triệu hoặc hơn thế nữa. Vì thế, cần phải
nghiên cứu đề xuất các phương pháp hiệu quả để có thể giải được các hệ thống phương trình cỡ
lớn. Đó là một trong các nhiệm vụ của ngành Phương pháp tính.
Chương 1 gồm các nội dung sau:
Các khái niệm cơ bản: số xấp xỉ (hay số gần đúng), sai số tuyệt đối và sai số tương đối, chữ số có
nghĩa và chữ số đáng tin, cách viết số gần đúng, sai số quy tròn và quy tắc làm tròn để số còn lại
gồm các số đáng tin;
Sự lan truyền sai số đầu vào dẫn đến sai số đầu ra x Æ f(x), từ đó tính được sai số của tổng, hiệu,
tích, thương.
Các loại sai số: giới thiệu các nguyên nhân dẫn đến sai số: sai số khi xây dựng mô hình hóa các
đối tượng, sai số về phương pháp thực hiện, sai số do tính toán. Và, cách đánh giá tiên nghiệm,
hậu nghiệm đối với sai số.
7
NCT-FIT-HNUE Computional methods and Optimization Problems
Thí dụ: Đối với số A = 2 thì a1 = 1, 41 là xấp xỉ thiếu, còn a2 = 1, 42 là xấp xỉ thừa vì
2 = 1, 4142135623... ; đối với số π = 3,1415926535... thì 3,14 là xấp xỉ thiếu, còn 3,15 là xấp xỉ
thừa.
Định nghĩa 1-1.1 Số ∆ =| A − a | được gọi là sai số tuyệt đối của số gần đúng a .
Thông thường số đúng A không biết nên ta cũng không biết chính xác sai số tuyệt đối của số
gần đúng a , mà chỉ có thể đánh giá nó. Vì thế ta có thể xem đánh giá tốt nhất của ∆ là sai số
tuyệt đối giới hạn của a , đó là số ∆ a bé nhất có thể biết được, thỏa mãn điều kiện
A −α ≤ ∆a (1-1.1)
Để đơn giản người ta thường viết A = a ± ∆ a để ám chỉ rằng ∆ a là sai số tuyệt đối giới hạn của
a.
Ví dụ 1-1.1. Nếu coi a = 3,14 là xấp xỉ của π thì sai số tuyệt đối là ∆ a ≤ 0, 002 .
Sai số tuyệt đối không phản ánh đầy đủ mức độ chính xác của phép đo hoặc tính toán. Chẳng
hạn, đo chiều dài của hai thanh sắt bằng cùng một thước đo ta nhận được các kết quả sau:
l1 = 115,6cm ± 0,1cm
l2 = 7,5cm ± 0,1cm
Tuy sai số tuyệt đối của hai phép đo trên là như nhau (= 0,1 cm) nhưng rõ ràng là phép đo thứ
nhất chính xác hơn. Để thể hiện điều đó ta đưa vào khái niệm sau.
Định nghĩa 2-1.1. Sai số tương đối của số gần đúng a , ký hiệu bởi δ , là
∆ A−a
δ= = (3-1.1)
A A
8
NCT-FIT-HNUE Computional methods and Optimization Problems
∆a
δa = (4-1.1)
a
Người ta thường tính sai số tương đối bằng phần trăm. Vì thế
∆a
δa = × 100% .
|a|
Trở lại phép đo chiều dài của các thanh sắt ta thấy rằng sai số tương đối của l1 là
0,1 0,1
δ1 = × 100% = 0, 09% , của l2 là δ 2 = × 100% = 1,33% . Rõ ràng là δ1 nhỏ hơn rất nhiều
115, 6 7,5
so với δ 2 và phép đo thứ nhất chính xác hơn nhiều so với phép đo thứ hai.
tức là
a = ± (α m .10 m + α m−1 .10 m−1 + ... + α1 .10 + α 0 .10 0 + α −1 .10 −1 + ... + α −n .10 − n + ...)
(1-1.2)
= ± ∑ α s .10 s
s
Định nghĩa 2-1.2. Gọi ∆ a là sai số tuyệt đối của số a , chữ số hàng thứ s của số a được gọi là
chữ số đáng tin (hay chữ số đúng) nếu sai số tuyệt đối của số a không vượt quá một nửa đơn vị
1
của hàng thứ s (tức là ∆ a ≤ .10 s ), và gọi là chữ số nghi ngờ nếu sai số tuyệt đối của số a
2
1
không vượt quá một nửa đơn của hàng thứ s (tức là ∆ a > .10 s ), trong đó ∆ a là sai số tuyệt đối
2
của số a.
Từ định nghĩa trên suy ra rằng nếu αs là chữ số đáng tin thì mọi chữ số có nghĩa bên trái nó đều
là đáng tin, và nếu αs là đáng ngờ thì mọi chữ số bên phải nó đều là đáng ngờ. Việc đánh giá
các chữ số đáng tin và đáng ngờ của một số gấn đúng a không phụ thuộc vào bản thân các chữ số
đó mà phụ thuộc vào sai số tuyệt đối của a và vị trí của chúng.
9
NCT-FIT-HNUE Computional methods and Optimization Problems
Ví dụ 2-1.2. Số gần đúng a = 3.7284 với ∆ a = 0.0047 có 3 chữ số đáng tin là 3, 7 và 2, còn các
chữ số 8 và 4 là đáng ngờ.
Cách này thường dùng để viết các kết quả đo đạc, thực nghiệm, trong đó ∆ a là sai số của thiết
bị đo.
Ví dụ 1-1.3. 150 cm ± 0.1 cm; 65 kg ± 0.1 kg
Cách 2: Viết theo quy ước: mọi chữ số có nghĩa đều đáng tin, có nghĩa là sai số tuyệt đối ∆a
không lớn hơn một nửa đơn vị ở hàng cuối cùng.
1
Ví dụ 2-1.3. Theo cách này ta viết a = 23.54 nếu ∆ a ≤ × 10−2 = 0.005 .
2
Dưới đây là quy tắc làm tròn số nhằm bảo đảm cho sai số làm tròn không vượt quá nửa đơn vị
của chữ số cuối cùng được giữ lại:
• Nếu bỏ đi nhiều chữ số khác 0 và chữ số bỏ đi đầu tiên ≥ 5 thì thêm vào chữ số giữ lại
cuối cùng một đơn vị, còn nếu chữ số bỏ đi đầu tiên < 5 thì để nguyên chữ số giữ lại cuối
cùng.
• Nếu chỉ bỏ đi một chữ số 5 thì chữ số được giữ lại cuối cùng nếu là chữ số lẻ thì tăng
thêm 1, còn nếu là chẵn thì giữ nguyên.
Ví dụ 1-1.4. Đối với số a =3.14151926535 ta làm tròn thành 3.141519, 3.14152, 3.1415, 3.142,
3.14 nếu cần giữ lại 6, 5, 4, 3 hoặc 2 chữ số sau dấu chấm thập phân. Sai số làm tròn tương ứng
1 1 1 1 1
không vượt quá × 10-6, × 10-5, × 10-4, × 10-3 và × 10-2.
2 2 2 2 2
1
Ví dụ 2-1.4. Số 12.25 ta làm tròn thành 12.2 với sai số là 0.05 = × 10-1.
2
Bây giờ giả sử a là xấp xỉ của A với sai số tuyệt đối là ∆ a . Giả sử ta làm tròn a thành a' với
sai số làm tròn là θ a ' , tức là | a' - a| ≤ θ a ' . Kho đó sai số tuyệt đối của số a’ là
Như vậy việc quy tròn thường làm tăng sai số tuyệt đối. Điều này dẫn đến kết cục là sau khi làm
tròn một số chữ số đáng tin trở nên đáng ngờ.
10
NCT-FIT-HNUE Computional methods and Optimization Problems
Ví dụ 3-1.4. Cho a = 0.35 với ∆ a =0.003. Do đó các chữ số 3 và 5 là đáng tin. Sau khi làm tròn
1
thành a’ = 0.4 ta có ∆ a ' = ∆ a + θ a ' = 0.003 + 0.05 = 0.053 > × 10-1. Vì thế chữ số 4 trong a’ là
2
đáng ngờ. Trong trường hợp này không nên quy tròn số a .
2.1. Mở đầu
Trên đây ta đã định nghĩa các loại sai số của một số gần đúng. Trong thực tế tính toán các đại
lượng gần đúng thường xuất hiện trong một biểu thức phức tạp. Thí dụ thể tích của hình cầu
được tính bằng V = (1/6)πd3, trong đó ta chỉ biết xấp xỉ của số π và đường kính d. Vấn đề đặt
ra là biết sai số của π và d, liệu ta có thể tính được sai số của V không. Một cách tổng quát,
vấn đề đặt ra là sai số của các dữ liệu đầu vào lan truyền và dẫn đến sai số của kết quả tính toán
như thế nào?
Để giải quyết vấn đề này xét hàm số u của 2 biến số x và y:
u = f(x,y)
Giả sử x là xấp xỉ của giá trị đúng X, y là xấp xỉ của giá trị đúng Y và ta coi u là xấp xỉ của giá
trị đúng u = f(X,Y). Biết sai số về x và y, hãy tính sai số của u.
Ký hiệu ∆x = x - X là số gia của x, còn dx là vi phân của biến x.
Theo định nghĩa về sai số tuyệt đối, ta có | ∆x | ≤ ∆ x .
Theo công thức vi phân của hàm nhiều biến ta có:
∂u ∂u
du = dx + dy
∂x ∂y
Từ đây ta có
∂u ∂u
∆u ≈ ∆x + ∆y
∂x ∂y
Suy ra
∂u ∂u
∆ u =| | ∆x + | | ∆y (1-2.1)
∂x ∂y
Chú ý: Công thức (1-2.1) là công thức quan trọng để tính sai số của hàm hai biến u = f(x,y) bất
kỳ dựa vào đạo hàm riêng của từng biến. Công thức (1-2.1) được sử dụng trong việc chứng minh
các công thức tính sai số của tổng, hiệu, tích thương biểu diễn hàm hai biến.
Ta có
11
NCT-FIT-HNUE Computional methods and Optimization Problems
∂u ∂u
= 1, = ±1 .
∂x ∂y
Như vậy, sai số tuyệt đối của một tổng đại số bằng tổng các sai số tuyệt đối của các số hạng.
Ví dụ 1-2.2. Giả sử x = 3.6 và y = 6.4 là hai số đã được làm tròn. Tính tổng của chúng và xác
định sai số của tổng thu được.
Giải. Vì x và y đã được làm tròn đến một chữ số sau dấu chấm thập phân nên sai số tuyệt đối của
chúng là ∆ x = ∆ y = 0.05. Do đó u = x + y =3.6 + 6.4 =10.0 với sai số tuyệt đối là ∆ u = ∆ x +
∆ y = 0.05 + 0.05 = 0.1, tức là u = 10 ± 0.1.
Chú ý: Xét trường hợp u = x - y và x, y cùng dấu. Lúc đó ta có
∆ u (∆x + ∆y )
δu = =
u x− y
Ta thấy rằng nếu | x -y | rất bé thì sai số tương đối rất lớn.
Ví dụ 2-2.2. Giả sử x = 15.29 và y = 15.14 là hai số đã được làm tròn. Xác định sai số tương đối
của x, y và của hiệu hai số trên.
Giải. Ta có hiệu u = x - y = 15.29 -15.14 = 0.15. Do x và y đã được làm tròn đến 2 chữ số sau
dấu chấm thập phân nên sai số tuyệt đối của chúng là ∆ x = ∆ y = 0.005. Vì thế sai số tuyệt đối
của hiệu là ∆ u = ∆ x + ∆ y = 0.01. Do đó sai số tương đối của hiệu là δu = ∆ u/ |u| = 0.01/ 0.15 =
∆ 0.005
0.066 trong khi sai số tương đối của x và y tương ứng là δ x = x = = 0.000327 ,
x 15.29
∆y 0.005
δy = = = 0.000330 . Rõ ràng là sai số tương đối của hiệu lớn gấp 200 lần sai số tương
y 15.14
đối của từng số x và y.
Trong tính toán người ta cố gắng tránh việc trừ hai số gần nhau bằng cách biến đổi biểu thức của
hiệu (trong những trường hợp có thể được).
Từ (1-1.2) suy ra
12
NCT-FIT-HNUE Computional methods and Optimization Problems
∆u = y ∆ x + x ∆ y
Do đó
∆ u ∆x ∆y
δu = = + = δx +δy
u x y
Vậy
δu = δ x + δ y (1-2.3)
∂u 1 ∂u x
= , = − 2
∂x y ∂y y
Từ (1.6) suy ra
1 x
∆u = ∆x + 2 ∆y
y y
∆u y ⎛1 x ⎞y 1 1
Do đó = ∆ u = ⎜⎜ ∆ x + 2 ∆ y ⎟⎟ = ∆ x + ∆ y .
|u| x ⎝ y y ⎠x x y
Suy ra:
δx/ y = δx + δ y (1-2.4)
13
NCT-FIT-HNUE Computional methods and Optimization Problems
2.5. Sai số của hàm bất kỳ
Cho hàm u = f ( x1 , x 2 ,..., x n ) . Theo công thức vi phân của hàm nhiều biến ta có:
∂u ∂u ∂u
du = dx1 + dx2 + ... + dxn
∂x1 ∂x 2 ∂x n
Từ đây ta có
∂u ∂u ∂u
∆u ≈ ∆x1 + ∆x2 + ... + ∆xn
∂x1 ∂x 2 ∂x n
Suy ra
∂u ∂u ∂u
∆u = ∆ x1 + ∆ x2 + ... + ∆x (1-2.5)
∂x1 ∂x 2 ∂x n n
Ví dụ 1-2.5. Tính sai số tuyệt đối và sai số tương đối của thể tích hình cầu:
V = (1/6)πd3
nếu cho đường kính d = 3.7 ± 0.05 cm và π = 3.14 ± 0.0016.
Giải. Xem π và d là đối số của hàm V, áp dụng (1-2.4) và (1-2.5) ta có
δV = δπ + 3δd (Hệ số 1/6 không ảnh hương đến sai số tương đối)
δπ = 0.0016/3.14 = 0.0005
δd = 0.05/3.7 = 0.0135
Suy ra δV = 0.0005 + 3 * 0.0135 = 0.04
Giá trị gần đúng của thể tích là V = (1/6)πd3 = 26.5 cm3 . Do đó, ta tính được sai số tương đối
của nó là ∆ V = |V|*δV = 26.5*0.04 = 1.06 ≈ 1.1 cm3. Vì thế
V = 26.5 ± 1.1 cm3.
3.1. Các loại sai số mắc phải khi giải một bài toán thực tế
Như đã biết, để nghiên cứu một đối tượng thực tế, chẳng hạn một đối tượng vật lý như dòng chảy
trong sông, hiện tượng dẫn nhiệt trong một thanh vật chất, hay một đối tượng kinh tế-xã hội,...
người ta thường xây dựng mô hình toán học của đối tượng và nghiên cứu đối tượng thông qua
mô hình. Do tính chất phức tạp của đối tượng nên người ta không thể đưa hết tất cả các yếu tố
liên quan vào mô hình, mà buộc phải loại bỏ những yếu tố không quan trọng và ảnh hưởng ít đến
đối tượng. Kết quả là người ta chỉ nhận được mô hình toán học phản ánh gần đúng đối tượng cần
nghiên cứu. Sai số mắc phải trong quá trình này gọi là sai số mô hình.
Khi đã có mô hình toán học, thường là các phương trình vi phân, tích phân hoặc phương trình đại
số,... người ta phải giải nó. Nói chung người ta không nhận được lời giải đúng của một bài toán
mà chỉ có thể nhận được lời giải gần đúng bằng một phương pháp nào đấy, thí dụ phương pháp
lặp giải phương trình phi tuyến, phương pháp hình thang tính tích phân,... . Sai số mắc phải khi
14
NCT-FIT-HNUE Computional methods and Optimization Problems
phải giải một bài toán bằng phương pháp gần đúng được gọi là sai số phương pháp. Đây là loại
sai số mà chúng ta cần quan tâm khi nghiên cứu các phương pháp gần đúng (giải tích hoặc số trị)
vì sai số này phản ánh chất lượng của phương pháp và thông qua nó có thể đánh giá được khối
lượng tính toán cần thiết để có được lời giải với một độ chính xác cho trước.
Sau khi đã có phương pháp hoặc thuật toán giải một bài toán cần phải thực hiện nó trên máy tính
để có được lời giải số. Trong quá trình tính toán bằng số này không thể tránh khỏi việc làm tròn
số. Sai số xảy ra trong công đoạn này được gọi là sai số tính toán.
Một loại sai số nữa có thể mắc phải khi giải một bài toán thực tế là sai số dữ liệu khi các dữ liệu
đầu vào của bài toán nhận được bằng các phép đo đạc hoặc quan sát thực nghiệm hoặc là lời giải
gần đúng của một bài toán khác.
qn
xn − x * ≤ x1 − x0 ,
1− q
q
xn − x * ≤ x n − x n −1
1− q
BÀI TẬP
1. Khi xác định hằng số khí của không khí, nhận được R =29.25. Hãy xác định các giới hạn
của R biết sai số tương đối giới hạn của R là 1%.
2. Đo trọng lượng của 1 dm3 nước ở 00 C nhận được: p = 999.847g ± 0.001g
Hãy xác định sai số tương đối của phép đo trên.
3. Cho số e = 2.718281828459045... Hãy quy tròn số e đến chữ số có nghĩa thứ 13, 12 và
11 và xác định sai số quy tròn tuyệt đối.
4. Lấy a=2.718 thay cho số e. Hãy xác định sai số tương đối.
5. Hãy quy tròn các số dưới đây (xem là đúng) với ba chữ số có nghĩa đáng tin và xác định
sai số tuyệt đối ∆ và sai số tương đối δ của chúng:
a) 2.1514 b) 0.16152
c) 0.01204 d) - 0.00152281
15
NCT-FIT-HNUE Computional methods and Optimization Problems
⎧b0 = a0
⎪
⎨ck = bk −1 x0 ∀k = 1, n (2-1.1)
⎪b = ak + ck
⎩ k
Hệ (2-1.1) cho thấy chỉ cần tính n phép nhân và n phép cộng và các số hạng tham gia tính toán
bé hơn phương pháp tính trực tiếp.
b) Sơ đồ tính bằng tay
Để tính bằng tay, ta biểu diễn (2-1.1) dưới bảng sau
16
NCT-FIT-HNUE Computional methods and Optimization Problems
a0 a1 … an x0
c1 … cn
b0 b1 … bn p(x0)=bn
Ví dụ 1-1.1
Tính f(x) = 2x5 - 3x4 + x3 - 4x2 + 7x + 8 tại x = 2 như sau
2 -3 1 -4 7 8 2
4 2 6 4 22
2 1 3 2 11 30 p(2)=30
Chú ý: Khi phương trình p(x) = 0 có nghiệm x = x0 thì lược đồ Hoocner cho phép tìm ước của
p(x) dưới dạng q(x) = b0xn-1 + b1xn-2 + … + bn-2x + bn-1
f ( n+1) (c) n +1
Rn ( x) = x − x0 hoặc trực tiếp ước lượng từ phần dư của chuỗi.
(n + 1)!
f ( 0 ) ( x0 ) f (1) ( x0 )
và f ( x) = ( x − x0 ) +
0
( x − x 0 )1 = f ( x 0 ) + ( x − x 0 ) f ' ( x 0 )
0! 1!
Thay vào ta có sin 360 = sin (π/ 6 + π/30) = sin (π/6) + (π/30) cos (π/6) + R1
17
NCT-FIT-HNUE Computional methods and Optimization Problems
2
1 π 3 sin c ⎛ π ⎞ −2
= + . + R1 trong đó R1 = ⎜ ⎟ ≤ 10
2 30 2 2 ⎝ 30 ⎠
x2 3
(x + t) 2
f ( x) = ∫ t dt
cos( x ) e + sin( xt )
và cần tính f (x) ∀x ∈ [a, b] . Khi đó người ta tính gần đúng f (x) tại một số điểm rồi xây dựng
một hàm gần đúng với f(x) để tính các giá trị khác.
iii) Ngoài ra, nội suy hàm số còn được sử dụng để xây dựng các công thức tính đạo hàm, tính
tích phân số hoặc tìm gần đúng nghiệm của phương trình.
Bài toán nội suy hàm một biến số được phát biểu như sau: Trên đoạn [a, b] cho tập các điểm
nút a ≤ xo < x 1 <...<x n ≤ b và tại các điểm này cho các giá trị y i = f ( xi ), (i = 0, n) của hàm f (x) .
Cần xây dựng hàm g (x) dễ tính toán và trùng với hàm f (x) tại các điểm nút trên tức là
g ( xi ) = y i , (i = 0, n) . Hàm g(x) được gọi là hàm nội suy. Các điểm nút xi ( i = 0, n ) gọi là các
mốc nội suy.
Một số dạng hàm g (x) thường được dùng để nội suy hàm số là:
- Đa thức đại số
- Hàm hữu tỉ, tức là phân thức đại số
- Đa thức lượng giác
- Hàm ghép trơn (spline), tức là hàm đa thức từng mẩu.
Trong chương này chúng ta chỉ tập trung vào nội suy bởi đa thức đại số - một công cụ nội suy
kinh điển và một phần về nội suy bởi hàm ghép trơn - công cụ nội suy hiện đại. Các dạng nội
suy khác sẽ chỉ được giới thiệu qua. Nếu không nói rõ hơn ta sẽ ngầm định hiểu đa thức là đa
thức đại số.
Đa thức nội suy Lagrange của hàm y = f(x) tại các điểm mốc xi ∈ [a, b] ( i = 0, n) cho bởi công
thức sau:
18
NCT-FIT-HNUE Computional methods and Optimization Problems
n (1-2.1)
Ln ( x) = ∑ f ( xi )l i ( x)
i =1
Ln ( xi ) = f ( xi ), (i = 0, n) (3-2.1)
⎧1, i = j
li ( x j ) =δ ij= ⎨ (4-2.1)
⎩0, i ≠ j
Vì khi i = j, thay x ở tử số bởi xi thì tử số giống mẫu số. Khi i ≠ j thì trên tử số có số hạng dạng
(xj - xj) = 0 (lưu ý rằng tử số chỉ khuyết số hạng xj-xi). Thay (4-2.1) vào (1-2.1) ta thu được (4-
2.1)
Xét hai trường hợp đơn giản của đa thức nội suy Lagrange.
x − x1 x − x0 (5-2.1)
L1 ( x) = f ( x0 ) + f ( x1 )
x0 − x1 x1 − x0
( x − x1 )( x − x2 ) ( x − x0 )( x − x2 ) ( x − x0 )( x − x1 )
L2 ( x) = f ( x0 ) + f ( x1 ) + f ( x2 ) (6-2.1)
( x0 − x1 )( x0 − x2 ) ( x1 − x0 )( x1 − x2 ) ( x2 − x0 )( x2 − x1 )
trong đó y i = f ( xi ), i =0, 1, 2.
Ví dụ 1-2.1. Xây dựng đa thức nội suy cho hàm y = sin πx tại các nút
1 1
x0 = 0, x1 = và x 2 = .
6 2
Giải. Ta có bảng giá trị của hàm
x 0 1/6 1/2
y 0 1/2 1
Áp dụng công thức (6-2.1) ta được
19
NCT-FIT-HNUE Computional methods and Optimization Problems
1 1 1 1
( x − )( x − ) ( x − 0)( x − ) ( x − 0)( x − )
6 1
2 + . 2 + 1. 6 = 7 x − 3x 2 .
L 2 ( x ) = 0.
1 1 2 1 1 1 1 1 1 2
(0 − )(0 − ) ( − 0)( − ) ( − 0)( − )
6 2 6 6 2 2 2 6
Ví dụ 2-2.1. Tìm đa thức nội suy hàm y = 3 x trên đoạn [-1, 1] dựa vào giá trị của hàm tại các
điểm x0 = −1, x1 = 0, x 2 = 1. Sử dụng đa thức này tính gần đúng 3.
Giải. Ta có bảng các giá trị của hàm y = 3 x tại các điểm đã cho:
x -1 0 1
y 1/3 1 3
Theo công thức (6-2.1) ta có đa thức nội suy
1 x( x − 1) ( x + 1)( x − 1) ( x + 1)( x − 0)
L2 ( x ) = . + 1. + 3.
3 − 1.(−1 − 1) 1.(−1) (1 + 1)(1 − 0)
x( x − 1) 3 x( x + 1) 1
= − ( x + 1)( x − 1) + = (2 x 2 + 4 x + 3)
6 2 3
1 1 11
Để tính 3 = 31 / 2 ta xấp xỉ 3 2
≈ L2 ( ) = .
2 6
Định lý 4.2.1 Giả sử hàm số f (x) ∈ C ( n+1) [a, b] , tức là có đạo hàm liên tục đến cấp n+1 trên [a,
b] chứa tất cả các nút nội suy xi (i = 0, n) . Khi đó sai số nội suy Rn ( x) = f ( x) − Ln ( x) có dạng
f ( n +1) (ξ )
Rn ( x ) = ω n +1 ( x), (7-2.1)
(n + 1)!
n
trong đó ξ là một diểm phụ thuộc x và thuộc [a , b] và ω n +1 ( x) = ∏ ( x − xi )
i =0
Hệ quả. Đối với sai số của đa thức nội suy Lagrange cho hàm f(x) tại các mút x, x0 ,K, x n
∈ [a, b] có đánh giá
M n +1
f ( x ) − Ln ( x ) ≤ ω n +1 ( x) , (8-2.1)
(n + 1)!
n
trong đó M n +1 = max f ( n +1) ( x). và ω n +1 ( x) = ∏ ( x − xi )
a ≤ x ≤b i =0
Ví dụ 3-2.1. Cho giá trị của hàm y=sin x tại 3 điểm bởi bảng sau:
20
NCT-FIT-HNUE Computional methods and Optimization Problems
x 0 π π
4 2
y 0 0,707 1
Tính gần đúng sin π nhờ đa thức nội suy và đánh giá sai số.
3
Giải. Đa thức nội suy hàm y=sin x xây dựng theo các điểm đã cho là
π π
x( x −
) ) x( x −
L2 ( x) = 0,707. + 1. 4 . 2
π π π π π π
( − ) ( − )
4 4 2 2 2 4
π π
Ta có sin ≈ L2 ( ) ≈ 0,851.
3 3
Theo công thức (8-2.1)
π π M π
sin − L2 ( ) ≤ 3 ω 3 ( ) .
3 3 3! 3
Dễ tính được
π π π π π π π3
ω3 ( ) = − . − = .
3 3 3 4 3 2 216
π π 1 π3
Do đó sin − L2 ( ) ≤ × = 0,024
3 3 6 216
π
Như vậy, sin =0,851 ± 0,024
3
Chú ý. Công thức đánh giá sai số (4.8) được thiết lập với giả thiết f ( x) ∈ C ( n+1) [a, b]. Nếu điều
kiện trên không thoả mãn, tức là khi hàm f (x) không có đủ độ trơn cần thiết thì ta không thể nói
gì về sai số nội suy cả. Trong trường hợp này cần phải xem xét bài toán cụ thể.
Khi đó đa thức nội suy hàm f (x) tại các điểm x0 = −1, x1 = 0, x 2 = 1 là đa thức
L2 ( x ) = x 2 .
Để đánh giá sai số f ( x) − L2 ( x) ta không thể áp dụng công thức (8-2.1) vì hàm f (x) không có
đạo hàm tại x = 0. Nhưng ta có thể đánh giá được sai số nội suy trên đoạn [-1, 1] như sau
1
max f ( x) − L2 ( x) = max x − x 2 = max x − x 2 =
x ≤1 x ≤1 x ≤1 4
21
NCT-FIT-HNUE Computional methods and Optimization Problems
2.1.2. Thuật toán nội suy Lagrange
Bài toán: Cho bảng các giá trị ( xi , y i ) , (i = 0, n) . Tính giá trị của đa thức nội suy
Lagrange Ln (x) tại điểm x cho trước theo công thức
n n x − xj
y = Ln ( x ) = ∑ y i ∏
i =0 j ≠i xi − x j
j =0
input: x, xi, yi (i = 0, n)
if (j ≠ i)
P = P * (x - xj) / (xi - xj)
2.3. y = y + yi*P
3. return y
x − x0
Đặt t = , khi đó :
h
x − x0 = h.t xi − x0 = h.i
x − x1 = h(t − 1) xi − x1 = h(i − 1)
... ...
x − xi −1 = h(t − (i − 1)) xi − xi −1 = h
x − xi +1 = h(t − (i + 1)) xi − xi +1 = − h
... ...
x − xn = h(t − n) xi − x n = − h ( n − i )
hay
t (t − 1)...(t − n)
li ( x0 + ht ) = (2-2.2)
(t − i )i!(n − i )!(−1) n−1
22
NCT-FIT-HNUE Computional methods and Optimization Problems
Vậy công thức nội suy Lagrange (1-2.1) trong trường hợp mốc cách đều một khoảng h có dạng :
(−1) n−1 f ( xi )
n
Ln ( x0 + ht ) = t (t − 1)...(t − n)∑ (3-2.2)
i = 0 (t − i )i!( n − i )!
hay
Ví dụ 1-2.2. Tìm hàm nội suy cho hàm f(x) thỏa mãn :
xi 0 2 4
f(xi) 5 -2 1
Giải: Áp dụng công thức (4-2.2.2) ta có
t (t − 1)(t − 2) ⎛ 5C 20 − 2C 21 1.C 22 ⎞
L2 (2t ) = ⎜⎜ − + ⎟⎟
2! ⎝ t − 0 t −1 t − 2 ⎠
t (t − 1)(t − 2) ⎛ 5 4 1 ⎞
= ⎜ + + ⎟
2 ⎝ t t −1 t − 2 ⎠
1
= (10t 2 − 24t + 10) = 5t 2 − 12t + 5
2
2.3. Đa thức nội suy Newton trên mốc không cách đều
Đa thức nội suy Lagrange (1-2.1), như ta đã thấy rất đơn giản và dễ tính nếu các nút nội suy đã
được cố định. Nhưng nếu như ta bổ sung thêm nút nội suy thì quá trình tính lại phải thực hiện lại
từ đầu. Đây là nhược điểm rất lớn của đa thức nội suy Lagrange. Để khắc phục nhược điểm này
người ta tính đa thức nội suy theo một cách khác hiệu quả hơn. Đó là công thức nội suy Newton.
Để xây dựng công thức này, ta cần đến khái niệm tỷ sai phân đối với các mốc không đều và khái
niệm sai phân đối với mốc cách đều.
2.3.1. Khái niệm tỷ sai phân
Giả sử f (x) là một hàm số xác định và liên tục trong đoạn [a, b] . Tiếp theo giả sử
a= x0 < x1 < ... < x n =b là tập các điểm nút, tại đó cho trước giá trị của hàm.
Ta định nghĩa:
- Tỷ sai phân bậc 0 của hàm f (x) tại xi là f ( xi ) .
f ( xi ) − f ( x j )
- Tỷ sai phân bậc 1 của hàm f (x) tại xi và x j là f ( xi , x j ) =
xi − x j
f ( xi , x j ) − f ( x j , x k )
f ( xi , x j , x k ) =
xi − x k
- Một cách tổng quát, tỷ sai phân bậc k của f tại x0 , x1 ,..., x k +1 là
23
NCT-FIT-HNUE Computional methods and Optimization Problems
f ( x0 , x1 ,..., xk −1 ) − f ( x1 , x2 ,..., xk )
f ( x0 , x1 ,..., xk ) =
x0 − x k
f ( xi , x j , x k ) = f ( x k , x j , xi ) , ...,
f ( x0 , x1 ,..., x k ) = f ( x k , x k −1 ,..., x0 ).
ii) Nếu Pn (x) là đa thức bậc n thì tỷ sai phân bậc nhất Pn ( x, x0 ) là một đa thức bậc n-1, tỷ sai
phân bậc hai Pn ( x, x 0 , x1 ) là một đa thức bậc n-2, ..., tỷ sai phân bậc n của Pn(x) là đa thức bậc 0,
và tỷ sai phân bậc n + 1 của Pn(x) là đa thức Pn ( x, x 0 , x1 ,..., x n ) = 0. Kết luận này dễ chứng minh
dựa vào định lý Bezout.
2.3.2. Đa thức nội suy Newton trên mốc không cách đều
Từ định nghĩa các tỷ sai phân suy ra
p ( x ) − p ( x0 )
Pn ( x) = Pn ( x 0 ) + ( x − x0 ).Pn ( x, x0 ), vì Px ( x, x0 ) =
x − x0
P ( x, x0 ) − P( x0 , x1 )
Pn ( x, x0 ) = Pn ( x 0 , x1 ) + ( x − x1 ).Pn ( x, x 0 , x1 ) vì P ( x, x0 , x1 ) =
x − x1
Pn ( x, x0 , x1 ) = Pn ( x0 , x1 , x2 ) − ( x − x2 ).Pn ( x, x0 , x1 , x2 )
..........
Pn ( x, x0 ,..., xn−1 ) = Pn ( x0, x1 ,..., xn−1 ) − ( x − xn−1 ).P( x, x0 ,..., xn−1 )
Pn ( x) = Pn ( x 0 ) + ( x − x0 ) Pn ( x 0 , x1 ) + ( x − x0 )( x − x1 ) Pn ( x0 , x1 , x 2 )...
(1-2.3)
+ ( x − x0 )( x − x1 )...( x − x n −1 ) Pn ( x0 , x1 ,..., x n )
Bây giờ, nếu Pn (x) là đa thức nội suy của hàm f (x) tại các nút x0 , x1 ,..., x n tức là
Pn ( xi ) = f ( xi ), (i = 0, n) thì công thức (4.3.1) có thể viết thành
Pn ( x) = f ( x0 ) + ( x − x0 ) f ( x0 , x1 ) + ( x − x 0 )( x − x1 ) f ( x 0 , x1 , x 2 )... (2-2.3)
+ ( x − x0 )( x − x1 )...( x − x n −1 ) f ( x 0 , x1 ,..., x n )
hay
24
NCT-FIT-HNUE Computional methods and Optimization Problems
n (3-2.3)
Pn ( x) = f ( x0 ) + ∑ ( x − x0 )( x − x1 )...( x − xi −1 ) f ( x0 , x1 ,..., xi )
i =1
Đa thức Pn (x) dạng (2-2.3) hay (3-2.3) được gọi là đa thức nội suy Newton (tiến) xuất phát từ
nút x0 . Nó trùng với đa thức nội suy Lagrange (vì đa thức nội suy là duy nhất) nhưng được viết
trong dạng khác.
Nhận xét 1. Việc tính toán đa thức nội suy theo các công thức trên khắc phục được nhược điểm
của cách tính theo công thức Lagrange (1-2.1) vì khi bổ sung các nút nội suy mới chỉ cần tính
thêm một số số hạng mới cộng vào tổng cũ.
Nhận xét 2. Sau khi đã tính được các tỷ sai phân, để tính đa thức nội suy Newton một cách hữu
hiệu người ta thường dùng lược đồ Horner.
P ( x) = f ( x0 ) + ( x − x 0 )[ f ( x0 , x1 ) + ( x − x1 )[ f ( x 0 , x1 , x 2 ) + ( x − x 2 )[ f ( x0 ,..., x3 ) + ...]]]
2.3.3. Đánh giá sai số của nội suy Newton mốc không đều
Từ định nghĩa của các tỷ sai phân viết cho hàm f (x) , tương tự như trong tiểu mục trước, có thể
thu được
f ( x) = f ( x0 ) + ( x − x 0 ) f ( x 0 , x1 ) + ( x − x 0 )( x − x1 ) f ( x 0 , x1 , x 2 )...
+ ( x − x0 )...( x − x n −1 ) f ( x0 , x1 ,..., x n ) + ( x − x 0 )...( x − x n ) f ( x, x0 , x1 ,..., x n )
Từ đây suy ra biểu diễn sai số của đa thức nội suy Newton
f ( x) − Pn ( x) = ω n +1 ( x) f ( x, x 0 , x1 ,..., x n ) , (4-2.3)
trong đó
n
ω n +1 ( x) = ∏ ( x − xi ) (5-2.3)
i =0
25
NCT-FIT-HNUE Computional methods and Optimization Problems
Ví dụ 1-2.3. Cho bảng giá trị của hàm số y = f (x)
x 0 2 3 5 6
f(x) 1 3 2 5 6
1) Xây dựng đa thức nội suy Newton tiến xuất phát từ nút x0 = 0 của hàm số y = f (x) .
2) Sử dụng đa thức nội suy nhận được tính gần đúng f (1.25)
2 3 11
P4 ( x) = 1 + x ⋅ 1 + x( x − 2) ⋅ (− ) + x( x − 2)( x − 3) ⋅ + x( x − 2)( x − 3)( x − 5) ⋅ (− )
3 10 120
11 4 73 3 601 2 413
=− x + x − x + x + 1.
120 60 120 60
2) Khi đó f (1.25) ≈ P4 (1.25) = 3.9312.
2.3.5. Thuật toán nội suy newton trên mốc không đều
Nhìn vào bảng tỷ sai phân và công thức nội suy Newton (3-2.3) dễ thấy rằng việc tính giá trị của
đa thức Newton tại điểm x có thể mô tả bởi đoạn mã sau:
input: x, xi, fi (i = 0, n)
output: y là giá trị của hàm f(x) tại một điểm trong khoảng chứa các mốc nội suy
Algorithm
1. Khởi tạo y = f0; tich = 1;
2. for i = 1 Æ n
2.1. for j = 0 Æ n - i
fj = (fj+1 - fj) / (xj+i - xj)
2.2. tich = tich * (x - xi-1);
26
NCT-FIT-HNUE Computional methods and Optimization Problems
2.3. y = y + tich * f0;
2. return y;
Sai phân cấp cao hơn được định nghĩa qua sai phân cấp thấp hơn như sau
• ∆k f i = ∆ (∆k −1 f i ) ,
Ví dụ 1-2.4.
∆2 f i = ∆(∆f i ) = ∆f i +1 − ∆f i = ( f i + 2 − f i +1 ) − ( f i +1 − f i ) = f i + 2 − 2 f i +1 − f i .
∆i f 0
f ( x 0 , x1 ,..., xi ) = (i = 1, n) . (1-2.4)
i!h i
2.4.2. Đa thức nội suy Newton trên mốc cách đều
Trong công thức của đa thức nội suy Newton (2-2.3) hoặc (3-2.3) ở mục trước biểu diễn tỷ sai
phân qua sai phân theo công thức (1-2.4) và đặt x = x0 + t.h ta thu được
t (t − 1) 2 t (t − 1)...(t − n + 1) n
Pn ( x0 + th) = f 0 + t∆f 0 + ∆ f 0 + ... + ∆ f0
2! n! (2-2.4)
n
t (t − 1)...(t − i + 1) i
= f0 + ∑ ∆ f0
i =1 i!
Đây chính là công thức của đa thức nội suy Newton trên mốc cách đều (thường được dùng để
nội suy hàm số đối với những giá trị của x ở vùng đầu bảng tức là gần x0.)
2.4.3. Đánh giá sai số của nội suy Newton mốc cách đều
Sai số (hay phần dư) của đa thức nội suy này đã chứng minh được có dạng
f ( n +1) (ξ )
f ( x0 + th) − Pn ( x 0 + th) = t (t − 1)...(t − n)h n +1 (3-2.4)
(n + 1)!
27
NCT-FIT-HNUE Computional methods and Optimization Problems
2.4.4. Sơ đồ tính sai phân với mốc cách đều
Để tính các sai phân tiến làm hệ số trong đa thức Newton ta lập bảng các sai phân (thí dụ cho n =
4)
Vì thế f (1 / 2) ≈ P3 (1 / 2) = 0,625 .
2.4.5. Thuật toán nội suy newton trên mốc cách đều
Dưới đây là tính giá trị của hàm cần nội suy tại điểm x thuộc các mốc nội suy. Khác với tính đa
thức Newton trên lưới không đều, ở đây ta chỉ cần một mảng fi (i = 0, n) . Từ bảng sai phân và
công thức nội suy Newton (2-2.4) ta đi đến đoạn mã giả sau
input: x0, x, h, fi (i = 0, n)
28
NCT-FIT-HNUE Computional methods and Optimization Problems
1. Khởi tạo : t = (x - x0)/h;
y = f0; tich = 1;
2. for i =1 Æ n
2.1. for j = 1 Æ n - i
fj = fj+1 - fj
2.2. tich = tich * (t - i + 1)/i;
2.3. y = y + tich * f0;
3. return y;
• ..............................
Giả sử rằng tổng bội của tất cả các nút là k0 + k1 + ... + km = n + 1. Cần xây dựng đa thức H n ( x)
bậc n sao cho
H n( j ) ( xi ) = f n( j ) ( xi ) (i = 0, m, j = 0, k i ) (1-2.5)
Ta sẽ gọi đa thức H n ( x) là đa thức nội suy trên nút bội (hay đa thức Hermit) của hàm f ( x) .
Một cách hình thức, việc tìm đa thức này chính là xác định n + 1 hệ số a0 , a1 ,..., an của biểu diễn
n
H n ( x) = ∑ a k x k = a 0 + a1 x + ... + a n x n (2-2.5)
k =0
Người ta đã chứng minh được rằng hệ phương trình trên có duy nhất một nghiệm tức là đa thức
nội suy Hermit tồn tại và duy nhất. Ngoài ra, sai số của đa thức này cho bởi công thức sau
29
NCT-FIT-HNUE Computional methods and Optimization Problems
f ( n +1) (ξ )
f ( x) − H n ( x) = ( x − x0 ) k0 ( x − x1 ) k1 ...( x − x m ) k m (ξ ∈ [a, b]) (6-2.5)
(n + 1)!
∂S
= 0, i = 0,..., m . (3-3.1)
∂ai
Các điều kiện trên lập thành hệ phương trình để tìm các tham số a0, a1,..., am.
30
NCT-FIT-HNUE Computional methods and Optimization Problems
n 2
⎧ ∂S
⎪⎪ ∂a = 0
⎨ (2-3.2)
⎪ ∂S = 0
⎪⎩ ∂b
⎧n
⎪∑ 2( yi − a − bxi )(−1) = 0
⎪ i =1
⎨n
⎪ 2( y − a − bx )(− x ) = 0
⎪⎩∑
i =1
i i i
⎧ n n
⎪
⎪
na + ( ∑ i ∑ yi
x )b =
i =1 i =1
⎨ n n n
(3-3.2)
⎪( x )a + ( x 2 )b = x y
⎪⎩ ∑
i =1
i ∑ i
i =1
∑ i i
i =1
Đây là một hệ hai phương trình với hai ẩn số a và b. Giải hệ này ta nhận được a và b phải tìm.
( )
n 2
⎧ ∂S
( )
n
∑
2
⎪ ∂a = 2 y i − a − bxi − cxi (−1) = 0
⎪ i =1
⎪ ∂S
( )
n
∑
2
⎨ = 2 y i − a − bxi − cxi (− xi ) = 0
⎪ ∂b i =1
⎪ ∂S
( )
n
∑
2 2
⎪ = 2 y i − a − bxi − cxi (− xi ) =0
⎩ ∂c i =1
Rút gọn ta được
31
NCT-FIT-HNUE Computional methods and Optimization Problems
⎧ n n n
∑ i ∑ i ∑ yi
2
⎪ na + ( x )b + ( x ) c =
⎪ i =1 i =1 i =1
⎪ n n n n
⎨(∑ xi )a + (∑ xi )b + (∑ xi )c = ∑ xi yi
2 3
(5-3.2)
⎪ i =1 i =1 i =1 i =1
⎪ n 2 n n n
⎪∑ i ∑ i ∑ i ∑ xi y i
3 4 2
( x ) a + ( x )b + ( x ) c =
⎩ i =1 i =1 i =1 i =1
Đây là một hệ ba phương trình với ba ẩn số a, b và c. Giải hệ này ta nhận được a, b và c phải
tìm.
∑ Xi
i =1
∑ X i2
i =1
∑ X iYi
i =1
∑Y
i =1
i
32
NCT-FIT-HNUE Computional methods and Optimization Problems
⎧ 5 5
⎪⎪ nA + ( ∑i =1
X i )B = ∑Y i =1
i
⎨ 5 5 5
⎪(∑ X i )A + (∑ X i2 ) B = ∑XY
⎪⎩ i =1 i =1 i =1
i i
⎧5 A + 4.35B = 0.89
⎨
⎩4.35 A + 3.93B = 0.92
Giải hệ trên ta được A = -0.69, B= 1. Do đó a = eA = 1/2, b = B = 1
1 x
Vậy đa thức nội suy là g(x) = e
2
BÀI TẬP
1. Dùng các giá trị dưới đây của x
x 1 2 4
x 1 1.414 2
x 8 9 10 11 12
3
x 2 2.0800 2.1544 2.2240 2.2894
3
Dùng đa thức nội suy Newton trên lưới đều tính 8.5 và đánh giá sai số.
4. Dân số của một quốc gia qua điều tra được cho trong bảng sau
Năm 1960 1970 1980 1990 2000
Dân số (triệu 45 50.5 54 60.5 64
người)
Hãy ước lượng dân số của quốc gia này năm 1975.
5. Tìm đa thức bậc ba nội suy tốt nhất cho hàm :
(i) f ( x) = 2 x trên đoạn [-1, 1]. (ii) f ( x) = sin( x) trên đoạn [0, π /2].
33
NCT-FIT-HNUE Computional methods and Optimization Problems
f ( x) = x 3 − 6 x + 2 = 0 (1)
Ta có f'(x) = 3x2 - 6, f'(x) = 0 Ù x = ± 2 . Lập bảng biến thiên của hàm f(x)
x -∞ − 2 2 +∞
f'(x) + 0 - 0 +
f(x) M > 0 +∞
-∞ m < 0
Ta thấy f(-∞) < 0, M = f (− 2 ) > 0, m = f ( 2) < 0 , f(∞) > 0 và f(x) tăng trong các khoảng (-∞,
− 2 ), ( 2 , +∞) và giảm trong khoảng ( − 2 , 2 ), do đó các khoảng trên là khoảng phân ly
của 3 nghiệm của phương trình (1). Tiếp theo, ta có thể thu hẹp khoảng phân ly của các nghiệm
thành (-3, -2), (0, 1) và (2, 3).
Ví dụ 2-2.1. Xét phương trình
f(x) = 2x - cos x = 0 (2)
34
NCT-FIT-HNUE Computional methods and Optimization Problems
Ta có f’(x) = 2 + sin x > 0 và f(0) = - 1, f(1) = 2 - cos 1 > 0. Do đó (0, 1) là khoảng phân ly của
nghiệm duy nhất của phương trình đã cho.
Phương pháp đồ thị tìm khoảng phân ly của các nghiệm của phương trình f(x) = 0 dựa trên việc
xác định các khoảng chứa các điểm cắt của đồ thị của hàm số y = f(x) với trục hoành hoặc hoành
độ của các điểm cắt nhau của hai đồ thị g(x), h(x) nếu phương trình g(x) = h(x) tương đương với
phương trình đã cho.
Ví dụ 3-1. Lại xét phương trình (2). Đặt g(x) 1.6
y=x
phương trình (2) là (0, π/2).
1
0.8
y=1/2*cos(x)
của phuơng trình là khá nhỏ thì ta có thể coi 0.4
0.2
35
NCT-FIT-HNUE Computional methods and Optimization Problems
b−a b−a
d n = bn − an = n
. Nếu < 2ε là sai số cho trước ta dừng quá trình chia đôi và
2 2n
b − an b −a
lấy xn = n là nghiệm gần đúng. Khi đó xn − x * ≤ <ε .
2 2n
Rõ ràng là dãy số xn tiến dần đến x* khi n Æ ∞ tức là phương pháp chia đôi hội tụ.
Nhận xét. Phương pháp chia đôi sử dụng rất ít thông tin về hàm f(x) (chỉ cần dấu của hàm) nên
dễ lập trình nhưng hội tụ rất chậm.
Ví dụ 1-2.1. Bằng phương pháp chia đôi tìm nghiệm dương của phương trình
4 - ex - 2x2 = 0 với độ chính xác ε = 10-2.
Giải. Dễ thấy rằng (0, 1) là khoảng phân ly của nghiệm dương x*.
Ta có [a0, b0] = [0, 1], x0 = (a0 + b0)/2 = 0,5.
Vì f(a0) = 3, f(x0) = 1,8513 nên ta đặt
a1 = x0 = 1,8513, b1 = b0 = 1; d1 = b1 − a1 = 0,5.
Tiếp tục quá trình chia đôi. Sau 8 bước ta đạt được x6 = 0,8828 với sai số d6 = 0,0078 <
ε = 0.01. Quá trình lặp được thể hiện qua bảng sau đây:
a b x0 f(a) f(b) f(x0) b-a b-a<eps
1 0 1 0.5 3 -0.718 1.8513 1 FALSE
2 0.5 1 0.75 1.8513 -0.718 0.758 0.5 FALSE
3 0.75 1 0.875 0.758 -0.718 0.0699 0.25 FALSE
4 0.875 1 0.9375 0.0699 -0.718 -0.311 0.125 FALSE
5 0.875 0.9375 0.9063 0.0699 -0.311 -0.118 0.0625 FALSE
6 0.875 0.9063 0.8906 0.0699 -0.118 -0.023 0.0313 FALSE
7 0.875 0.8906 0.8828 0.0699 -0.023 0.0236 0.0156 FALSE
8 0.8828 0.8906 0.8867 0.0236 -0.023 0.0003 0.0078 TRUE
9 0.8867 0.8906 0.8887 0.0003 -0.023 -0.011 0.0039 TRUE
2.2. Thuật toán tìm nghiệm xấp xỉ bằng phương pháp chia đôi
Input: hàm phi tuyến f(x), khoảng phân ly nghiệm [a, b], sai số được phép ε
Ouput: nghiệm gần đúng x0 của phương trình f(x) = 0
Algorithm:
Bước 1: Gán c = (a + b)/2;
36
NCT-FIT-HNUE Computional methods and Optimization Problems
Nếu không thì gán a := c
Bước 3: In ra nghiệm x0 = c;
Khi đó
i) Phương trình (1-3.1) có nghiệm duy nhất x* ∈ (a, b)
ii) Quá trình lặp (2-3.1) hội tụ và có ước lượng
q
xn − x * ≤ xn − xn −1 (5-3.1)
1−1
qn
xn − x * ≤ x1 − x0 (6-3.1)
1−1
Trong quá trình chứng minh định lý, ta còn rút ra được:
xn − x * ≤ q xn − x * (7-3.1)
Để đặc trưng cho tốc độ hội tụ của các phương pháp lặp dưới đây chúng ta đưa ra khái niệm về
cấp hội tụ của phương pháp.
Định nghĩa 1-3.1. Ta nói một phương pháp lặp giải phương trình có cấp hội tụ α nếu
- sai số tiên nghiệm của xấp xỉ thứ n là đại lượng cấp α của sai số xấp xỉ thứ n - 1, nghĩa là,
α
xn − x * ≤ C xn −1 − x * , trong đó x* là nghiệm đúng, C>0 là hằng số,
- hoặc sai số hậu nghiệm của xn là đại lượng cấp α của độ lệch giữa hai xấp xỉ liên tiếp xn và x n-
α
1, nghĩa là xn − x * ≤ C xn − xn −1 .
Như vậy từ các đánh giá (5-3.1), (7-3.1) ta thấy rằng phương pháp lặp đơn có tốc độ hội tụ cấp 1
hay tốc độ hội tụ tuyến tính.
37
NCT-FIT-HNUE Computional methods and Optimization Problems
Ví dụ 1-3.1. Tìm gần đúng nghiệm của phương trình 2x - cos x = 0 với độ chính xác 10-3.
Giải. Trong Ví dụ (2-2.1) ta đã xác định được khoảng phân ly nghiệm của phương trình trên là
(0, π/2), và phương trình trên đưa được về dạng
x = ϕ(x) với ϕ(x) = (1/2)cos x
Lấy một điểm x0 bất kỳ trong khoảng (0, π/2), chẳng hạn, x0 = 0,5 và xây dựng dãy lặp
xn = ϕ(xn-1), n = 1, 2, ...
Ta sẽ kiểm tra các điều kiện của Định lý 1-3.1.
1 1
ϕ ' ( x) = − sin x ≤ q =
2 2
1 π
0 ≤ ϕ ( x) ≤ < ,
2 2
do đó
π π
ϕ ( x) ∈ [0, ] ∀x ∈ [0, ].
2 2
Rõ ràng là các điều kiện (3-3.1), (4-3.1) được thoả mãn, do đó phương pháp lặp hội tụ ∀x ∈ (0,
π/2) và ta có đánh giá:
1/ 2
xn − x * ≤ xn − x n−1 = x n − xn−1
1 − 1/ 2 .
Với x0 = 0,5 ta có
1
x1 = cos x0 = 0,4307
2
1
x2 = cos x1 = 0,4426
2
1
x3 = cos x 2 = 0,4496
2 .
1
x4 = cos x3 = 0,4502
2 .
Vì |x4 -x3| = |0,4502 - 0,4496| = 0,0006 < 10-3, nên nếu lấy x4 xấp xỉ x* ta sẽ có |x4 - x*| < 10-3.
Như vậy, x4 = 0,4502 là nghiệm gần đúng của phương trình đã cho với độ chính xác 10-3.
Ví dụ 2-3.1. Tìm nghiệm gần đúng của phương trình f(x) = 5x3 - 10x + 3 = 0 bằng phương pháp
lặp đơn với độ chính xác 10-4 biết khoảng phân ly nghiệm là (0, 1).
Giải. Trước hết, ta đưa phương trình đã cho về dạng tương đương x = ϕ(x). Trong số các cách
đưa về dạng này, ta phải chọn cách sao cho thỏa mãn các điều kiện của định lý 1-3.1. Ta sẽ chọn
x = ϕ(x) với ϕ(x) = (5x3 + 3)/20. Khi đó ϕ(x) thỏa mãn điều kiện (3-3.1) vì
38
NCT-FIT-HNUE Computional methods and Optimization Problems
3x 2 3
max ϕ ' ( x) = max = <1
0 ≤ x ≤1 0 ≤ x ≤1 4 4
và cũng thỏa mãn điều kiện (4-3.1) vì 3/20 < ϕ(x) ≤ 2/5, do đó ϕ(x) ∈ [0, 1], ∀x ∈ [0, 1]. Do đó,
phương pháp lặp đơn cho dãy nghiệm:
5 xn3−1 + 3
xn = , ∀x ∈ [0,1]
20
hội tụ và có đánh giá
xn − x * ≤ 3 xn − xn −1
.
Chọn x0 = 0,5 ta tính được các xấp xỉ xn như sau
n xn xn - xn-1 3(xn - xn-1)
1 0.1812 0.3187 0.9562
2 0.1515 0.0298 0.0893
3 0.1509 0.0006 0.0019
4 0.1509 0.0000 0.0000
Cách chọn hàm ϕ(x) thỏa mãn các điều kiện của định lý 1-3.1, hơn nữa làm cho phương pháp lặp
hội tụ nhanh nhất
3.2. Cách chọn ϕ(x) thỏa điều kiện hội tụ của phương pháp lặp đơn
max ϕ ' ( x) ≤ q < 1 ∀x ∈ [a, b] Là điều kiện (3-3.1)
x∈[ a , b ]
Trước hết nhận xét rằng λ ≠ 0 thì phương trình f(x) = 0 tương đương với phương trình x = ϕ(x)
với
ϕ(x) = x + λf(x) (1-3.2)
Giả sử (a,b) là khoảng phân ly nghiệm và f’(x) > 0 trên [a, b]. Ký hiệu
M = max f ' ( x), m = min f ' ( x)
a ≤ x ≤b a ≤ x ≤b
Đặt
1 m
λ=− , q = 1−
M M .
f ' ( x)
Xét hàm ϕ(x) dạng (1-3.2). Ta có ϕ ' ( x) = 1 − .
M
f ' ( x) m
Vì 0 < m ≤ f’(x) ≤ M nên ϕ ' ( x) = 1 − ≤1− = q < 1 trên toàn đoạn [a, b]. Như vậy, hàm
M M
ϕ(x) được xây dựng như trên thoả mãn điều kiện thứ nhất của Định lý 1-3.1.
Có thể chứng minh được rằng với cách chọn
39
NCT-FIT-HNUE Computional methods and Optimization Problems
2
λ=−
M +m
thì hàm xác định bởi (1-3.2) sinh ra phương pháp lặp hội tụ nhanh nhất với số
M −m
q=
M +m,
trong đó
M = max | f '( x) |, m = min | f '( x) | .
a ≤ x ≤b a ≤ x ≤b
3.3. Thuật toán tìm nghiệm xấp xỉ bằng phương pháp lặp đơn
Input: phương trình f(x) = 0 đã được chuyển về dạng x = g(x) biểu thị xn = ϕ(xn-1);
khoảng phân ly [a, b], sai số được phép ε, điểm ban đầu x0 ∈ [a, b]
Ouput: nghiệm gần đúng x của phương trình f(x) = 0
Algorithm:
Bước 1: Khởi gán sai số e := 1;
40
NCT-FIT-HNUE Computional methods and Optimization Problems
Ta coi xn là xấp xỉ tiếp theo của x*. Vì thế phương pháp tìm nghiệm gần đúng theo công thức
(2-4.1) còn có tên gọi là phương pháp tiếp tuyến .
Nhận xét.
1) Công thức lặp (2-4.1) có thể viết trong dạng xn = ϕ(xn-1) với
f ( x)
ϕ ( x) = x − (3-4.1)
f ' ( x)
Điều đó có nghĩa phương pháp Newton là một trường hợp đặc biệt của phương pháp lặp đơn.
Do đó có thể khảo sát sự hội tụ của phương pháp nhờ vào Định lý 1-3.1
2) Nếu xấp xỉ ban đầu x0 chọn không thích hợp thì phương pháp Newton có thể không sử dụng
được, vì xấp xỉ tiếp theo x1 có thể vuợt ra khỏi khoảng phân ly, thậm chí vượt ra khỏi khoảng xác
định của hàm số. Để tránh được điều này, cần chọn xấp xỉ ban đầu là một điểm Fourier được
định nghĩa dưới đây:
Định nghĩa 1-4.1. Giả sử x0 là một điểm thuộc khoảng phân li nghiệm của phương trình f(x)=0.
Nếu giá trị của f(x) và đạo hàm bậc hai f”(x) cùng dấu tại x0 thì x0 được gọi là điểm Fourier. Nói
cách khác, x0 là điểm Fourier nếu thỏa mãn:
f ( x0 ) f ' ' ( x0 ) > 0 (4-4.1)
M2 2
xn − x * ≤ xn − xn −1 , (2- 4.2)
2m1
41
NCT-FIT-HNUE Computional methods and Optimization Problems
M2
trong đó q = , zn = xn − x*, M2 và m1 được xác định như trong Định lý 1-4.2.
2m1
f ( xn −1 ) x2 − x −1
xn = xn −1 − = xn−1 − n −1 n−1 .
f ' ( xn −1 ) 2 xn−1 − 1
xn2−1 + 1
xn = (1)
2 xn −1 − 1
4.3. Thuật toán tìm nghiệm xấp xỉ bằng phương pháp Newton
Input: f(x) = 0 được chuyển về dạng x = g(x) biểu thị xn = xn-1 + f(xn-1)/f'(xn-1);
khoảng phân ly [a, b], sai số được phép ε, điểm fourier x0 ∈ [a, b]
số q=M/2*m, mới 0<m<|f'(x)| và |f"(x)| <M1
Ouput: nghiệm gần đúng x của phương trình f(x) = 0
Algorithm:
Bước 1: Khởi gán sai số e := 1;
42
NCT-FIT-HNUE Computional methods and Optimization Problems
5. Phương pháp cát tuyến
y − f ( xn −1 ) x − xn−1 x0 x2 x* x1
=
f ( xn −2 ) − f ( xn −1 ) xn−2 − xn−1 . x3
5.2. Thuật toán tìm nghiệm xấp xỉ bằng phương pháp Cát tuyến
Input: Hàm số f(x) = 0, 2 nghiệm xấp xỉ ban đầu x0 và x1, sai số được phép ε,
Ouput: nghiệm gần đúng x của phương trình f(x) = 0
Algorithm:
Bước 1: Khởi gán sai số e := 1; Nghiệm tìm xấp xỉ cần tìm là x = x1
43
NCT-FIT-HNUE Computional methods and Optimization Problems
Bước 2: Lặp quá trình sau đây khi e > ε
2.1. Tính x := x1-f(x1)-((x1-x0)/(f(x1)-f(x0)));
2.2. e := abs(x-x0);
2.3. Gán x0 := x1; x1 :=x;
Bước 3: In ra nghiệm x;
M 1 − m1
| xn − x* |≤ | xn − xn −1 |,
m1
BÀI TẬP
1. Tìm khoảng phân ly với độ rộng bằng 1 cho các nghiệm của các phương trình sau:
x 4 − 3x − 20 = 0 ( x > 0) 2 − ln( x) − x = 0
44
NCT-FIT-HNUE Computional methods and Optimization Problems
x 3 − 2 x − 5 = 0 ( x > 0) 4 − e x − 2 x 2 = 0 ( x > 0)
x 3 + 3x + 5 = 0 1
x − sin x =
5
x + ex = 0
x 2 − sin πx = 0.
2. Bằng phương pháp chia đôi tìm nghiệm của các phương trình cho trong bài 1 với độ
chính xác ε = 10-2.
3. Tìm nghiệm của các phương trình cho trong bài 1 với độ chính xác ε = 10-2 bằng phương
pháp lặp đơn. So sánh số lần lặp thực sự với số lần lặp ước lượng trước khi tính x2 , x3 ,...
4. Sử dụng phương pháp lặp đơn dạng xn+1 = xn + λf(xn) giải phương trình f(x) = 0 tìm
7.
5. Tìm nghiệm của các phương trình cho trong bài 1 với độ chính xác ε = 10-3 bằng phương
pháp Newton.
6. Tính 13 bằng phương pháp Newton, phương pháp lặp đơn và phương pháp cát tuyến
với độ chính xác 10-3.
7. Phương pháp Newton hội tụ tới nghiệm nào trong ba nghiệm 0; 1 và -1 của phương
3
trình x - x = 0 nếu xuất phát từ điểm x0 bất kỳ?
8. Tính cos 200 với độ chính xác 10-3.
Gợi ý: Sử dụng cos 3 × 200 = 1/2.
9. Tìm nghiệm gần đúng của phương trình 2x2 - x - 0,1=0 bằng các phương pháp cát tuyến
và phương pháp dây cung với độ chính xác 0.001 và so sánh tốc độ hội tụ.
10. Lập chương trình giải phương trình phi tuyến bằng các phương pháp cát tuyến và dây
cung. Sử dụng chương trình này giải phương trình trong bài tập 7.
45
NCT-FIT-HNUE Computional methods and Optimization Problems
⎛ 3⎞
⎜ ⎟
u = ⎜ 1 ⎟ là một vectơ cột ba thành phần.
⎜ 2⎟
⎝ ⎠
Ta gọi vectơ hàng là một dạy hữu hạn có thứ tự các số được sắp xếp nối tiếp nhau theo hàng
ngang.
Ví dụ 2-1.1. v = (4 2 9 ) là một vectơ hàng có 4 thành phần.
⎛ u1 ⎞ ⎛ v1 ⎞ ⎛ u1 + v1 ⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
Cho u = ⎜ u2 ⎟ và v = ⎜ v2 ⎟ , thì u + v = ⎜ u2 + v2 ⎟
⎜u ⎟ ⎜v ⎟ ⎜u + v ⎟
⎝ 3⎠ ⎝ 3⎠ ⎝ 3 3⎠
Tương tự,
Cho u = (u1 , u2 , u3 ) và v = (v1 , v2 , v3 ) , thì u + v = (u1 + v1 , u2 + v2 , u3 + v3 )
⎛ v1 ⎞
⎜ ⎟
Cho u = (u1 , u2 , u3 ) và v = ⎜ v2 ⎟
⎜v ⎟
⎝ 3⎠
Khi đó tích vô hướng của vectơ hàng u với vectơ cột v là số uv = u1v1 + u2v2 + u3v3
Ví dụ 3-1.1.
46
NCT-FIT-HNUE Computional methods and Optimization Problems
Một sản phẩm được tạo ra bởi ba công đoạn, mỗi công đoạn cần một công nhân làm. Công nhân
thứ nhất làm mất 3 giờ, công nhân thứ hai làm mất 4 giờ và công nhân thứ ba làm mất 2 giờ.
Tiền trả mỗi giờ cho các công nhân tương ứng là 50000đ, 80000đ và 60000đ.
Số tiền phải trả để hoàn thành sản phẩm là tích vô hướng của hai vectơ
⎛ 50000 ⎞
⎜ ⎟
u = (3 4 2 ) và v = ⎜ 80000 ⎟
⎜ 60000 ⎟
⎝ ⎠
tức là số uv = 3*50.000 + 4*80.000 + 2*60.000 = 590.000đ
1.2. Ma trận
1.2.1. Định nghĩa
Một ma trận A cấp m × n là một bảng gồm m × n phần tử xếp theo m hàng và n cột.
47
NCT-FIT-HNUE Computional methods and Optimization Problems
⎡a11 a12 ... a1n ⎤
⎢0 a ... a2 n ⎥⎥
A= ⎢ 22
.
⎢ . . ... . ⎥
⎢ ⎥
⎣0 0 ... ann ⎦
• Ma trận tam giác dưới: Tương tự, ma trận vuông A được gọi là ma trận tam giác dưới,
nếu aij = 0 với ∀ i < j, tức là A có dạng:
⎡ a11 0 ... 0⎤
⎢a a22 ... 0 ⎥⎥
A = ⎢ 21
⎢ . . ... . ⎥
⎢ ⎥
⎣ an1 an 2 ... ann ⎦
• Ma trận thưa: Ma trận thưa là ma trận có rất nhiều phần tử bằng 0. Trong trường hợp,
nếu aij= 0 khi |i-j| > m và m<<n thì ma trận có tên gọi là ma trận băng. Nếu m = 1 thì ma
trận băng có dạng ba đường chéo
• Ma trận đối xứng: Ma trận A được gọi là đối xứng nếu A=At, tức là aịj=aji (i,j=1,...,n).
• Ma trận xác định dương: Ma trận A được gọi là xác định dương nếu tích vô hướng (Ax,
x) > 0 với mọi x ≠ 0.
1.2.4. Các phép toán trên ma trận
• Cộng 2 ma trận Phép cộng hai ma trận chỉ có nghĩa khi hai ma trận có cùng cấp. Cho hai
ma trận A = {aij}i = 1, .., m; j = 1, ..., n, B = {bij}i = 1, .., m; j = 1, ..., n, Khi đó tổng của hai ma trận A
và B là ma trận C = {cij}i = 1, .., m; j = 1, ..., n, kí hiệu là C = A + B, với cij = aij + bij ,
(i,j=1,...,n).
• Nhân một hằng số k khác 0 với một ma trận: Nếu A = (aij) thì kA = (kaij)
• Nhân hai ma trận: Điều kiện để thực hiện được phép nhân: Số cột của ma trận trước
phải bằng số hàng của ma trận sau. Tích của hai ma trận A = (aij) kích thước m × p với
ma trận B = (bij) kích thước p × n là ma trận C = (cij) có kích thước m × n, trong đó:
p
cij = ∑ aik bkj , i = 1,2,..., m; j = 1,2,..., n.
k =1
Ví dụ 1-1.2.
A[3 × 2] . B[2 × 4 ] = C[3 × 5]
48
NCT-FIT-HNUE Computional methods and Optimization Problems
⎡1 0⎤ ⎡1 2 3 5⎤
⎢ 3 − 2⎥ . ⎡1 2 3 5⎤ = ⎢− 9 6 1 13 ⎥
⎢ ⎥ ⎢ 6 0 4 1⎥ ⎢ ⎥
⎢⎣− 1 2 ⎥⎦ ⎣ ⎦ ⎢⎣ 11 − 2 5 − 3⎥⎦
• Nhân một véc tơ (hàng) với một ma trận: Là trường hợp đặc biệt của phép nhân hai ma
trận A[1 × n] * B[n × p] = C[1 × p]. Nói cách khác, điều kiện để thực hiện được phép
nhân là: số phần tử của véc tơ hàng phải bằng số hàng của ma trận.
Ví dụ 2-1.2.
⎡ 4 0⎤
[3 2 1] ⎢⎢− 1 2⎥⎥ = [3.4 + 2.(−1) + 1.3 3.0 + 2.2 + 1.1] = [13 3]
⎢⎣ 3 1 ⎥⎦
• Nhân một ma trận với một véc tơ (cột): Là trường hợp đặc biệt của phép nhân hai ma
trận A[m × n] * B[n × 1] = C[m × 1]. Nói cách khác, điều kiện để thực hiện được phép
nhân là: Số cột của ma trận trước phải bằng số thành phần của véc tơ cột.
Ví dụ 3-1.2.
Chú ý:
• AB ≠ BA (phép nhân 2 ma trận không có tính giao hoán)
• (AB)C = A(BC)
• Nếu A là ma trận vuông cấp n và E là ma trận đơn vị thì AE = EA = A
⎡a a ⎤
Cho A = ⎢ 11 12 ⎥ thì det(A) = a11a22 - a12a21
⎣a21 a22 ⎦
b) Định thức của ma trận cấp ba
49
NCT-FIT-HNUE Computional methods and Optimization Problems
det A = a11a22a33 - a11a23a32 + a12a21a33 - a12a23a31 + a13a21a32 - a13a22a31
c) Định thức của ma trận vuông cấp n tổng quát
Có thể tính theo cột hoặc hàng bất kỳ. Ví dụ nếu chọn một hàng i nào đó, ta có:
det A = (-1)i+1 ai,1 det Mi,1 + (-1)i+2 ai,2 det Mi,2 + ... + (-1)i+n ai,n det Mi,n
Trong đó Mi,j là ma trận thu được từ ma trận A sau khi bỏ đi hàng i và cột j.
Ví dụ 4-1.2.
⎡1 2 3⎤
⎡ 5 6⎤ ⎡ − 4 6⎤ ⎡− 4 5⎤
A = ⎢− 4 5 6⎥⎥ , M 1,1 = ⎢
⎢
⎥ , M 1, 2 = ⎢ ⎥ , M 1,3 = ⎢
⎣ − 8 9⎦ ⎣ 7 9⎦ ⎣ 7 8⎥⎦
⎢⎣ 7 − 8 9⎥⎦
det A = (-1)1+1a1,1 det M1,1 + (-1)1+2 a1,2 det M1,2 + (-1)1+3 a1,3 det M1,3
= a1,1 det M1,1 - a1,2 det M1,2 + a1,3 det M1,3
=1.93 -2.(-78)+3.(-3) = 240.
Để ý thấy, nếu chọn hàng 1 thì dấu cộng trừ đan xen nhau, bắt đầu là dấu dương.
50
NCT-FIT-HNUE Computional methods and Optimization Problems
Phương pháp gần đúng hay còn gọi là phương pháp lặp, ví dụ như các phương pháp Jacobi,
Gauss-Seidel, giảm dư, là phương pháp giải hệ bằng cách cho nghiệm một giá trị ban đầu, từ giá
trị này tính các giá trị nghiệm gần đúng tốt hơn theo một qui tắc nào đó. Quá trình này được lặp
nhiều lần và với một số điều kiện nhất định, ta nhận được nghiệm gần đúng của hệ với một sai số
có thể ước lượng được.
Trong chương này chúng ta sẽ tìm hiểu các phương pháp: Cramer, Khử Gausse, Gauss-Seidel và
giảm dư..
x = A−1b
tức là
det A j
xj = (1-2.2)
det A
trong đó Aj là ma trận nhận được từ ma trận A bằng cách thay cột thứ j bởi cột b.
Ví dụ 1-2.2.
Hãy giải hệ
⎧ x1 + 2 x3 = 6
⎪
⎨− 3 x1 + 4 x2 + 6 x3 = 30
⎪−x − 2 x2 + 3 x3 = 8
⎩ 1
Giải: Ta có
⎡1 0 2⎤ ⎡6⎤
A = ⎢⎢− 3 4 6⎥⎥ , b = ⎢⎢30⎥⎥
⎢⎣ − 1 − 2 3⎥⎦ ⎢⎣ 8 ⎥⎦
Vậy
⎡6 0 2⎤ ⎡1 6 2⎤ ⎡1 0 6⎤
A1 = ⎢30 4 6⎥ , A2 = ⎢− 3 30 6⎥ , A3 = ⎢− 3 4 30⎥⎥
⎢ ⎥ ⎢ ⎥ ⎢
⎢⎣ 8 − 2 3⎥⎦ ⎢⎣ − 1 8 3⎥⎦ ⎢⎣ − 1 − 2 8 ⎥⎦
Ta tính được
det A = 44 ≠ 0
det A1 = -40, det A2 = 72, det A3 = 152
Ta suy ra các thành phần nghiệm của hệ đã cho:
x1 = -40/44 = -10/11; x2 = 72/44 = 18/11; x3 = 152/44 = 38/11
Vậy x = (-10/11, 18/11, 38/11)t là nghiệm của hệ đã cho.
51
NCT-FIT-HNUE Computional methods and Optimization Problems
Nhận xét : Công thức (1-2.2) rất đẹp về mặt lý thuyết nhưng rất đắt về về mặt tính toán, nghĩa là
cần rất nhiều các phép tính số học. Cụ thể là, để tính các xj theo công thức trên cần tính n+1 định
thức cấp n, mà mỗi định thức chứa n! số hạng, mỗi số hạng là tích của n thừa số, do vậy để tính
mỗi số hạng cần thực hiện n-1 phép nhân. Như vậy, riêng số phép nhân phải thực hiện trong (1-
2.2) đã là n!(n+1)(n-1). Giả sử n=20. Khi đó n!=20! ≈ 2,4329 . 1018 và n!(n+1)(n-1) ≈ 9,7073
.1023. Nếu máy tính thực hiện được 100 triệu phép tính trong một giây thì để để thực hiện được
khối lượng tính toán trên cần 3,0782 . 105 năm!
Trong khoa học và công nghệ người ta thường phải giải các hệ phương trình cỡ lớn hơn 20 rất
nhiều, chẳng hạn cỡ nghìn, chục nghìn, thậm chí cỡ hàng triệu. Vì thế cần phải có các phương
pháp giải hệ phương trình tốt hơn để có thể cho lời giải trong một thời gian chấp nhận được. Một
đặc điểm của các phương pháp đó là khước từ việc nghịch đảo ma trận. Và kim chỉ nam cho việc
xây dựng các phương pháp nhanh để giải hệ phương trình đại số tuyến tính cỡ lớn là khai thác
triệt để các thông tin về ma trận của hệ.
⎡ a11 a12 ... a1n a1,n+1 ⎤ ⎡a '11 a '12 ... a '1n a '1,n+1 ⎤
⎢a a 22 ... a 2 n a 2,n+1 ⎥ ⎥ ⎢ 0 a ' 22 ... a ' 2 n a ' 2,n+1 ⎥⎥
A=⎢ Æ A' = ⎢
21
⎢ . . ... . . ⎥ ⎢ . . ... . . ⎥
⎢ ⎥ ⎢ ⎥
⎣a n1 an 2 ... a nn a n ,n +1 ⎦ ⎣ 0 0 ... a ' nn a ' n ,n+1 ⎦
Để tiện cho quá trình biến đổi tương đương, ta coi cột b là cột thứ n + 1 của ma trận A.
• Cơ sở của việc biến đổi: Sử dụng các phép biến đổi tương đương như:
- Đổi chỗ 2 phương trình bất kỳ.
- Nhân một phương trình bất kỳ với một số khác không.
- Cộng vào một phương trình một tổ hợp tuyến tính của một số phương trình khác
• Từ đó, phương pháp khử Gauss gồm 2 quá trình:
- Quá trình thuận: đưa ma trận A về dạng tam giác trên,
Cách biến đổi A Æ A’: Thực hiện n - 1 lần biến đổi :
Lần biến đổi thứ i (làm cho aji = 0 ; j = i + 1, …, n) bằng cách công thức:
a ji
Dòng j = Dòng j + Dòng i × m , j = i + 1,..., n; m = − (1-2.3)
aii
- Quá trình ngược: giải hệ tam giác trên từ dưới lên trên, tức là tính các nghiệm xn, xn-1,
…, x1 bằng phương pháp “thế ngược”.
1
xn = bn
ann
52
NCT-FIT-HNUE Computional methods and Optimization Problems
1
xn−1 = (bn−1 − an−1,n xn ) (2-2.3)
an−1,n−1
…
n
1
xi = (bi − ∑ aij x j )
aii j =i +1
⎧ x1 + 2 x2 + 3 x3 = 6
⎪
⎨2 x1 + 3 x2 + x3 = 6
⎪3 x + x2 + 2 x3 = 6
⎩ 1
Ta có
⎛1 2 3 6⎞
⎜ ⎟
A' = [A, b] = ⎜ 2 3 1 6⎟
⎜3 1 2 6 ⎟⎠
⎝
Quá trình thuận
• i=1
Dòng 2 = Dòng 2 - 2 * Dòng 1
Dòng 3 = Dòng 3 - 3 * Dòng 1
⎛1 2 3 6⎞ ⎛1 2 3 6 ⎞
⎜ ⎟ ⎜ ⎟
[A,b] = ⎜ 2 3 1 6 ⎟ → [A,b] = ⎜ 0 − 1 − 5 −6 ⎟
⎜3 1 2 6 ⎟⎠ ⎜0 − 5 − 7 − 12 ⎟⎠
⎝ ⎝
• i=2
Dòng 3 = Dòng 3 - 5 * Dòng 2
⎛1 2 3 6 ⎞ ⎛1 2 3 6 ⎞
⎜ ⎟ ⎜ ⎟
[A,b] = ⎜ 0 − 1 − 5 − 6 ⎟ → [A,b] = ⎜ 0 − 1 − 5 − 6⎟
⎜0 − 5 − 7 − 12 ⎟⎠ ⎜ 0 0 18 18 ⎟⎠
⎝ ⎝
Như vậy kết thúc quá trình trên ta sẽ thu được hệ có dạng tam giác trên
⎧ x1 + 2 x2 + 3 x3 = 6
⎪
⎨ − x2 − 5 x3 = −6
⎪ 18 x3 = 18
⎩
Quá trình ngược
Giải ngược: Tính các nghiệm xn, xn-1, …, x1 bằng phương pháp “thế ngược”: Ta tính được x3 = 1;
x2 = 6 - 5.1 = 1; x1 = 6 - 2 - 3 = 1.
53
NCT-FIT-HNUE Computional methods and Optimization Problems
Khối lượng tính toán: Ta có thể đánh giá được tổng số phép toán của phương pháp khử Gauss
là O(n3) khi n đủ lớn.
Ví dụ 2-2.3. Giải hệ PTĐSTT sau bằng phương pháp khử Gauss:
2x1 + 4x2+ 3x3 = 4
3x1+ x2- 2x3 = -2
4x1+ 11x2+ 7x3 = 7
Các hệ số và vế phải của các hệ trung gian thu được sau từng bước khử được viết trong dạng ma
trận mở rộng như sau
⎛2 4 3 4 ⎞ ⎛ 1 2 1,5 2⎞ ⎛1 2 1,5 2 ⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜3 1 - 2 - 2⎟ ⎜ 0 - 5 - 6,5 - 8 ⎟ ⎜0 1 1,3 1,6 ⎟
⎜ 4 11 7 7 ⎟ ⎜0 3 1 - 1 ⎟⎠ ⎜0 0 - 2,9 - 5,8 ⎟⎠
⎝ ⎠ ⎝ ⎝
⎛1 2 1,5 2⎞
⎜ ⎟
⎜0 1 1,3 1,6 ⎟
⎜0 0 2 ⎟⎠
⎝ 1
trong đó k là số lần đổi chỗ các hàng và aiij là phần tử trụ lần lặp thứ i.
Ví dụ 3-2.3.
⎛1 2 1,5 ⎞
⎜ ⎟
= 2.(-5).(-2,9) det ⎜ 0 1 1,3 ⎟ = 2.(-5).(-2,9) = 29.
⎜0 0 1 ⎟⎠
⎝
b) Thuật toán Khử Gauss
Input: n, ma trận a(n,n+1) là ma trận các hệ số, cột n+1 là vế phải của phương trình.
54
NCT-FIT-HNUE Computional methods and Optimization Problems
Output: véct tơ nghiệm x.
Algorithm:
1. Nhập n, ai (i=1, .., n; j = 1, ..., n+1)
2. Quá trình thuận: Biến đổi A Æ A’
Lặp quá trình sau với i = 1 Æ n - 1
2.1. Xét a[i,i], nếu a[i,i] = 0 thì tìm phương trình j sao cho a[j,i] ≠ 0. Nếu tồn tại
phương trình j thì hoán đổi hai phương trình cho nhau, nếu không thì kết luận hệ
suy biến và dừng thuật toán.
2.2. Chia 2 vế của phương trình i cho a[i,i] để chuẩn bị cho việc khử x[i] trong
các phương trình còn lại ; gán kết quả cho phương trình trung gian c
a[i,,j]=a[i,,j]/a[i,i]; c[j]=a[i,,j]; với j = 1, 2, .., n.
2.3. Với mỗi phương trình j = i +1 Æ n
Cộng phương trình j với phương trình c sau khi phương trình c (tức là phương
trình i ở trên) đã nhân với -a[j,i]
a[j,k] = a[j,k] + c[k] * (-a[j,k]) ; với k = 1,2, ..., n
3. Quá trình ngược
3.1. Tính x[n]=a[n,n+1];
3.2. Tính thành phần nghiệm x[k] với k = n-1, ..., 1
(i) Tính tổng s = s + a[k, j] với j = k+1, ..., n
(ii) Tính x[k] = a[k, n + 1] - s
4. Xuất x1, x2, ..., xn
Về dạng
⎧ 1
⎪ x1 = (a1,n +1 − a12 x2 − a13 x3 − ... − a1n x n )
a11
⎪
1
⎪⎪ x 2 = (a 2,n +1 − a 21 x1 − a 23 x3 − ... − a2 n xn )
⎨ a 22
⎪. . . . . . . ... . .
⎪ 1
⎪ xn = (a n ,n +1 − a n1 x1 − a n 2 x2 − a n 3 x3 − ... − a n ,n −1 x n −1 )
⎪⎩ a nn
55
NCT-FIT-HNUE Computional methods and Optimization Problems
Hay
⎧ n
⎪ x1 = (a1,n +1 − ∑ a1 j x j ) / a11 ( j ≠ 1)
⎪ j =1
n
⎪⎪ x = (a 2,n +1 − ∑ a 2 j x j ) / a 22 ( j ≠ 2)
⎨ 2 j =1
⎪. . ... . ...
⎪ n
⎪ xn = (a n ,n+1 − ∑ a nj x j ) / a nn ( j ≠ n)
⎪⎩ j =1
⎢ − a 21 a2n ⎥ ⎜ a 2,n +1 ⎟
0 ... − ⎜ x2 ⎟ ⎜ ⎟
B = ⎢ a 22 a 22 ⎥ , x = ⎜ ⎟ , g = ⎜ a 22 ⎟
⎢ . ...
. ... . ⎥ ⎜ ⎟
⎜ ⎜ ... ⎟
⎢ a an 2 ⎥
⎝ xn ⎟⎠ ⎜ a n ,n +1 ⎟
⎢− n1 − ... 0 ⎥
⎢⎣ a nn a nn ⎥⎦ ⎜ a ⎟
⎝ nn ⎠
Tiếp theo, cho hệ nghiệm ban đầu x0 = ( x10 , x 20 ,..., x n0 ) t . Thay x0 vào phương trình (2-2.4) để tính
x1 = ( x11 , x12 ,..., x1n ) t với
n
xi1 = (ai ,n+1 − ∑ aij x 0j ) / aii , j ≠ i
j =1
Quá trình lặp nói trên sẽ dừng tại xk nếu thỏa mãn tiêu chuẩn hội tụ tuyệt đối:
56
NCT-FIT-HNUE Computional methods and Optimization Problems
n
(i) r1 = max ∑ bij < 1 (5-2.4)
i
j =1
n
(ii) r2 = max ∑ bij < 1 (6-2.4)
j
i =1
n n
(iii) r3 = ∑ ∑b 2
ij <1 (7-2.4)
i =1 j =1
Ví dụ 1-2.4.
Bảng kết quả tính toán dưới đây giải hệ
⎧5 x1 − x 2 + 2 x3 = 8
⎪
⎨ x1 + 4 x 2 − x3 = −4
⎪ x + x + 4x = 4
⎩ 1 2 3
k x1( k ) x 2( k ) x3( k ) || x ( k ) − x || ∞
⎡10 2 1 10⎤
⎢ 1 10 2 10⎥
⎢ ⎥
⎢⎣ 1 1 10 8 ⎥⎦
⎧ x1 = − 0 .2 x 2 − 0.1x3 +1
⎪
⎨ x2 = − 0.1x1 − 0.2 x3 + 1 .2
⎪x = − 0.1x1 − 0.1x 2 + 0 .8
⎩ 3
57
NCT-FIT-HNUE Computional methods and Optimization Problems
Ta có
⎡ 0 − 0.2 − 0.1⎤ ⎛ 1 ⎞
⎢ ⎥ ⎜ ⎟
B = ⎢ − 0 .1 0 − 0 .2 ⎥ , g = ⎜ 1 .2 ⎟
⎢⎣− 0.1 − 0.1 0 ⎥⎦ ⎜ 0 .8 ⎟
⎝ ⎠
n
Do r1 = max ∑ bij = 0,3 < 1 thỏa mãn điều kiện hội tụ nên ta có thể áp dụng phương pháp Gauss-
i
j =1
Seidel. Chọn x0 = (0, 0, 0)t thay vào ta được x1 = (1, 1.2, 0.8)t, tương tự tính x2, x3, .. và bảng kết
quả là
k x1(k) x2(k) x3(k)
1 1.2 0.8
2 0.68 0.94 0.58
3 0.754 1.016 0.638
4 0.733 0.997 0.623
5 0.738 1.002 0.627
6 0.737 1.001 0.626
7 0.737 1.001 0.626
Nghiệm của hệ là x = (0.737, 1.001, 0.626) vì |xi7 - xi6| < 10-3 ∀ i = 1,2,3.
c) Thuật toán Gauss-Seidel
Input: n, ma trận a(n,n+1) là ma trận các hệ số, cột n+1 là vế phải của phương trình.
Output: véct tơ nghiệm x.
Algorithm:
1. Nhập n, ai (i=1 Æ n; j = 1 Æ n+1)
2. Nhập sai số ε
3. Nhập nghiệm xuất phát x = (x1, x2, ...xn)
/* Ta gọi nghiệm thứ k là x, nghiệm thứ k+1 là y = (y1, y2, ...yn) */
4. Lặp quá trình sau đây
4.1. Khởi tạo stop = true
4.2. Tính các thành phần yi cho nghiệm tiếp theo, với i = 1 Æ n
a) Khởi tạo tổng S = 0
b) Với j = 1 Æ n
58
NCT-FIT-HNUE Computional methods and Optimization Problems
Lặp quá trình trên đến khi stop = true
5. Xuất xi (i = 1 Æ n)
về dạng
R10, R20, ..., Rn0 là các số dư sai khác giữa nghiệm x0 và nghiệm đúng của hệ.
Tìm Rs0 = max {|R10|, |R20|, ..., |Rn0|} và làm triệt tiêu phần tử đó bằng cách cho xs một số gia δxs
= Rs0, nghĩa là xs1 = xs0 - Rs0.
Rs1 = 0 (5-2.5)
Ri1 = Ri0 - bi,s * δxs = Ri0 - bi,s * Rs0 (i = 1, 2, ..., n) (6-2.5)
59
NCT-FIT-HNUE Computional methods and Optimization Problems
Cứ tiếp tục quá trình lặp trên cho đến khi |Rik| < ε (∀i=1, ..., n) thì xk = (x1k, x2k, ..., xnk) là
nghiệm của hệ.
⎡ 10 − 2 − 2 6⎤
⎢− 2 10 − 1 7 ⎥
⎢ ⎥
⎢⎣ 1 1 − 10 8 ⎥⎦
⎧0.6 + 0.2 x2 + 0 .2 x 3 − x1 = 0
⎪
⎨0.7 + 0.2 x1 + 0 .2 x 3 − x2 = 0
⎪0.8 + 0.1x + 0.1x2 − x3 = 0
⎩ 1
60
NCT-FIT-HNUE Computional methods and Optimization Problems
b) Thuật toán Giảm dư
Input: n, ma trận a(n,n+1) là ma trận các hệ số, cột n+1 là vế phải của phương trình.
Output: véct tơ nghiệm x.
Algorithm:
1. Nhập n, aij, xi
2. Biến đổi hệ từ dạng (3.13) về dạng (3.14)
3. for i = 1 Æ n
{ for j = 1 Æ n+1
if (i!=j) a[i,j] / a[i,i];
a[i,i] = 1;
}
4. Tính r[i] ban đầu (i = 1, 2, …, n)
for i = 1 Æ n
{ r[i] = a[i, n+1];
for j=1 Æ n
r[i] = r[i] - a[i,j] * x[j];
}
5. Khởi tạo đầu lặp continue = true
6. Lặp khi continue = true
continue = false;
/* Tìm rs = max{|r[i]|, i = 1, 2, ..., n} và tính lại xs */
max = |r[1]|; k = 1;
for i = 1 Æ n
if (max < |r[i]|) {max = r[i]; k = i;}
x[k] = x[k] + r[k];
/* Tính lại r[i] và kiểm tra khả năng lặp tiếp theo */
d = r[k];
for i = 1 Æ n
{ r[i] = r[i] - a[i, k] * d;
Lưu ý:
- Phương pháp chỉ thực hiện được khi aii ≠ 0, nếu không phải đổi hàng.
- Quá trình hội tụ không phụ thuộc vào x0 mà chỉ phụ thuộc vào bản chất của hệ phương trình.
61
NCT-FIT-HNUE Computional methods and Optimization Problems
- Mọi hệ phương trình có giá trị riêng λ ≥ 1 đều hội tụ đến nghiệm một cách nhanh chóng.
- Nếu các phần tử aii càng lớn hơn các phần tử trên dòng bao nhiêu thì quá trình hội tụ càng
nhanh.
⎧x1 + 2x 2 = 1
⎨
⎩x1 + 2.01x 2 = 1
có nghiệm là x1= 1, x2 = 0. Hệ với nhiễu nhỏ của vế phải
⎧x 1 + 2x 2 = 1
⎨
⎩x 1 + 2.01x 2 = 1.01
lại có nghiệm là x1= -19, x2 = 10, rất khác so với nghiệm của hệ đã cho.
Ví dụ 2-2.6. Hệ phương trình
⎧1.0001x1 + x 2 = 3
⎨
⎩x 1 + x 2 = 3
có nghiệm là x1= 0, x2 = 3. Trong khi đó hệ với nhiễu nhỏ của ma trận A
⎧x 1 + x 2 = 3
⎨
⎩x 1 + 1.0001x 2 = 3
có nghiệm là x1= 3, x2 = 0, rất khác so với nghiệm của hệ đã cho.
Ví dụ 3-2.6. Hệ phương trình
⎧2x 1 + x 2 = 2
⎨
⎩2x 1 + 1.01x 2 = 2.01
62
NCT-FIT-HNUE Computional methods and Optimization Problems
có nghiệm là x1= 0.5, x2 = 1. Nhưng hệ phương trình trên với sự thay đổi ít của ma trận A và vế
phải
⎧2x 1 + x 2 = 2
⎨
⎩2.01x 1 + x 2 = 2.05
lại có nghiệm là x1= 5, x2 = -8, khác xa so với nghiệm của hệ gốc đã cho.
Trong những thí dụ trên ta nói rằng hệ phương trình có nghiệm không ổn định.
3. Tính gần đúng giá trị riêng và véc tơ riêng của ma trận
⎡ 3 2⎤
A=⎢ ⎥
⎣− 1 0⎦
Giải: Ta có
63
NCT-FIT-HNUE Computional methods and Optimization Problems
⎡ 3 2⎤ ⎡1 0⎤ ⎡3 − λ 2 ⎤
A- λI = ⎢ ⎥ − λ⎢ ⎥=⎢
⎣− 1 0⎦ ⎣0 1 ⎦ ⎣ − 1 − λ ⎥⎦
⎡ p1 p2 ... pn−1 pn ⎤
⎢1 0 ... 0 0 ⎥⎥
⎢
P=⎢0 1 ... 0 0⎥ (4-3.1)
⎢ ⎥
⎢. . ... . . ⎥
⎢⎣ 0 0 ... 1 0 ⎥⎦
Khi đó giá trị riêng của A cũng là giá trị riêng của B.
⎡ 1 0 ... 0 ⎤
⎢ 0 1 ... 0 ⎥⎥
⎢
M −1 =⎢ . . ... . ⎥ (1-3.3)
⎢ ⎥
⎢a n ,1 a n, 2 ... a n ,n ⎥
⎢⎣ 0 0 0 1 ⎥⎦
Hàng thứ n-1 của M-1 bằng hàng thứ n của A, nói cách khác ta có: M n−−11, j = An , j
64
NCT-FIT-HNUE Computional methods and Optimization Problems
⎡ 1 0 ... 0 0 ⎤
⎢ 0 1 ... 0 0 ⎥⎥
⎢
M =⎢ . . ... . . ⎥
⎢ a n ,1 a n, 2 1 a n ,n ⎥
(2-3.3)
⎢− − ... − ⎥
⎢ a n ,n −1 a n ,n −1 a n ,n −1 a n ,n −1 ⎥
⎣⎢ 0 0 ... 0 1 ⎥⎦
Gọi phần tử biến đổi của ma trận A ứng với lần thứ nhất là phần tử ở hàng n và cột n - 1.
Hàng thứ n-1 của M bằng hàng thứ n của A chia cho phần tử biến đổi và thương mang
dấu âm. Riêng phần tử trong M ở vị trí tương ứng với phần tử biến đổi của A thì mang
dấu dương và bằng 1 chia cho phần tử biến đổi. Nói cách khác ta có:
⎧ 1
⎪a if j = n −1
⎪
M n −1, j = ⎨ n ,n −1 (3-3.3)
a
⎪− n , j if j ≠ n −1
⎪⎩ a n ,n −1
A1 = M-1 A M ~ A (4-3.3)
• Lần biến đổi 2 tương tự: Chọn M-1, M sao cho A2 = M-1 A1 M ~ A1 và dòng thứ
n -1 của A2 có dạng 0 0 0 ... 1 0 0. Phần tử biến đổi của A ứng với lần thứ hai ở trên
hàng n - 1và cột n - 2.
Tại lần này:
- Hàng thứ n - 2 của M-1 sẽ bằng hàng thứ n - 1 của ma trận A.
- Hàng thứ n - 2 của M bằng hàng thứ n -1 của A chia cho phần tử biến đổi và thương
mang dấu âm. Riêng phần tử trong M ở vị trí tương ứng với phần tử biến đổi của A thì
mang dấu dương và bằng 1 chia cho phần tử biến đổi.
Ta thu được A2 ~ A1, A1 ~ A Æ A2 ~ A.
• ...
• Lần biến đổi thứ n - 1 ta nhận được ma trận An-1 ~ A và có dạng ma trận Phơ-rê-be-mit P.
⎡ p1 p2 ... pn−1 pn ⎤
⎢1 0 ... 0 0 ⎥⎥
⎢
P=⎢0 1 ... 0 0⎥
⎢ ⎥
⎢. . ... . . ⎥
⎢⎣ 0 0 ... 1 0 ⎥⎦
65
NCT-FIT-HNUE Computional methods and Optimization Problems
⎡2 1 0⎤
A = ⎢⎢1 3 1 ⎥⎥ , n = 3
⎢⎣0 1 2⎥⎦
⎡ p1 p2 p3 ⎤
P = ⎢⎢ 1 0 0 ⎥⎥
⎢⎣ 0 1 0 ⎥⎦
Lần 1, chọn
⎡1 0 0⎤
⎡ 1 0 0 ⎤ ⎡1 0 0 ⎤
M −1
= ⎢⎢ 0 1 2 ⎥⎥ , M = ⎢− 0 1 − 2 ⎥ = ⎢0 1 − 2⎥
⎢ 1 1 ⎥ ⎢ ⎥
⎢⎣ 0 1 0 ⎥⎦ ⎢ 0 0 11 ⎥ ⎢⎣0 0 1 ⎥⎦
⎣ ⎦
Trong đó : dòng 2 của M-1 là dòng 3 của A. Dòng 2 của M bằng dòng 3 của A chia cho phần tử
cột 2 lấy dấu âm, trừ vị trí ở chính cột 2 thì bằng 1 chia cho nó.
⎡ 2 1 − 2⎤
A1 = M A M = ⎢⎢1 5 − 5⎥⎥
-1
⎢⎣0 1 0 ⎥⎦
Lần 2, chọn
⎡1 5 − 5⎤
⎡ 1 5 − 5⎤ ⎢1 − − ⎡1 −5 5⎤
1 1 ⎥ ⎢
M −1 ⎢ ⎥
= ⎢0 1 0 ⎥ , M = ⎢ 0 1 0 ⎥ = 0 1 0 ⎥⎥
⎢ ⎥ ⎢
⎢⎣0 0 1 ⎥⎦ ⎢0 0 1 ⎥ ⎢⎣ 0 0 1 ⎥⎦
⎣⎢ ⎦⎥
Trong đó : dòng 1 của M-1 là dòng 2 của A. Dòng 2 của M bằng dòng 2 của A chia cho phần tử
cột 1 lấy dấu âm, trừ vị trí ở chính cột 1 thì bằng 1 chia cho nó.
⎡7 − 14 8⎤
A2 = M-1 A M = ⎢⎢1 0 0⎥⎥ = P
⎢⎣0 1 0⎥⎦
Vậy giá trị riêng là nghiệm của phương trình λ3 - 7λ2 + 14λ - 8 = 0
⇔ (λ - 2)(λ - 1)(λ - 4) = 0 ⇔ λ = 2; λ = 1; λ = 4.
b) Thuật toán Đan-nhi-lep-ski tìm giá trị riêng
Input: n, ma trận A= (ai,j) (i,j = 1, 2, ..., n)
Output: Các giá trị riêng của ma trận A = (ai,j)
Algorithm:
1. Nhập a, ai,j (i,j = 1, 2, ..., n)
66
NCT-FIT-HNUE Computional methods and Optimization Problems
2. Định nghĩa hàm nhân 2 ma trận vuông cấp n: Nhân(input: X, Y, output: Z)
3. Lặp k = n - 1 Æ 1 (phần tử biến đổi là ak+1,k)
/* Tính hai ma trận M và M1 (M1 là nghịch đảo của ma trận M*/
for i = 1 Æ n
for j = 1 Æ n
if i ≠ k
if (i = j) {M[i, j] = 1; M1[i, j] = 1}
else {M[i,j] = 0; M1[i,j] = 0}
else {M1[i,j] = a[k+1, j];
if (j = k) M[i,j] = 1/a[k+1, k];
else M[i,j] = - a[k+1, j]/a[k+1, k]}
/* Gọi hàm nhân 2 lần */
Lần 1: Nhân(input A, M, output: B)
Lần 2: Nhân(input: M1, B; output: A)
4. Xuất ai,j (i,j = 1 Æ n)
⎡ p1 − λ p2 ... p n −1 pn ⎤ ⎡ y1 ⎤
⎢ 1 − λ ... 0 0 ⎥⎥ ⎢y ⎥
P=⎢ ⎢ 2⎥ = 0
⎢ . . ... . . ⎥ ⎢ ... ⎥
⎢ ⎥ ⎢ ⎥
⎣ 0 0 ... 1 − λ⎦ ⎣ yn ⎦
hay
⎧( p1 − λ ) y1 + p2 y2 + ... + p n −1 y n −1 + pn yn = 0
⎪y − λy 2 = 0
⎪ 1
⎨
⎪ ...
⎪⎩ y n −1 − λy n = 0
cho yn =1 Æ yn-1 = λ.
yn-2 = λyn-1= λ2, ..., y1 = λn-1
Vậy
y = (λn-1, λn-1, ..., λ, 1) (3.3.4)
Ví dụ 1-3.4. Tìm vectơ riêng của A
⎡ 2 1 0⎤
A = ⎢⎢1 3 1 ⎥⎥
⎢⎣0 1 2⎥⎦
Gọi y là vectơ riêng của ma trận Phơ-rê-be-mit P ~ A. Ở ví dụ 3.18 ta đã tìm được 3 giá trị riêng,
nên ta có
λ1 = 2 Æ y1 = (4, 2, 1)
λ2 = 1 Æ y2 = (1, 1, 1)
λ3 = 3 Æ y3 = (16, 4, 1)
Tìm M :
⎡1 0 0 ⎤ ⎡1 − 5 5⎤ ⎡1 − 5 5 ⎤
M = M 1 M 2 = ⎢⎢0 1 − 2⎥⎥ ⎢⎢0 1 0⎥⎥ = ⎢⎢0 1 − 2⎥⎥
⎢⎣0 1 0 ⎥⎦ ⎢⎣0 0 1⎥⎦ ⎢⎣0 0 1 ⎥⎦
⎡1 − 5 5 ⎤ ⎡4⎤ ⎡− 1⎤
x = ⎢⎢0 1 − 2⎥⎥ ⎢⎢2⎥⎥ = ⎢⎢ 0 ⎥⎥
1
⎢⎣0 0 1 ⎥⎦ ⎢⎣1 ⎥⎦ ⎢⎣ 1 ⎥⎦
68
NCT-FIT-HNUE Computional methods and Optimization Problems
⎡1 − 5 5 ⎤ ⎡1⎤ ⎡ 1 ⎤
x = ⎢⎢0 1 − 2⎥⎥ ⎢⎢1⎥⎥ = ⎢⎢− 1⎥⎥
2
⎢⎣0 0 1 ⎥⎦ ⎢⎣1⎥⎦ ⎢⎣ 1 ⎥⎦
⎡1 − 5 5 ⎤ ⎡16⎤ ⎡1 ⎤
x = ⎢⎢0 1 − 2⎥⎥ ⎢⎢ 4 ⎥⎥ = ⎢⎢2⎥⎥
3
⎢⎣0 0 1 ⎥⎦ ⎢⎣ 1 ⎥⎦ ⎢⎣1 ⎥⎦
BÀI TẬP
1. Giải các hệ phương trình Ax = b sau đây bằng phương pháp khử Gauss. So sánh với nghiệm
đúng x*
⎛5 0 1⎞ ⎛11⎞ ⎛ 2⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
a) A = ⎜ 1 3 - 1 ⎟' b = ⎜ 4 ⎟ , x* = ⎜1 ⎟ .
⎜ - 3 2 10 ⎟ ⎜6 ⎟ ⎜1 ⎟
⎝ ⎠ ⎝ ⎠ ⎝ ⎠
⎛ 2 0 - 1⎞ ⎛ − 3⎞ ⎛ − 1⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
b) A = ⎜ - 1 3 1 ⎟' b = ⎜ 2 ⎟ , x* = ⎜ 0 ⎟ .
⎜ 1 -1 4 ⎟⎠ ⎜3 ⎟ ⎜1 ⎟
⎝ ⎝ ⎠ ⎝ ⎠
⎛ 2 0 -1 ⎞ ⎛1 ⎞ ⎛1 ⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
c) A = ⎜ 1 - 3 1 ⎟' b = ⎜ 2 ⎟ , x* = ⎜ 0 ⎟ .
⎜ 1 1 3⎟ ⎜ 4⎟ ⎜1 ⎟
⎝ ⎠ ⎝ ⎠ ⎝ ⎠
69
NCT-FIT-HNUE Computional methods and Optimization Problems
⎛ 2 -1 0 ⎞ ⎛ − 2⎞ ⎛ − 1⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
d) A = ⎜ 2 5 - 2 ⎟' b = ⎜ − 4 ⎟, x* = ⎜ 0 ⎟ .
⎜ 1 - 1 3⎟ ⎜ 2 ⎟ ⎜1 ⎟
⎝ ⎠ ⎝ ⎠ ⎝ ⎠
⎛ 3 -1 1 ⎞ ⎛ − 4⎞ ⎛ − 2⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
e) A = ⎜ - 1 3 1 ⎟' b = ⎜ 4 ⎟, x* = ⎜ 0 ⎟ .
⎜ 1 - 1 3⎟ ⎜ 4 ⎟ ⎜ 2 ⎟
⎝ ⎠ ⎝ ⎠ ⎝ ⎠
⎛3 0 -1 1 ⎞ ⎛ 4⎞ ⎛ 1 ⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜2 2 1 - 1⎟ ⎜ − 1⎟ ⎜ −1 ⎟
f) A = ⎜ ⎟ ' b = ⎜ ⎟, x* = ⎜ .
2 -5 1 0 6 −1 ⎟
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎝1 1 -1 1 ⎠ ⎝1 ⎠ ⎝ 0 ⎠
3. Cho hệ phương trình Ax = b với
⎡ 2 -1 0 ⎤ ⎛ −1 ⎞
⎢ ⎥ ⎜ ⎟
A = ⎢- 1 2 - 1 ⎥ , b = ⎜ 5 ⎟ .
⎢⎣ 0 - 1 2⎥⎦ ⎜ − 3⎟
⎝ ⎠
Tìm nghiệm của hệ bằng phương pháp khử Gauss.
Hãy đề xuất một phương pháp lặp giải hệ trên và biện luận sự hội tụ của nó.
6. Sau các phép biến đổi thích hợp hãy sử dụng phương pháp lặp Gauss-Seidel giải hệ phương
trình sau với sai số 10-3
x1 + 3 x2 + 9 x3 + x4 = 10
x1 + x2 + x3 + 5 x4 = 6
2 x1 + 7 x2 + 3 x3 + 2 x4 = 15
4 x1 + 2 x2 + x3 + x4 = 9.
7. Có thể áp dụng phương pháp lặp gì để giải hệ sau đây và lý giải vì sao
x1 − x2 = 10
− x1 + 2 x2 − x3 = 6
− x2 + 2 x3 − x4 = 10
− x3 + 2 x4 = 9.
10. Dùng phương pháp đồ thị giải hệ phương trình sau
2x + y = 2
2 x + 1.01 y = 2.01
Giải thích vì sao nghiệm thu được có thể sai khác rất lớn so với nghiệm đúng là x1 = 0.5, x2 = 1.
70
NCT-FIT-HNUE Computional methods and Optimization Problems
y x ,i − f ' ( x i ) = O ( h ) , (4-1.1)
y x ,i − f ' ( x i ) = O ( h ) , (5-1.1)
y 0 − f ' ( xi ) = O ( h 2 ) . (6-1.1)
x ,i
Ước lượng trên được chứng minh nhờ khai triển Taylor đến thành phần chứa đạo hàm cấp 4 với
giả thiết f ( x) ∈ C ( 4) [a, b].
71
NCT-FIT-HNUE Computional methods and Optimization Problems
Để xây dựng các công thức tính đạo hàm với sai số cấp 2 tức là có ước lượng O(h 2 ) tại các
điểm mút x0 và xn , cũng như tính đạo hàm cấp cao hơn ta sẽ sử dụng công cụ nội suy hàm số.
Trong giáo trình giải tích toán học ta biết rằng nếu f (x) có nguyên hàm là hàm F (x) thì có thể
tính tích phân trên một cách đơn giản nhờ công thức Newton- Leibnitz
b
∫ f ( x)dx = F (b) − F (a). (2-2.1)
a
Tuy nhiên trong thực tế ta gặp các hàm f (x) mà nguyên hàm của nó không thể biểu diễn bằng
các hàm số sơ cấp hoặc ta không tìm được nguyên hàm của chúng. Trong những trường hợp ấy
công thức (2-2.1) không có tác dụng. Vì thế người ta phải tìm cách tính gần đúng tích phân xác
định.
Tính gần đúng tích phân còn có ý nghĩa khi hàm f (x) không cho ở dạng biểu thức toán học mà
cho dưới dạng bảng số.
Ý tưởng cơ bản của các phương pháp tính gần đúng tích phân là chia nhỏ khoảng tích phân [a, b]
thành các đoạn con và trên mỗi khoảng con xấp xỉ hàm số bởi một đa thức. Với các đa thức ta có
thể tìm được các nguyên hàm của chúng, do đó có thể áp dụng công thức Newton- Leibnitz tính
tích phân trên mỗi đoạn con. Tích phân trên toàn đoạn [a, b] sẽ là tổng các tích phân trên từng
khoảng con.
Chia đoạn [a, b] thành n đoạn con [ xi , xi +1 ] (i = 0, n − 1) bởi các điểm xi = a + ih, (i = 0, n) với
1
h = (b − a) / n. Ký hiệu xi +1 / 2 = ( xi + xi +1 ) là điểm giữa của mỗi đoạn con.
2
Ta có
b n −1 xi +1
∫ f ( x)dx = ∑ ∫ f ( x)dx (1-2.2.)
a i =0 xi
Ta xấp xỉ
xi +1
∫ f ( x)dx ≈ f ( xi +1 / 2 )h (2-2.2)
xi
72
NCT-FIT-HNUE Computional methods and Optimization Problems
Về mặt hình học, điều đó có nghĩa là hình thang cong giới hạn bởi đường cong y = f (x) trên
đoạn [ xi , xi +1 ] được xấp xỉ bởi hình chữ nhật trung tâm với đường cao bằng giá trị của hàm f (x)
tại điểm giữa xi +1 / 2 .
Từ (1-2.2) và (2-2.2) suy ra công thức hình chữ nhật trung tâm tính gần đúng tích phân xác định
trên đoạn [a = x0, xn = b]:
n −1
I CN ≈ ∑ f ( xi +1/ 2 )h (3-2.2)
i =0
Từ đó suy ra ước lượng của sai số toàn phần của công thức hình chữ nhật trung tâm là
M2
E ≤ (b − a)h 2 (6-2.2)
24
c) Thí dụ
1
dx
Tính gần đúng tích phân I = ∫ bằng công thức hình chữ nhật trung tâm với số đoạn chia n
0
1+ x
=5 và đánh giá sai số.
Giải. Với h = 0.2 ta lập bảng giá trị
i+1/2 xi+1/2 yi+1/2
0 0.1000 0.9091
1 0.3000 0.7692
2 0.5000 0.6667
3 0.7000 0.5882
4 0.9000 0.5263
Σ=3.4595
Bây giờ ta ước lượng sai số của giá trị tính được. Ta có
73
NCT-FIT-HNUE Computional methods and Optimization Problems
1 2
f ' ( x) = − , f ' ' ( x) = .
(1 + x) 2 (1 + x) 3
Do đó M 2 = max f ' ' ( x) = 2 . Theo công thức (6-2.2) ta có ước lượng sai số
0 ≤ x ≤1
2
| E |≤ (0.2) 2 = 0.0033. Vậy I = 0.6919 ± 0.0033 = (0.6886, 0.6952) trong khi giá trị đúng của
24
tích phân là I = ln 2 = 0.6931.
yi+1
yi
x0 x1 xi xi+1 xn
Khi đó
xi +1
1
∫ f ( x)dx ≈ ( yi + yi+1 )h, (1-2.3)
xi 2
trong đó để viết cho gọn ta đã ký hiệu yi = f ( xi ) . Do đó
b n −1
h
I = ∫ f ( x)dx ≈ ∑ ( yi + yi+1 ).
a i =0 2
Vậy ta có công thức hình thang tính gần đúng tích phân xác định là
⎛ y + yn ⎞
I ht ≈ h⎜ 0 + y1 + ... + y n−1 ⎟ (2-2.3)
⎝ 2 ⎠
Có thể viết (2-2.3) trong dạng
⎛ n y + yn ⎞
I ht ≈= h⎜ ∑ yi − 0 ⎟ (2’-2.3)
⎝ i =0 2 ⎠
hoặc
b−a
I ht ≈ ( y0 + 2 y1 + ... + 2 yn−1 + yn ) (3-2.3)
2n
74
NCT-FIT-HNUE Computional methods and Optimization Problems
b) Đánh giá sai số
Người ta đã chứng minh được ước lượng của sai số địa phương là
M2 3
ei ≤ h . (4-2.3)
12
Do đó sai số toàn phần của công thức hình thang sẽ là
M2
E ≤ (b − a )h 2 . (5-2.3)
12
c) Ví dụ
1
dx
Tính gần đúng tích phân I = ∫ bằng công thức hình thang với số đoạn chia n =10 và đánh
0
1+ x
giá sai số.
Giải. Ta có h = 0.1 và bảng giá trị
i xi yi
0 0.0000 1.0000
1 0.1000 0.9091
2 0.2000 0.8333
3 0.3000 0.7692
4 0.4000 0.7143
5 0.5000 0.6667
6 0.6000 0.6250
7 0.7000 0.5882
8 0.8000 0.5556
9 0.9000 0.5263
10 1.0000 0.5000
Σ=7.6877
Theo công thức (2’-2.3)
⎛ 10 y + y10 ⎞
I ht ≈ h⎜ ∑ yi − 0 ⎟ = 0.1 * (7.6877 – 1.5000/2 ) = 0.6938.
⎝ i =0 2 ⎠
Bây giờ ta ước lượng sai số của giá trị tính được. Ta có
1 2
f ' ( x) = − , f ' ' ( x) = .
(1 + x) 2 (1 + x) 3
75
NCT-FIT-HNUE Computional methods and Optimization Problems
Do đó M 2 = max f ''( x) = 2. . Theo công thức (5-2.3) ta có ước lượng sai số
0≤ x ≤1
2
| E |≤ (0.1) 2 = 0.0017.
12
Vậy I = 0.6938 ± 0.0017 trong khi giá trị đúng của tích phân là I = ln 2 = 0.6931.
( x − xi +1 / 2 )( x − xi +1 ) ( x − xi )( x − xi +1 )
f ( x) ≈ L2i ( x) = yi + yi +1 / 2
( xi − xi +1 / 2 )( xi − xi +1 ) ( xi +1 / 2 − xi )( xi +1 / 2 − xi +1 )
( x − xi )( x − xi +1 / 2 )
+ yi +1
( xi +1 − xi )( xi +1 − xi +1 / 2 )
2 4
= 2
yi ( x − xi +1 / 2 )( x − xi +1 ) − 2 yi +1 / 2 ( x − xi )( x − xi +1 )
h h
2
+ 2 yi +1 ( x − xi )( x − xi +1 / 2 ).
h
Đặt
xi + 1 xi + 1
I i = ∫ f ( x)dx ≈ ∫ L2i ( x)dx.
xi xi
Công thức (1-2.4) còn gọi là công thức parabol vì nó nhận được nhờ thay đường cong y = f(x)
bởi parabol qua 3 điểm (xi, yi), (xi+1/2, yi+1/2), (xi+1, yi+1).
Có thể viết lại công thức (1-2.3) trong dạng thuận tiện cho tính toán như sau
h⎛ n y + y n ⎞ 2h n
I sim ≈ ⎜ ∑ yi − 0 ⎟ + ∑ yi +1 / 2 (2-2.4)
3 ⎝ i =0 2 ⎠ 3 i =0
Nhận xét 1. Để tránh dùng chỉ số không nguyên người ta thường chia đoạn [a, b] thành 2n phần
bằng nhau với độ rộng h = (b - a)/(2n) và trên mỗi đoạn kép [x2i, x2i+2] xấp xỉ hàm f(x) bởi bởi
parabol qua 3 điểm (xi, yi), (xi+1, yi+1), (xi+2, yi+2). Khi đó công thức Simpson có dạng:
76
NCT-FIT-HNUE Computional methods and Optimization Problems
b−a
I sim = ( y 0 + 4 y1 + 2 y 2 + ... + 2 y 2 n − 2 + 4 y 2 n −1 + y 2 n (3-2.4)
6n
Nhận xét 2.Từ các công thức (3-2.2), (3-2.3) và (2-2.4) suy ra được:
I sim = ( I ht + 2 I cn ) / 3 . (4-2.4)
trong đó
M 4 = max f ( 4) ( x) . (6-2.4)
a ≤ x ≤b
Từ công thức trên ta nhận được đánh giá sai số toàn phần của công thức Simpson
M 4 (b − a) 4
E = I − I sim ≤ h . (7-2.4)
2880
Từ đây ta thấy rằng công thức Simpson đúng cho mọi đa thức bậc 3.
c) Ví dụ
1
dx
Tính gần đúng tích phân I = ∫ bằng công thức Simpson với số đoạn chia n =5 và đánh giá
0
1 + x
sai số.
Giải. Ta có h = 0.2. Lập bảng giá trị của hàm tại các điểm nút và điểm giữa
i xi yi yi
0 0.0000 1.0000
1/2 0.1000 0.9091
1 0.2000 0.8333
1+1/2 0.3000 0.7692
2 0.4000 0.7143
2+1/2 0.5000 0.6667
3 0.6000 0.6250
3+1/2 0.7000 0.5882
4 0.8000 0.5556
4+1/2 0.9000 0.5263
5 1.0000 0.5000
S1=3.4595 S2=4.2282
77
NCT-FIT-HNUE Computional methods and Optimization Problems
Theo công thức (2-2.4) ta có
h⎛ 5 y + y 5 ⎞ 2h 4
I sim = ⎜ ∑ yi − 0 ⎟+ ∑ yi +1 / 2
3 ⎝ i =0 2 ⎠ 3 i =0
24 × (1 − 0)
E = I − I sim ≤ × 0.2 4 = 0.00001333.
2880
Kết quả tính toán và ước lượng trên cho thấy công thức Simpson có độ chính xác rất cao (so
sánh với kết quả tính bằng công thức hình thang ở tiểu mục trước!).
2.5. Các thuật toán “hcn, ht, sim” tính gần đúng tích phân xác định
Input: a, b, n, hàm f (x) trên đoạn [ a, b]
b
Output: Ihcn, Iht, Isim là các giá trị gần đúng của tích phân I = ∫ f ( x)dx tương ứng bởi các
a
công thức hình chữ nhật trung tâm, hình thang, và Simpson.
Algorithm:
1. Khởi tạo
h=(b-a)/n;
x1=a+h/2; x2=a;
Icn=f(x1); Iht=f(x2);
2. Lặp for i=1 Æ n-1
2.1. x1=x1+h;
2.2. x2=x2=h;
2.3. Icn=Icn+f(x1);
2.4. Iht=Iht+f(x2);
3. Gán
Icn=h*Icn;
Iht=h*Iht;
Isim=(Iht+2*Icn)/3;
4. return Icn, Iht, Isim
78
NCT-FIT-HNUE Computional methods and Optimization Problems
1.1. Ví dụ mở đầu
a) Phát biểu bài toán
. Một công ty sản xuất 2 loại sản phẩm A và B
. Sử dụng ba loại nguyên liệu I, II, và II.
. Chi phí nguyên liệu (số lượng nguyên liệu) để sản xuất ra hai sản phẩm A và B cho trong bảng
sau:
Sản phẩm A B
Nguyên liệu
I 2 1
II 1 2
III 0 1
. Công ty dự trữ ba loại nguyên liệu I, II, III với số lượng tương ứng là 8, 7, 3.
. Tiền lãi của một đơn vị sản phẩm A là 4 triệu đồng; của một đơn vị sản phầm B là 5 triệu đồng
Yêu cầu: Lập kế hoạch sản xuất (sản xuất bào nhiêu mỗi loại sản phẩm) để tiền lãi thu về nhiều
nhất với hạn chế về nguyên liệu đã cho.
b) Mô hình toán học của bài toán
Xét vectơ cột x = (x1, x2)t, trong đó x1 và x2 lần lượt là số lượng sản phẩm A và B tương ứng cần
sản xuất. Theo bài toán ta có mô hình:
f(x) = 4x1 + 5x2 Æ max
⎧2 x1 + x2 ≤ 8
⎪x + 2 x2 ≤ 7
⎪ 1
⎨
⎪ x2 ≤ 3
⎪⎩ x j ≥ 0 , j = 1,2
Bài toán trên được xem là thuộc dạng bài toán qui hoạch tuyến tính vì các hàm g1(x) = 2x1 + x2,
g2(x) = x1 + 2x2, g3(x) = x2 là các hàm tuyến tính.
79
NCT-FIT-HNUE Computional methods and Optimization Problems
⎧ n
g
⎪ i
D⎨
( x ) = ∑
j =1
ai , j x j (≤, ≥, =) bi , i = 1, m (2 − 1.2)
⎪ x ≥ 0, j = 1, n (3 − 1.2)
⎩ j
⎧ n
⎧ n
⎪ g i ( x) = ∑ ai , j x j ≤ bi , i = 1, m
g
⎪ i
D⎨
( x ) = ∑
j =1
ai , j x j = bi , i = 1, m
D⎨ j =1 ⎪ x ≥ 0, j = 1, n
⎪ x ≥ 0, j = 1, n ⎩ j
⎩ j
Hoặc viết dưới dạng ma trận như sau
f(x) = <c, x> Æ max f(x) = <c, x> Æ max
⎧ Ax ≤ b ⎧ Ax = b
⎨ ⎨
⎩x ≥ 0 ⎩x ≥ 0
n
trong đó A = (ai,j)m × n; <C, x> = ∑c x
j =1
j j ; x = (x1, x2, ..., xn)t; b = (b1, b2, ..., bn)t.
Các bài toán QHTT có thể qui về dạng chuẩn tắc và dạng chính tắc nhờ các phép biến đổi sau
đây :
(1) Một rạng buộc ≥ đưa đ\ực về ràng buộc ≤ nhờ việc nhân hai vế với -1
n n n
∑a
j =1
i, j ≥ bi ⇔ −∑ ai , j ≤ −bi ⇔ ∑ a 'i , j ≤ b'i
j =1 j =1
⎧n
n ⎪⎪∑ ai , j ≥ bi
∑a i, j = bi ⇔ ⎨ jn=1
j =1 ⎪∑ ai , j ≤ bi
⎪⎩ j =1
80
NCT-FIT-HNUE Computional methods and Optimization Problems
(3) Đưa ràng buộc ≤ và ≥ về ràng buộc = nhờ việc thêm biến phụ
n n
(i) ∑a
j =1
i, j ≥ bi ⇔ ∑ ai , j − yi = bi
j =1
n n
(ii) ∑a
j =1
i, j ≤ bi ⇔ ∑ ai , j + yi = bi
j =1
(4) Một biến xj không phụ thuộc dấu có thể thay bằng hai biến phụ thuộc dấu
xj = xj+ - xj- với xj+ và xj- > 0
Ví dụ 1-1.3 Xét bài toán
f(x) = x1 + 4x2 -3x3 Æ max
⎧2 x1 + x2 + 3 x3 ≤ 7
⎪4 x − 3 x2 − 2 x3 ≥ 9
⎪ 1
⎨
⎪ x1 + 2 x2 − x3 = 2
⎪⎩ x j ≥ 0, j = 1,2
Thêm biến phụ x4 ≥ 0, x5 ≥ 0 và thay biến x3 không phụ thuộc dấu bởi hai biến phụ thuộc dấu: x3
= x3+ - x3- với x3+, x3- > 0 ta được bài toán mới tương đương là một bài toán dạng chính tắc:
f(x) = x1 + 4x2 -3(x3+ - x3-) + 0.x4 + 0.x5Æ max
⎧2 x1 + x2 + 3( x 3+ − x3− ) + x4 = 7
⎪
⎪4 x1 − 3 x2 − 2( x 3+ − x3− ) − x5 = 9
⎨
⎪ x1 + 2 x2 − ( x 3+ − x3− ) = 2
⎪ x j ≥ 0, j = 1,2,3
⎩
2. Đặc điểm của tập các phương án của bài toán QHTT
n
với α i ≥ 0, i = 1, m và ∑α
i =1
i =1
Định nghĩa 2-2.1. Đoạn thẳng: Đoạn thẳng đi qua hai điểm A và B ∈ Rn, kí hiệu là dAB, được
định nghĩa là một tổ hợp lồi của tập hai điểm A và B, tức là:
dAB = { M ∈ Rn | M = αA + (1-α)B, 0 ≤ α ≤ 1}
Ví dụ 1-2.1 Trong mặt phẳng R2:
81
NCT-FIT-HNUE Computional methods and Optimization Problems
3 8
-∞ +∞
A M B
Đoạn thẳng dAB gồm các điểm M nằm giữa A và B, tức là:
dAB = { M ∈ R | M = αA + (1-α)B, 0 ≤ α ≤ 1}
Định nghĩa 3-2.1. Tập lồi: Cho S ⊂ Rn. Tập S được gọi là một tập lồi nếu với hai điểm A và B
bất kì trong S thì đoạn thẳng dAB nằm trọn trong S. Nói cách khác, với 2 điểm bất kì x1, x2 ∈ S
thì x = αx1 + (1-α)x2 ∈ S với ∀ α ∈ [0, 1].
Ví dụ 2-2.1 Trong mặt phẳng R2, các đa giác lồi là các tập lồi.
A
B
Định nghĩa 4-2.1. Điểm cực biên: Xét các điểm x trong tập lồi S ⊂ Rn. Điểm x* ∈ S được gọi là
điểm cực biên nếu x* không thể biểu diễn được dưới dạng tổ hợp lồi thật sự của hai điểm phân
biệt trong S.
Ví dụ 3-2.1 Trong mặt phẳng R2, các đỉnh của các đa giác lồi là các điểm cực biên.
Định nghĩa 5-2.1. Đa diện lồi và tập lồi đa diện
• Đa diện lồi là tập S chứa các điểm là tổ hợp lồi của m điểm x1, …, xm nào đó cho trước.
• Đa diện lồi là một tập lồi.
• Trong đa diện lồi, nếu ta loại bỏ những điểm mà nó có thể biểu diễn được dưới dạng tổ
hợp lồi của các điểm x1, …, xm còn lại, thì các điểm còn lại đó chính là các điểm cực biên
của đa diện lồi. Chúng sinh ra đa diện lồi.
• Tập lồi đa diện là một tập lồi không giới nội
Ví dụ 3-2.1 Trong mặt phẳng R2, các đa giác lồi là các đa diện lồi, trong đó mọi điểm bên trong
đều có thể biểu diễn dưới dạng tổ hợp lồi của các đỉnh đa giác - các điểm cực biên. Nếu một đa
giác không có cạnh thì phần mặt phẳng tạo bởi đa giác là một tập lồi đa diện.
x2 y2
x3 y3
x1 y1
x4 y4
x5 y5
Đa diện lồi Tập lồi đa diện
82
NCT-FIT-HNUE Computional methods and Optimization Problems
2.2. Đặc điểm của tập các phương án của bài toán QHTT
Định lí 1-2.2. Tập tất cả các phương án D của bài toán QHTT là một tập lồi.
Chứng minh. Xét bài toán QHTT chính tắc (chuẩn tắc chứng minh tương tự). Lấy 2 điểm bất kì
x1, x2 ∈ D. Ta có Ax1 = b và Ax2 = b. Xét mọi điểm x mà x = αx1 + (1-α)x2 với α ∈ [0, 1] ta có
Ax = A(αx1 + (1-α)x2) = αAx1 + (1-α)Ax2 = αb + (1-α)b = b, do đó x ∈ D. Vậy D là tập lồi.
Nhận xét: Tập phương án D là tập lồi, có ba khả năng
• D=∅
• D là đa diện lồi (tập lồi bị chặn)
• D là tập lồi đa diện (tập lồi không bị chặn)
Hệ quả 1-1.2:
• Nếu D là một đa diện lồi khác rỗng thì bài toán QHTT chắc chắn có phương án tối ưu.
• Nếu D không giới nội nhưng hàm mục tiêu bị chặn trên D thì cũng chắc chắn có phương
án tối ưu.
• Nếu D có phương án tối ưu thì có ít nhất một phương án tối ưu.
• Việc chọn phương án tối ưu tương đương với việc chọn các điểm cực biên của D (các
đỉnh của D). Nói cách khác, để tìm phương án tối ưu thì ta chỉ cần tìm trên các phương án
cực biên trong tập phương án D.
Ví dụ 1-2.2. Minh họa ý nghĩa hình học của định lý 1-2.2 qua lời giải “bài toán mở đầu” bằng
phương pháp hình học
f(x) = 4x1 + 5x2 Æ max
⎧2 x1 + x2 ≤ 8
⎪ x1 + 2 x2 ≤ 7
⎪
⎨x ≤ 3
⎪ 2
⎪⎩ x j ≥ 0, j = 1,2
83
NCT-FIT-HNUE Computional methods and Optimization Problems
⎛ x1 ⎞
⎜ ⎟
⎜x ⎟
Ax = b ⇔ ( A1 , A2 ,..., An ) ⎜ 2 ⎟ = b
...
⎜ ⎟
⎜x ⎟
⎝ n⎠
⇔ ( A1 x + A2 x2 + ... + An xn ) = b
84
NCT-FIT-HNUE Computional methods and Optimization Problems
(3) Dấu hiệu nào của pacb đang xét để chứng tỏ bài toán không có patu? Điều này dẫn
đến Định lí 2-3.2 dưới đây để kiểm tra dấu hiệu bài toán không có lời giải.
(4) Bằng cách nào để tìm pacb mới tốt hơn pacb cũ? Điều này dẫn đến Định lí 3-3.2 dưới
đây để cải thiện hàm mục tiêu.
⎧ x1 + 2 x2 + x3 = 4
⎪
D : ⎨ x1 + x2 + x4 = 2
⎪ x ≥ 0, j = 1,4
⎩ j
Nhận xét : x1 =(0, 0 , 4, 2) và x2 = (0, 2, 0 , 0)t là các phương án thuộc D. Phương án x1 không
suy biến ứng với J = {3, 4}. Phương án x2 suy biến và J0 = {2}. Ta có thể bổ sung vào J0 để
được tập J sao cho |J| = 2, ví dụ J = {1, 2}, hoặc J = {2, 3}, hoặc J = {2, 4}, cách nào cũng
được, nhưng khi đã chọn thì phải cố định. Giả sử chọn J = {1, 2} thì các biến x12 và x22 là các
biến cơ sở, còn các biến x32 và x42 là các biến phi cơ sở.
• Từ các giả định trên ta có ngay kết quả sau đây :
Vì x0 là pacb nên nó thỏa mãn ràng buộc của bài toán, hay
∑x
j∈J
0
j Aj = b (1-3.2)
85
NCT-FIT-HNUE Computional methods and Optimization Problems
Vì hệ vectơ {Aj}j ∈ J là độc lập tuyến tính nên mọi vectơ cột Ak, k = 1,2,…, n đều có thể biểu
diễn được thông qua hệ đó dưới dạng tổ hợp tuyến tính của các vectơ trong hệ :
Ak = ∑ x j ,k A j (2-3.2)
j∈J
Rõ ràng trong công thức (2-3.2) khi k ∈ J thì xk,k =1 và xj,k 0 với ∀ j ≠ k. Do đó ta chỉ cần xét
Ak với ∀ k ∉ J.
Ví dụ 2-3.2 Xét lại bài toán ở vị 1-3.2 ở trên
⎡a ⎤ ⎡a ⎤ ⎡a ⎤ ⎡1⎤ ⎡1⎤ ⎡0 ⎤
k = 1, A1 = x31A3 + x41A4 hay ⎢ 11 ⎥ = x31 ⎢ 13 ⎥ + x41 ⎢ 14 ⎥ ⇔ ⎢ ⎥ = x31 ⎢ ⎥ + x41 ⎢ ⎥
⎣a21 ⎦ ⎣a23 ⎦ ⎣a24 ⎦ ⎣1⎦ ⎣0 ⎦ ⎣1 ⎦
⎧a = x31.a13 + x41a14
Æ ⎨ 11 Æ tổng quát là ai ,k = ∑ x j ,k ai , j , i = 1, m (1)
⎩a21 = x31a23 + x42 a24 j∈J
⎧ x = a14 = 1
Æ ⎨ 31 Æ tổng quát là x j ,k = ai ,k (2)
⎩ x41 = a21 = 1
Với k = 2 cũng tương tự như thế ta rút được các công thức (1) và (2). Qua ví dụ trên ta rút ra
được kết luận tổng quát như sau:
Các hệ số xj,k trong (2-3.2) có thể tính được nhờ giải hệ sau :
ai ,k = ∑ x j ,k ai , j , i = 1, m (3-3.2)
j∈J
tức là xj,k bằng chính các thành phần tương ứng của vectơ Ak cần tình.
• Ta cần lập một đại lượng ∆k quan trọng sau đây :
∆ k = ∑ x j , k c j − ck (5-3.2)
j∈J
trong đó các hệ số xj,k được xác định trong công thức (2-3.2). Trong công thức (5-3.2) ở trên,
tổng Σ chính là giá trị của hàm mục tiêu tại các thành phần cơ sở biểu thị cho Ak. Vậy ∆k biểu
thị độ lệch của hàm mục tiêu trong cơ sở biểu thị cho Ak với hệ số của hàm mục tiêu tại thành
phần thứ k.
Bổ đề 1-3.2: Giả sử x = (x1, x2, …, xn)t là một phương án bất kỳ, tức x ∈ D, của bài toán QHTT
chính tắc đã cho. Khi đó ta có:
86
NCT-FIT-HNUE Computional methods and Optimization Problems
(i) x j = x 0j − ∑ xk x j ,k , j∈J (6-3.2)
k∉J
(ii) f ( x ) = f ( x 0 ) − ∑ xk ∆ k (7-3.2)
k∉J
n
Chứng minh: (i) x ∈ D Æ x = ∑ xi Ai = b , tách tổng này thành hai tổng:
i =1
⇔ ∑ x j A j = ∑ x 0j A j − ∑ xk ∑ x j ,k A j
j∈J j∈J k∉J j∈J
n
(ii) f ( x) = ∑ c j x j = ∑ c j x j + ∑ ck xk
j =1 j∈J k∉J
⎛ ⎞
= ∑ c j ⎜⎜ x 0j − ∑ xk x j ,k ⎟⎟ + ∑ ck xk , do thay xj bởi vế phải trong (i)
j∈J ⎝ k∉J ⎠ k∉J
⎛ ⎞
= f ( x 0 ) − ∑ ⎜⎜ ∑ x j ,k c j − ck ⎟⎟xk thay biểu thức trong ngoặc bởi ∆k trong (5-3.2)
k∉J ⎝ j∈J ⎠
f ( x ) = f ( x 0 ) − ∑ xk ∆ k
k∉J
trong đó xk ≥ 0, ∆k ≥ 0 do đó tổng sau dấu trừ mang dấu dương, suy ra f(x) ≤ f(x0) với ∀ x ∈ D,
do đó x0 là patu.
Định lý 2-3.2. Dấu hiệu vô nghiệm
Nếu tồn tại k sao cho ∆k < 0 và xj,k ≤ 0 ∀j ∈ J thì bài toán không có patu.
87
NCT-FIT-HNUE Computional methods and Optimization Problems
Chứng minh. Ta có thể chỉ ra một pacb x1 mà xj1= xj0 - θxj,k với θ > 0. Vì xj,k ≤ 0 thì xj1 > 0 và
hàm mục tiêu f(x1) = f(x0) - θ∆k > f(x0) (lớn hơn f(x0) vì θ > 0 và ∆k < 0). Ta thấy f(x1) Æ ∞ khi
θ Æ ∞, do đó bài toán vô nghiệm.
Định lý 3-3.2. Cải thiện hàm mục tiêu
Nếu định lý (1-3.2) và (2-3.2) không thỏa mãn thì khi đó với ∆s > 0 nào đó, ta tìm
được một pacb x1 mới nhận xs1 làm biến cơ sở (mới) và thỏa mãn f(x1) > f(x0), do
đó x1 là pacb tốt hơn pacb x0.
Chứng minh. Trong nội dung chứng minh định lý (3-3.2), ta chỉ cần quan tâm đến cách tìm ra
pacb x1. Vì thế các nội dung sau đây là quan trọng vì nó được sử dụng lại trong thuật toán đơn
hình cần xây dựng.
Ta chọn
∆ s = min{∆ k | ∆ k < 0} (8-3.2)
xr0 ⎧⎪ x 0j ⎫⎪
= min ⎨ | x j , s > 0⎬ (9-3.2)
xr , s ⎪⎩ x j ,s ⎪⎭
⎧ 1 xr0
⎪ xs = =θ (a)
⎨ xr , s (10-3.2)
⎪ x1 = x 0 − θ . x , j ∈ J ' (b)
⎩ j j j ,s
88
NCT-FIT-HNUE Computional methods and Optimization Problems
- Công thức (b): Lấy biến cơ sở cũ ở dòng j tương ứng trừ đi tích của số θ trên dòng chính nhân
với phần tử ở cột xoay tương ứng.
Khi đó, người ta chứng minh được f(x1) > f(x0).
Trong cơ sở mới này, ta tính được các thành phần x 'j ,k mới của các vectơ Ak biểu diễn qua cơ sở
mới {Aj}j ∈ J’ nhờ các biến đổi Gauss-Jordan như sau:
⎧ ' xr ,k
⎪ x s ,k = =δ (a )
⎨ xr , s (11-3.2)
⎪ x ' = x − δ .x (b)
⎩ j ,k j ,k j ,s
f(x0) ∆1 ∆2 … ∆n
- Cột hệ số biểu diễn các hệ số của hàm mục tiêu tương ứng với các vectơ cơ sở (hoặc các biến
cơ sở)
- Cột cơ sở ghi tên các vectơ cơ sở
- Cột phương án ghi giá trị tương ứng của các biến cơ sở của phương án x0
- Các cột Aj ghi hệ số của hàm mục tiêu ở hàng trên cùng và bên dưới là các hệ số khai triển xj,k
của vectơ cột Ak trong cơ sở {Aj}j ∈ J.
- Hàng cuối cùng là giá trị của f(x0) và các giá trị ∆k.
Bước 2: Kiểm tra “Tiêu chuẩn tối ưu” theo định lý 1-3.2. Nếu mọi ∆k ≥ 0 thì x0 là patu, dừng
thuật toán.
Bước 3: Kiểm tra “Dấu hiệu vô nghiệm” theo định lý 2-3.2. Nếu tồn tại ∆k < 0 và xj,k ≤ 0 với
mọi j ∈ J thì bài toán không có patu, dừng thuật toán.
89
NCT-FIT-HNUE Computional methods and Optimization Problems
Bước 4: Nếu hai định lý 1-3.2 và 2-3.2 không thỏa mãn thì xây dựng pacb mới x1 và lập bảng
đơn hình phần thứ hai tiếp theo như nội dung chứng minh của định lý 3-3.2. Sau đó quay về
bước 2. Việc xây dựng x1 có thể tóm tắt lại như sau:
4.1. Chọn vectơ As để đưa nó vào cơ sở mới, tức là tìm s sao cho
∆ s = min{∆ k | ∆ k < 0} (8-3.2)
4.2. Chọn vectơ Ar để đưa nó ra khỏi cơ sở mới, tức là tìm r sao cho
xr0 ⎧⎪ x 0 ⎫⎪
= min ⎨ j | x j ,s > 0⎬ (9-3.2) . Cột s: cột xoay
xr , s ⎪⎩ x j ,s ⎪⎭
. Dòng r: dòng xoay
. xr,s : phần tử trục
. xjr : phần tử thuộc cột xoay.
4.3. Trong cột hệ số Cj : thay Cr bởi Cs ; Trong cột cơ sở, thay Ar bởi As, như vậy dòng r bây giờ
là dòng s, gọi là dòng chính. Và ta có cơ sở mới gồm các vectơ cột
{Aj }, j ∈ J’ = J \ {r} ∪ {s}
4.4. Tình bảng đơn hình phần tiếp theo cho cơ sở mới theo các biến đổi Gauss-Jordan sau đây
a) Chia mỗi phần tử dòng xoay cho phần tử trục (được số 1 ở vị trí trục), kết quả thu được đặt ở
dòng As, gọi là dòng chính. Các thao tác này chính là thực hiện các công thức:
(10a-3.2) (11a-3.2)
xr0 xr ,k
x =
1
s =θ xs' ,k = =δ
xr , s xr , s
b) Lấy mỗi dòng khác (cũ) trừ đi tích của dòng chính nhân với phần tử ở cột xoay tương ứng
(được số 0 ở vị trí còn lại trên cột xoay). Kết quả được đặt ở dòng mới tương ứng.
Dòng mới = Dòng cũ - Dòng chính * phần tử trên cột xoay
Thực chất các thao tác trên là thực hiện các công thức :
(10b-3.2) (11b-3.2)
⎧ x1 + 2 x2 + x3 = 8
⎪
D : ⎨2 x1 + x2 + x4 = 10
⎪ x j ≥ 0, j = 1,2,3,4
⎩
90
NCT-FIT-HNUE Computional methods and Optimization Problems
⎡1 2 1 0⎤ 0 t
A=⎢ ⎥ , Hệ số cơ sở J = {3, 4}, pacb x = (0, 0, 8, 10) .
⎣ 2 1 0 1 ⎦
Hệ số Cơ sở Phương án c1 c2 c3 c4
2 -1 3 1
cj Aj , j ∈ J A1 A 2 A3 A4
3 A3 8 1 2 1 0
1 A4 10 2 1 0 1
f(x) = 34 3 8 0 0
f(x) = 3.8 + 1.10 = 34;
∆1 = 3.1 + 1.2 - 2 = 3; ∆2 = 3.2 + 1.1 - (-1) = 8; ∆3 =∆4 = 0.
Vì ∆k ≥ 0 với ∀ k = 1,2, 3, 4 nên theo định lý về “Dấu hiệu tối ưu” thì x0 = (0, 0, 8, 10) là patu
với giá trị tối ưu của hàm mục tiêu là f(x0) = 34.
Ví dụ 2-3.4. Giải bài toán tối ưu sau bằng thuật toán đơn hình:
f(x) = -x1 + 3x2 + 4x3 - x4 Æ max
⎧2 x1 − x2 − x3 − x4 = 10
⎪
D : ⎨3 x1 + x2 − x3 + x5 = 20
⎪ x ≥ 0, j = 1,5
⎩ j
Hệ số cơ sở J = {4, 5}, pacb x0 = (0, 0, 0, 10, 20)t.
Hệ số Cơ sở Phương c1 c2 c3 c4 c5
-1 3 4 1 0
án A1 A2 A3 A4 A5
cj Aj , j ∈ J
1 A4 10 2 -1 -1 1 0
0 A5 20 3 1 -1 0 1
f(x) = 10 3 -4 -4 0 0
∆1 = 1.2 + 0.3 - (-1) = 3; ∆2 = 1.(-1) + 0.1 - 3 = -4; ∆3 = 1(-1)+0.(-1) - 4 = -4,
∆4 =∆5 = 0.
Tồn tại ∆k = ∆3 < 0 (k=3 ∉J) và xj,k = xj,3 < 0 với j = 3, 4 ∈ J nên theo định lý về “Dấu hiệu vô
nghiệm” thì bài toán đã cho không có patu.
Ví dụ 3-3.4.
Giải bài toán Lập kế hoạch sản xuất cho một xí nghiệp sao cho tiền lãi thu được lớn nhất
91
NCT-FIT-HNUE Computional methods and Optimization Problems
Máy II 3 5 1 0 12.000
Máy III 6 0 3 1 26.500
Lãi/1 đvsp 0,4 0,2 0,5 0,8
Mô hình toán học của bài toán là mô hình của bài toán QHTT dạng chuẩn tắc:
f(x) = 0.4x1 + 0.2x2 + 0.5x3 + 0.8x4 Æ max
⎧ x1 + 2 x2 + 4 x3 + 8 x4 ≤ 24000
⎪3x + 5 x2 + x3 ≤ 12000
⎪ 1
⎨
⎪6 x1 + 3 x3 + x4 ≤ 26500
⎪⎩ x j ≥ 0, j = 1,4
⎧ x1 + 2 x2 + 4 x3 + 8 x4 + x5 = 24000
⎪3 x + 5 x2 + x3 + x6 = 12000
⎪ 1
⎨
⎪6 x1 + 3x3 + x4 + x7 = 26500
⎪⎩ x j ≥ 0, j = 1,7
Minh họa cách tính theo các công thức (8Æ 11 - 3.2):
Ở lần lặp thứ nhất: J = {5, 6, 7}, x0 = (0, 0, 0, 0, 24.000, 12.000, 26.500)
Tồn tại ∆k <0 do đó x0 chưa là patu. ∆s = ∆4 = min {∆k | ∆k < 0} Æ s = 4
xr0 x50 ⎧⎪ x 0j ⎫⎪
= = min ⎨ | x j , 4 > 0⎬ Æ r = 5; phần tử trục x5,4 = 8. Cơ sở mới J = {4, 6, 7}
xr ,s x5, 4 ⎪⎩ x j , 4 ⎪⎭
• Tính dòng chính: Chia các phần tử ở dòng xoay Ar cũ cho phần tử trục và đặt vào dòng
chính As mới
- Dòng A5 : 24000/8 = 3000; 2/8 = 1/4; 4/8 = 1/2; ..
- Rồi đặt vào dòng A4 trong bảng đơn hình phần II, đó là dòng chính
• Tính các dòng còn lại: (dòng mới = dòng chính * phần tử cột xoay tương ứng)
- Cột phương án: tính biến cơ sở xj1:
. Dòng A6: 12.000 - 3000*0 = 12.000
.Dòng A7: 26.500 - 3000*1 = 23.500
- Các cột Aj: tính xj,k, ví dụ:
. Dòng A6: 3 - (1/8)*0 = 3; phần tử ở cột xoay tương ứng là 0
5 - (1/4)*0 = 5
1 - (1/2)*0 = 1
. Dòng A7: 6 - (1/8)*1 = 47/8 ; phần tử ở cột xoay tương ứng là 1
92
NCT-FIT-HNUE Computional methods and Optimization Problems
0 - (1/4)*1 = -1/4
3 - (1/2)*1 =5/2, ...
- Kể cả ∆k (mới) cũng tính = ∆k (cũ) - dòng chính * ∆s; Ví dụ ∆’1= -0,4-(1/8)*(-0,8)=-0,3.
Cơ sở Phương c1 c2 c3 c4 c5 c6 c7
0,4 0,2 0,5 0,8 0 0 0
Hệ số án A A A A A A A
Aj,j∈J 1 2 3 4 5 6 7
cj
0 A5 24.000 1 2 4 [8] 1 0 0
I 0 A6 12.000 3 5 1 0 0 1 0
0 A7 26.500 6 0 3 1 0 0 1
f(x) = 0 -0,4 -0,2 -0,5 (-0,8) 0 0 0
0,8 A4 3.000 1/8 1/4 1/2 1 1/8 0 0
II 0 A6 12.000 [3] 5 1 0 0 1 0
0 A7 23.500 47/8 -1/4 5/2 0 -1/8 0 0
f(x) = 2400 (-0,3) 0 -0,1 0 0,1 0 0
0,8 A4 2.500 0 1/24 11/24 1 1/8 -1/24 0
III 0,4 A1 4.000 1 5/3 1/3 0 0 1/3 0
0 A7 0 0 -241/24 13/24 0 -1/8 -47/24 1
f(x) = 3.600 0 0,5 0 0 0 0,1 0,1
Tại bảng đơn hình lần lặp thứ 3, ta có ∆k ≥ 0 với ∀ k = 1,..,7 nên theo định lý về “Dấu hiệu tối
ưu” thì x = (4.000, 0, 0, 2.500, 0, 0, 0) là patu.
Vậy giá trị tối ưu của hàm mục tiêu là f(x*) = 3.600, và patu là x* = (4.000, 0, 0, 2.500)
Ví dụ 4-3.4. Giải bài toán Lập kế hoạch sản xuất trong ví dụ mở đầu:
f(x) = 4x1 + 5x2 Æ max
⎧2 x1 + x2 ≤ 8
⎪x + 2 x2 ≤ 7
⎪ 1
⎨
⎪ x2 ≤ 3
⎪⎩ x j ≥ 0 , j = 1,2
⎧2 x1 + x2 + x3 = 8
⎪x + 2 x2 + x4 = 7
⎪ 1
⎨
⎪ x3 + x5 = 3
⎪⎩ x j ≥ 0, j = 1,5
93
NCT-FIT-HNUE Computional methods and Optimization Problems
Hệ số Cơ sở Phương c1 c2 c3 c4 c5
4 5 0 0 0
cj án A1 A2 A3 A4 A7
Aj,j∈J
0 A3 8 2 1 1 0 0
I 0 A4 7 1 2 0 1 0
0 A5 3 0 [1] 0 0 1
f(x) = 0 -4 (-5) 0 0 0
0 A3 5 2 0 1 0 -1
II 0 A4 1 [1] 0 0 1 -2
5 A2 3 0 1 0 0 1
f(x)= 15 (-4) 0 0 0 1
0 A3 3 0 0 1 -2 [3]
III 4 A1 1 1 0 0 1 -2
5 A2 3 0 1 0 0 1
f(x) = 19 0 0 0 4 (-3)
0 A5 1 0 0 1/3 -2/3 1
IV 4 A1 3 1 0 2/3 -1/3 0
5 A2 2 0 1 -1/3 2 0
f(x) = 22 0 0 1 2 0
Tại bảng đơn hình lần lặp thứ 4, ta có ∆k ≥ 0 với ∀ k = 1,..,5 nên x = (3, 2, 0, 0, 1) là patu. Vậy
giá trị tối ưu của hàm mục tiêu là f(x*) = 22, và patu là x* = (3, 2).
94
NCT-FIT-HNUE Computional methods and Optimization Problems
- Thêm biến giả để có một cơ sở gồm các vectơ đơn vị.
⎧ 3 x2 + 2 x4 + x5 = 15 (1) ⎡0 3 0 2 1⎤
⎪
⎪ x3 + x4 = 30 (2) A = ⎢⎢0 0 1 1 0⎥⎥
D:⎨
⎪ x1 + x2 + 3 x4 = 20 (3) ⎢⎣1 1 0 3 0⎥⎦
⎪⎩ x j ≥ 0, j = 1,5 A1 A2 A3 A4 A5
Ta có J = {5, 3, 1}, nói cách khác cơ sở là {A5, A3, A1} gồm các vectơ đơn vị, do đó các ràng
buộc (1), (2), (3) đều là ràng buộc chuẩn, trong đó :
- Ràng buộc (1) có biến chuẩn là xk(i) = x5(1) của điều kiện i = 1, tức là Ak = A5 là vec tơ cơ sở thứ
nhất có ai,k = a1,5 = 1, còn lại ai,j = 0 với ∀j = 2,3 (≠ i = 1).
- Ràng buộc (2) có biến chuẩn là xk(i) = x3(2) của điều kiện i = 2, tức là Ak = A3 là vec tơ cơ sở thứ
hai có ai,k = a2,3 = 1, còn lại ai,j = 0 với ∀j = 1, 3 (≠ i = 2).
- Ràng buộc (3) có biến chuẩn là xk(i) = x1(3) của điều kiện i = 3, tức là Ak = A1 là vec tơ cơ sở thứ
ba có ai,k = a1,3 = 1, còn lại ai,j = 0 với ∀j = 1, 2 (≠ i = 3).
Ví dụ 2-4.2. Xét Bài toán P sau đây :
f(x) = x1 + 6x2 + 3x4 - 15x5 Æ max
95
NCT-FIT-HNUE Computional methods and Optimization Problems
⎧ − x3 − 3 x4 = 0 (1) ⎡0 0 − 1 − 3 0⎤
⎪
⎪ x2 − 7 x3 − 5 x4 + 2 x5 = 5 ( 2) A = ⎢⎢0 1 -7 − 5 2⎥⎥
D:⎨
⎪ x1 + x2 + 2 x3 + 4 x4 + x5 = 2 (3) ⎢⎣1 1 2 4 1 ⎥⎦
⎪⎩ x j ≥ 0, j = 1,5 A1 A2 A3 A4 A5
Ta thấy chỉ có ràng buộc (3) là ràng buộc chuẩn với biến chuẩn là xk(i) = x1(3) của điều kiện i = 3,
tức là Ak = A1 là vec tơ cơ sở thứ ba có ai,k = a3,1 = 1, còn lại ai,j = 0 với ∀j = 1,2 (≠ i = 3).
Để tất cả các ràng buộc đều là chuẩn thì bài toán P cần thêm 2 biến giả nữa để có bài toán sau
đây :
Bài toán P2:
f(x) = x1 + 6x2 + 3x4 - 15x5 - Mx6 - Mx7Æ max (M lớn bao nhiêu tùy ý)
⎧ − x3 − 3 x4 + x6 = 0 (1)
⎪ x2 − 7 x3 − 5 x4 + 2 x5 + x7 = 5 ( 2)
⎪
D:⎨
⎪ x1 + x2 + 2 x3 + 4 x4 + x5 = 2 (3)
⎪⎩ x j ≥ 0, j = 1,5
⎡0 0 − 1 − 3 0 1 0⎤
A = ⎢⎢0 1 -7 − 5 2 0 1⎥⎥
⎢⎣1 1 2 4 1 0 0 ⎥⎦
A1 A2 A3 A4 A5 A6 A7
Khi đó ta có J = {6, 7, 1} hay {A6, A7, A1} là cơ sở gồm các vectơ đơn vị với các ràng buộc đều
là chuẩn và có ngay pacb ban đầu là x0 = (2, 0, 0, 0, M, M).
Bài toán P2 khi thêm biến giả không phải là để khử các dấu bất đẳng thức trong các ràng buộc
mà là để sinh thêm các vectơ đơn vị, đủ để tạo thành một cơ sở có hạng bằng m. Bài toán P2
cùng với số M lớn bao nhiêu tùy ý này được gọi là “bài toán M”. Vấn đề đặt ra là bài toán P2 có
tương đương với bài toán P không và giải bài toán P2 này như thế nào?
⎧n
⎪∑ ai , j x j = bi , i ∈ I1
⎪ jn=1 I1 là tập các ràng buộc chuẩn
⎪
D : ⎨∑ ak , j x j = bk , k ∈ I 2 I2 là tập các ràng buộc không chuẩn
⎪ j =1
⎪ x j ≥ 0, j = 1, n
⎪
⎩
Ví dụ : Bài toán P trong Ví dụ 2-4.2 có I1 = {3}; I2 = {1, 2}.
Bài toán M: Bài toán sau đây được gọi là bài toán phạt (hay bài toán M) của bài toán P :
f(x) = <c, x> - <M, x> Æ max (M là số dương lớn tùy ý)
96
NCT-FIT-HNUE Computional methods and Optimization Problems
⎧n
⎪∑ ai , j x j = bi , i ∈ I1
⎪nj =1
⎪
D : ⎨∑ ak , j x j + xk = bk , k ∈ I 2
⎪ j =1
⎪ x j ≥ 0, j = 1, n, xk ≥ 0, k ∈ I 2
⎪
⎩
Chú ý rằng, nếu đây là bài toán tìm min thì hàm mục tiêu cộng thêm lượng <M, x> và
aM + b ≥ cM + d
⎡a > c
⇔⎢ (*)
⎣a = c and b > d
n
Ở đây < c, x >= ∑ c j x j , < M , x >= ∑ Mxk
j =1 k∈I 2
Định lý 1-4.3. Mối quan hệ về nghiệm của bài toán P và bài toán M được cho như sau
1) Nếu bài toán M không có nghiệm thì bài toán P cũng không có nghiệm.
2) Nếu bài toán M có nghiệm ( x * , x I*2 ) và x *j = 0, ∀j ∈ I 2 thì x* là nghiệm của bài toán P.
3) Nếu bài toán M có nghiệm ( x * , xI*2 ) và ∃x *j > 0, j ∈ I 2 thì bài toán P không có phương
án chấp nhận được.
Từ định lí trên suy ra : Để giải bài toán P ta tiến hành giải bài toán M. Nếu bài toán M vô nghiệm
thì P cũng vô nghiệm. Nếu bài toán M có nghiệm nhưng có ít nhất một thành phần ứng với biến
giả mà khác 0 thì bài toán P cũng vô nghiệm, ngược lại nếu tất cả các thành phần ứng với biến
giả mà bằng 0 thì bài toán P có nghiệm là nghiệm của bài toán M nhưng bỏ đi các biến giả.
Nói cách khác, nếu bài toán M có nghiệm x = (x1, …, xn, 0, .., 0) với các thành phần 0 phía sau
thuộc I2 thì bài toán P có nghiệm là x = (x1, …, xn).
Trong bảng đơn hình giải bài toán M, dòng ∆k được tách thành 2 dòng :
- Dòng trên ứng với các hệ số M của I2 (ứng với biến giả)
- Dòng dưới ứng với các hệ số cj mà j ∈ I1 (ứng với biến thật)
Hoặc nếu không tách thành hai dòng thì ∆k viết dưới dạng ∆k = ak + bkM.
Việc xét dấu ∆k và so sánh hai số ∆k = akM + bk và ∆’k = a’kM + b’k dựa vào (*). Tức là ta có:
97
NCT-FIT-HNUE Computional methods and Optimization Problems
⎧2 x1 − x2 − x4 = 6 (1)
⎪3 x − x4 + x5 + x6 = 10 (2)
⎪ 1
D:⎨
⎪ x3 − 2 x4 + 2 x5 = 4 (3)
⎪⎩ x j ≥ 0, j = 1,6
Ta có I1 ={2, 3}, tập các ràng buộc chuẩn tương ứng với các điều kiện i = 2 và i = 3.
Để có ràng buộc chuẩn với điều kiện i = 1, ta cần thêm một biến giả x7 ở ràng buộc (1). Khi đó ta
có bài toán phạt của bài toán P sau đây:
Bài toán M: f(x) = <c, x> = -x1 + x2 + x3 -2x5 -Mx7 Æ max (M lớn tùy ý)
⎧2 x1 − x2 − x4 + x7 = 6 (1)
⎪3x − x4 + x5 + x6 = 10 (2)
⎪ 1
D:⎨
⎪ x3 − 2x4 + 2 x5 = 4 (3)
⎪⎩ x j ≥ 0, j = 1,7
Cơ sở ban đầu là J = {A7, A6, A3} với pacb ban đầu là x0 = (0, 0, 4, 0, 10, 6)
Hệ Cơ sở Phương c1 c2 c3 c4 c5 c5 c5
-1 1 1 0 2 0 -M
số án A A A A A5 A6 A7
Aj,j∈J 1 2 3 4
cj
-M A7 6 [2] -1 0 -1 0 0
I 0 A6 10 3 0 0 -1 1 1
1 A3 4 0 0 1 -2 2 0
f(x) = (-2M) M 0 M 0 0
1 -1 0 -2 0 0
-1 A1 3 1 -1/2 0 -1/2 0 0
II 0 A6 1 0 3/2 0 [1/2] 1 1
1 A3 4 0 0 1 -2 2 0
f(x)= 1 0 -1/2 0 (-3/2) 0 0
-1 A1 4 1 1 0 0 1 1
0 A4 2 0 3 0 1 2 2
III 1 A3 8 0 6 1 0 6 4
f(x) = 4 0 4 0 0 3 3
Bài toán M tại lần lặp thứ 3 có ∆k ≥ 0 với ∀ k = 1,…, 7 nên thu được patu là (4, 0, 8, 2, 0, 0 ,0).
Biến giả x7 = 0, do đó bài toán P đã cho có patu là x* = (4, 0, 8, 2, 0, 0) với giá trị tối ưu của hàm
mục tiêu là f(x*) = 4.
Ví dụ 2-4.3 Giải bài toán P sau đây : f(x) = <c, x> = 2x1 + x2 - x3 -x4 Æ max
98
NCT-FIT-HNUE Computional methods and Optimization Problems
⎧ x1 − x2 + 2 x3 − x4 = 2 (1)
⎪2 x + x2 − 3 x3 + x4 = 6 ( 2)
⎪ 1
D:⎨
⎪ x1 + x2 + x3 + x4 = 7 (3)
⎪⎩ x j ≥ 0, j = 1,4
Bài toán P đã cho không có ràng buộc nào chuẩn. Ta chuyển về Bài toán M:
f(x) = <c, x> = 2x1 + x2 - x3 -x4 -Mx5 -Mx6 -Mx7 Æ max (M lơn tùy ý)
⎧ x1 − x2 + 2 x3 − x4 + x5 = 2 (1)
⎪2 x + x2 − 3 x3 + x4 + x6 = 6 ( 2)
⎪ 1
D:⎨
⎪ x1 + x2 + x3 + x4 + x7 = 7 (3)
⎪⎩ x j ≥ 0, j = 1,4
-M A5 2 [1] -1 2 -1 1 0 0
I -M A6 6 2 1 -3 1 0 1 0
-M A7 7 1 1 1 1 0 0 1
f(x) = (-4M) -M 0.M -M
-2 -1 1 1
2 A1 2 1 -1 2 -1
II -M A6 2 0 [3] -7 3
-M A7 5 0 2 -1 2
f(x)= 0.M (-5.M) 8.M -5.M
0 -3 +5 -1
2 A1 8/3 1 0 -1/3 0
1 A2 2/3 0 1 -7/3 1
III -M A7 11/3 0 0 [11/3] 0
f(x) = 0.M 0.M (-11M/3) 0.M
0 0 -2/3 2
2 A1 3 1 0 0 0
IV 1 A2 3 0 1 0 1
-1 A3 1 0 0 1 0
f(x) = 8 0 0 0 2
99
NCT-FIT-HNUE Computional methods and Optimization Problems
Bài toán M tại lần lặp thứ 4 có ∆k ≥ 0 với ∀ k = 1,…, 7 nên thu được patu là (3, 3, 1, 0, 0, 0 ,0).
Các biến giả x5 = x6 = x7 = 0, do đó bài toán P đã cho có patu là x* = (3, 3, 1, 0, 0) với giá trị tối
ưu của hàm mục tiêu là f(x*) = 8.
BÀI TẬP
Giải các bài toán tối ưu sau đây:
1.
2 x1 + x2 + 3 x3 − 4 x4 + 3 x5 − x6 → Min
⎧ 3 x1 − x3 + x 4 +2 x5 − 3 x6 = 45
⎪− 2 x + x +2 x − x − x + 2 x = 8
⎪ 1 2 3 4 5 6
⎨
⎪ x1 − 3 x3 − 2 x4 + x5 = 20
⎪⎩ xj ≥ 0 j = 1,2,...,6
2.
2 x1 + x2 − x3 + x4 + 3 x5 → Max
⎧ − 3 x1 + 2 x2 + x3 + x4 + 2 x5 = 14
⎪ − 2 x + 6 x − 3x + x5 ≤ 18
⎪ 1 2 3
⎨
⎪− 2 x1 + x2 − 2 x3 − x5 = −16
⎪⎩ x j ≥ 0, j = 1,2,...,5.
3.
x1 + 3x2 + x3 → Min
⎧ x1 + x2 + x3 ≥ 5
⎪ − x 2 − 2 x 3 = −8
⎪
⎨
⎪ x1 + 2 x2 + x3 ≤ 10
⎪⎩ x j ≥ 0, j = 1,2,3.
4.
x1 + x2 + 3 x3 + 2 x4 → Max
⎧ x1 + 2 x2 + x 3 +2 x4 ≤ 10
⎪ 2 x + x +3 x + 4 x = 9
⎪ 1 2 3 4
⎨
⎪ x1 + 2 x2 + 2 x3 + x4 ≥ 8
⎪⎩ x j ≥ 0 j = 1,2,3,4
100