You are on page 1of 11

Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

BÁO CÁO MATLAB GIỮA KỲ MÔN TOÁN NÂNG CAO – NHÓM Nh91
Họ và tên: Hoàng Đức Kỳ Sinh ngày: 28/01/2001
Lớp sinh hoạt: 19TDHCLC5
MSSV: 105190394 STT: 40
GVHD: TS. Trần Thị Minh Dung
𝑚𝑖𝑛
Đề số 3: Tìm giá trị nhỏ nhất của hàm 𝑓(𝑥, 𝑦)

4𝑥4
𝑓(𝑥, 𝑦) = + 2𝑦2𝑎𝑥2 − 𝑥 − 𝑦2
𝑎
Với giá trị ban đầu (𝑥0, 𝑦0) = (0.1*Ngày sinh, 0.1*Tháng sinh) và a = STT

I. Phần mở đầu
1. Yêu cầu của đề thi.
 Giải bài toán bằng coding trên matlab
 Vẽ đồ thị của các giá trị đầu ra tương ứng từng bước
 Giải lại bai toán bằng optimization toolbox trong Matlab
 Vẽ đồ thị theo options trong lệnh Matlab
2. Input, output.
4𝑥4
 Input: Nhập 𝑓(𝑥, 𝑦) = + 2𝑦2𝑎𝑥2 − 𝑥 − 𝑦2
𝑎
 Output: Xuất ra giá trị 𝑚𝑖𝑛𝑓(𝑥, 𝑦)

3. Xử lý số liệu.
o a: Số thứ tự của sinh viên  a = 40
o Giá trị ban đầu (𝑥0; 𝑦𝟒 0): (0.1*28, 0.1*01) = (2.8, 0.1)
𝟒𝒙
𝒇(𝒙, 𝒚) = + 𝟐𝒚𝟐𝒂𝒙𝟐 − 𝒙 − 𝒚𝟐 (1)
𝒂

Với a = 40, thay vào (1) ta được:


𝒇(𝒙, 𝒚) = 𝟎. 𝟏𝒙𝟒 + 𝟖𝟎𝒙𝟐𝒚𝟐 − 𝒙 − 𝒚𝟐
 Yêu cầu bài ra:
 Tìm 𝑚𝑖𝑛𝑓(𝑥, 𝑦)

Với 𝒇(𝒙, 𝒚) = 𝟎. 𝟏𝒙𝟒 + 𝟖𝟎𝒙𝟐𝒚𝟐 − 𝒙 − 𝒚𝟐

Báo cáo giữa kỳ TOÁN NÂNG 1


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

II. Các bước giải một bài toán tối ưu

- Bài toán tối ưu được giải quyết bằng thuật toán lặp.
-
- Tìm giá trị của x sao cho hàm số f(x) có giá trị nhỏ nhất và thỏa mãn 2 điều kiện
ràng buộc về h(x) và g(x).
- Gọi x* là giá trị cần tìm, ta có f(x*) = minimum.

1. Kỹ thuật giải bài toán tối ưu hóa truyền thống


- Hàm số 1 biến f(x) đạt giá trị nhỏ nhất cục bộ (local minimum) tại x = x* nếu
𝑓(𝑥 ∗) ≤ 𝑓(𝑥 + ℎ) với mọi giá trị dương và âm của h, nhỏ tùy ý.
- Hàm 𝑓(𝑥) đặt giá trị lớn nhất cục bộ nếu 𝑓(𝑥 ∗) ≥ 𝑓(𝑥 + ℎ), ∀ℎ~0.
2. Điều kiện cần
Nếu hàm f(x) xác định trong đoạn giá trị [a,b] có điểm tối thiểu cục bộ tại
x = x*, a < x* < b.
Nếu vi phân của 𝑑𝑓(𝑥) = 𝑓′(𝑥) tồn tại như một số hữu hạn tại x = x* thì 𝑓′(x*) = 0.
𝑑𝑥
3. Điều kiện đủ
Nếu 𝑓′(x*) = 𝑓′′(x*) = 𝑓(3)(x*) =…= 𝑓(𝑛−1)(x*) = 0, 𝑓(𝑛)(x*) ≠ 0
Thì 𝑓(x*) là:
- Là giá trị nhỏ nhất nếu 𝑓(𝑛)(x*) > 0 và n là số chẵn.

