Professional Documents
Culture Documents
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)
𝒂
- 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.
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
𝜕2𝑓
𝜕2𝑓
𝜕𝑥2
1
⋯ 𝜕𝑥1𝜕𝑥𝑁
Và Hessian 𝐻𝑘 = 𝐻(𝑥𝑘) = ⋮ ⋱ ⋮
𝜕2𝑓
𝜕2𝑓
[𝜕𝑥𝑁𝜕𝑥1 ⋯ 2𝑁
]
o Đề tìm tối thiểu hóa, ta yêu cầu ∇𝑓(𝑥) = 0, và ∇𝑓(𝑥) = 𝑔(𝑘) + 𝐇(𝑘)𝑑(𝑥) = 0
Để 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𝑦𝑥
𝜕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
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.
2. Code Matlab
3. Vẽ đồ thị
Kết quả sau khi coding trên matlab bằng Optimization Toolbox
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