Báo cáo giữa kỳ TOÁN NÂNG 2


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

- Là giá trị lớn nhất nếu 𝑓(𝑛)(x*) < 0 và n là số chẵn.


- Không phải giá trị lớn nhất hoặc nhỏ nhất nếu n là số lẻ.
III. Trình bày phương pháp giải (phương pháp Newton)
𝑚𝑖𝑛
Đề số 3: Tìm giá trị nhỏ nhất của hàm 𝑓(𝑥, 𝑦)

4𝑥4
𝑓(𝑥, 𝑦) = + 2𝑦2𝑎𝑥2 − 𝑥 − 𝑦2
𝑎
Với giá trị ban đầu (𝑥0, 𝑦0) = (0.28, 0.1) và a = 40.
 Hàm mục tiêu: 𝒇(𝒙, 𝒚) = 𝟎. 𝟏𝒙𝟒 + 𝟖𝟎𝒙𝟐𝒚𝟐 − 𝒙 − 𝒚𝟐
Sử dụng phương pháp Newton là để tìm mức tối ưu (trong trường hợp này là cực
tiểu), ta bắt đầu bằng cách tính gần đúng đường cong của chúng ta tại một điểm xuất phát
ngẫu nhiên với phần mở rộng Taylor bậc hai, sau đó tính toán mức tối đa của phần mở
rộng đó (có nghĩa là, lấy đạo hàm đầu tiên của nó và đặt nó bằng 0). Giá trị tiểu nhất của
xấp xỉ bậc hai sẽ là giá trị mới của x. Điều này được lặp lại và chuỗi kết quả của x,
x(k+1), có xu hướng hội tụ về phía cực tiểu của hàm mục tiêu, x*, vì k có xu hướng vô
hạn.
𝑑2𝑓(𝑥)
 Để thực hiện phương pháp Newton thì, hàm mục tiêu f(x) là khả trình 𝑑𝑓(𝑥) =
𝑑𝑥 𝑑𝑥2

 Phương trình cập nhật (update) giá trị của x tại mỗi bước k
𝑑𝑓(𝑥(𝑘))
 𝑥(𝑘 + 1) = 𝑥(𝑘) − 𝑑𝑥
𝑑2𝑓(𝑥(𝑘))
𝑑𝑥2

Khai triển 𝑓(𝑥) bằng chuỗi Taylor xung quanh điểm x(k)
1
𝑓(𝑥(𝑘) + 𝑑(𝑥)) ≈ 𝑓(𝑥(𝑘)) + (𝑘 )𝑇 𝑑(𝑥) + 𝑑(𝑥 )𝑇 𝐇(𝑘)𝑑(𝑥)
𝐠 2

Với gradient là vector 𝑔𝑘 = ∇𝑓 𝜕



(𝑥𝑘) = [𝑓 𝜕𝑓
⋯ 𝑥𝑁]
𝑥1

𝜕2𝑓
𝜕2𝑓
𝜕𝑥2
1
⋯ 𝜕𝑥1𝜕𝑥𝑁
Và Hessian 𝐻𝑘 = 𝐻(𝑥𝑘) = ⋮ ⋱ ⋮
𝜕2𝑓
𝜕2𝑓
[𝜕𝑥𝑁𝜕𝑥1 ⋯ 2𝑁
]

Báo cáo giữa kỳ TOÁN NÂNG 3


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

o Đề tìm tối thiểu hóa, ta yêu cầu ∇𝑓(𝑥) = 0, và ∇𝑓(𝑥) = 𝑔(𝑘) + 𝐇(𝑘)𝑑(𝑥) = 0

Báo cáo giữa kỳ TOÁN NÂNG 4


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

o Với nghiệm 𝑑(𝑥) = −𝐇−𝟏(𝑘)𝑔(𝑘), ta có phương trình cập nhật


𝑥(𝑘 + 1) = 𝑥(𝑘) − −𝐇−𝟏(𝑘)𝑔(𝑘)
o Nếu 𝑓(𝑥) là hàm bình phương, vậy nghiệm của bài toán tìm được chỉ trong 1 bước
𝑑(𝑥) = −𝐇−𝟏(𝑘)𝑔(𝑘)
o Thay vì, đi thẳng đến giá trị nhỏ nhất, để bài toán tìm được nghiệm toàn cục, thì
ra để bước cập nhật như sau:
𝑥(𝑘 + 1) = 𝑥(𝑘) − −𝐇−𝟏(𝑘)𝑔(𝑘)
o Nếu H = I, thì phương pháp này trở thành steepest descent.

Để tiếp tục với phương pháp Newton, ta xác định thêm các yếu tố: đạo hàm bậc nhất
và đạo hàm bậc hai bằng phương pháp Gradient và Hessian.
𝜕𝑓(𝑥,𝑦) 𝜕𝑓(𝑥,𝑦)
= 0.4𝑥3 + 160𝑥𝑦2 − 1 = 160𝑥2𝑦 − 2𝑦
𝜕𝑥 𝜕𝑦

𝜕2𝑓(𝑥,𝑦) 𝜕2𝑓(𝑥,𝑦)
= 1.2𝑥2 − 160𝑦2 = 160𝑥2 − 2
𝜕𝑥2 𝜕𝑦2

𝜕2𝑓(𝑥,𝑦) 𝜕2𝑓(𝑥,𝑦)
𝜕𝑥𝑑𝑦 = 320𝑥𝑦 𝜕𝑦𝑑𝑥 = 320𝑦𝑥

∇𝑓(𝑥, 𝑦) = (0.4𝑥3 − 160𝑥𝑦2 − 1, 160𝑥2𝑦 − 2𝑦)

𝜕2𝑓(𝑥,𝑦) 𝜕2𝑓(𝑥,𝑦)
2 𝜕𝑥2 𝜕𝑥𝑑𝑦 1.2𝑥2 + 160𝑦2 320𝑥𝑦
∇ 𝑓(𝑥, 𝑦) = [ ]= [ ]
𝜕 2𝑓(𝑥,𝑦) 𝜕2 𝑓(𝑥,𝑦) 320𝑦𝑥 160𝑥2 − 2
𝜕𝑦𝑑𝑥 𝜕𝑦2

𝜕𝑓(𝑥,𝑦)
𝜕𝑦
Sử dụng phương pháp Newton, với: 𝑥(𝑘 + 1) = 𝑥(𝑘) − 𝜕2𝑓(𝑥,𝑦)
𝜕𝑥2

Báo cáo giữa kỳ TOÁN NÂNG 5


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

IV. Lập trình Matlab

 Pseudocode là một mô tả dạng plain text của một đoạn code hoặc thuật toán. Nó
không thực sự là lập trình, không có script, không có file và không có chương
trình. Đúng như tên gọi, nó là “code giả”.

 Pseudocode không được viết bằng bất kỳ ngôn ngữ lập trình cụ thể nào. Nó viết
bằng tiếng Anh và dễ hiểu.

 Mặc dù pseudocode không được viết bằng ngôn ngữ lập trình, nhưng vẫn có những
keyword được sử dụng để chỉ các khái niệm phổ biến khi viết code.
1. Thuật toán Pseudo Algorithms.

Báo cáo giữa kỳ TOÁN NÂNG 6


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

2. Code Matlab

Hình 1: Thực hiện code trên phần mềm Matlab


Kết quả sau khi thực hiện code Matlab

Báo cáo giữa kỳ TOÁN NÂNG 7


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

3. Vẽ đồ thị

Hình 2: Đồ thị sau khi thực hiện code Matlab

V. Giải bằng Optimization Toolbox


1. Code Matlab

Hình 3: Code Matlab giải bằng Optimization Toolbox

Báo cáo giữa kỳ TOÁN NÂNG 8


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

2. Vẽ đồ thị theo Options trong lệnh Matlab

Hình 4: Đồ thị khi giải bài toán bằng Optimization Toolbox

Báo cáo giữa kỳ TOÁN NÂNG 9


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

Kết quả sau khi coding trên matlab bằng Optimization Toolbox

Báo cáo giữa kỳ TOÁN NÂNG 1


Toán Nâng Cao Hoàng Đức Kỳ 19TDHCLC5

Hình 5, hình 6 và hình 7: Kết quả sau khi code matlab bằng Optimization Toolbox

Nhận xét kết quả: Hai phương pháp cho ra 2 kết quả gần bằng nhau

Báo cáo giữa kỳ TOÁN NÂNG 1

You might also like