1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đợt-5-1 (1).Pdf

25 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Code Matlab
Tác giả Đỗ Đoàn Tuấn Hùng
Thể loại assignment
Định dạng
Số trang 25
Dung lượng 1,44 MB

Nội dung

HỌ VÀ TÊN ĐỖ ĐOÀN TUẤN HÙNG LỚP 20TDHCLC2 MSSV 105200407 NHÓM 20N36 Đợt 3 BÀI 1 Code matlab % Hàm mục tiêu g = @(x, y) 2 * x * y + 2 * x x ^2 2 * y ^2; % Gradient của hàm mục tiêu theo biến x grad g x[.]

HỌ VÀ TÊN: ĐỖ ĐOÀN TUẤN HÙNG LỚP: 20TDHCLC2 MSSV: 105200407 NHÓM: 20N36 Đợt BÀI 1: Code matlab % Hàm mục tiêu g = @(x, y) * x * y + * x - x.^2 - * y.^2; % Gradient hàm mục tiêu theo biến x grad_g_x = @(x, y) * y + - * x; % Gradient hàm mục tiêu theo biến y grad_g_y = @(x, y) * x - * y; % Vị trí ban đầu x = 1.0; y = 2.0; % Các đối số cho phương pháp Armijo Rule alpha = 1; beta = 1; max_iter = 100; % Áp dụng phương pháp Armijo Rule để tìm kích thước bước tối ưu step_size = armijo_rule_2d(g, grad_g_x, grad_g_y, x, y, alpha, beta, max_iter); % Cập nhật vị trí gradient descent với kích thước bước tối ưu x_new = x - step_size * grad_g_x(x, y); y_new = y - step_size * grad_g_y(x, y); % Hiển thị kết fprintf('Vị trí ban đầu: x = %f, y = %f\n', x, y); fprintf('Kích thước bước tối ưu: %f\n', step_size); fprintf('Vị trí mới: x = %f, y = %f\n', x_new, y_new); Kết quả: BÀI 2: Code matlab % Hàm mục tiêu g = @(x, y) x * y.^2; % Gradient hàm mục tiêu theo biến x grad_g_x = @(x, y) y.^2; % Gradient hàm mục tiêu theo biến y grad_g_y = @(x, y) * x * y; % Vị trí ban đầu x = 1.0; y = 2.0; % Các đối số cho phương pháp Armijo Rule alpha = 1; beta = 1; max_iter = 100; % Áp dụng phương pháp Armijo Rule để tìm kích thước bước tối ưu step_size = armijo_rule_2d(g, grad_g_x, grad_g_y, x, y, alpha, beta, max_iter); % Cập nhật vị trí gradient descent với kích thước bước tối ưu x_new = x - step_size * grad_g_x(x, y); y_new = y - step_size * grad_g_y(x, y); % Hiển thị kết fprintf('Vị trí ban đầu: x = %f, y = %f\n', x, y); fprintf('Kích thước bước tối ưu: %f\n', step_size); fprintf('Vị trí mới: x = %f, y = %f\n', x_new, y_new); Kết quả: BÀI 3: Code matlab % Hàm mục tiêu f = @(x) x.^3 - * x.^2 + * x - 8; % Gradient hàm mục tiêu grad_f = @(x) * x.^2 - 12 * x + 9; % Vị trí ban đầu x = 5.0; % Các đối số cho phương pháp Armijo Rule alpha = 1; beta = 1; max_iter = 100; % Áp dụng phương pháp Armijo Rule để tìm kích thước bước tối ưu step_size = armijo_rule(f, grad_f, x, alpha, beta, max_iter); % Cập nhật vị trí gradient descent với kích thước bước tối ưu x_new = x - step_size * grad_f(x); % Hiển thị kết disp(['Vị trí ban đầu: ', num2str(x)]); disp(['Kích thước bước tối ưu: ', num2str(step_size)]); disp(['Vị trí mới: ', num2str(x_new)]); Kết quả: BÀI 4: Code matlab % Hàm mục tiêu f = @(x) (x-2).^2 + cos(x); % Gradient hàm mục tiêu grad_f = @(x) * (x-2) - sin(x); % Vị trí ban đầu x = 5.0; % Các đối số cho phương pháp Armijo Rule alpha = 1; beta = 1; max_iter = 100; % Áp dụng phương pháp Armijo Rule để tìm kích thước bước tối ưu step_size = armijo_rule(f, grad_f, x, alpha, beta, max_iter); % Cập nhật vị trí gradient descent với kích thước bước tối ưu x_new = x - step_size * grad_f(x); % Hiển thị kết disp(['Vị trí ban đầu: ', num2str(x)]); disp(['Kích thước bước tối ưu: ', num2str(step_size)]); disp(['Vị trí mới: ', num2str(x_new)]); Kết quả: BÀI 5: Code matlab % Hàm mục tiêu f = @(x) exp(x) - * x.^2; % Gradient hàm mục tiêu grad_f = @(x) exp(x) - * x; % Vị trí ban đầu x = 5.0; % Các đối số cho phương pháp Armijo Rule alpha = 1; beta = 1; max_iter = 100; % Áp dụng phương pháp Armijo Rule để tìm kích thước bước tối ưu step_size = armijo_rule(f, grad_f, x, alpha, beta, max_iter); % Cập nhật vị trí gradient descent với kích thước bước tối ưu x_new = x - step_size * grad_f(x); % Hiển thị kết fprintf('Vị trí ban đầu: %f\n', x); fprintf('Kích thước bước tối ưu: %f\n', step_size); fprintf('Vị trí mới: %f\n', x_new); Kết quả: BÀI 6: Code Matlab % Hàm mục tiêu g = @(x, y) x - y + * x.^2 + 2*x*y + y.^2; % Gradient hàm mục tiêu theo biến x grad_g_x = @(x, y) + * x + * y; % Gradient hàm mục tiêu theo biến y grad_g_y = @(x, y) -1 + * x+2 * y; % Vị trí ban đầu x = 1.0; y = 2.0; % Các đối số cho phương pháp Armijo Rule alpha = 1; beta = 1; max_iter = 100; % Áp dụng phương pháp Armijo Rule để tìm kích thước bước tối ưu step_size = armijo_rule_2d(g, grad_g_x, grad_g_y, x, y, alpha, beta, max_iter); % Cập nhật vị trí gradient descent với kích thước bước tối ưu x_new = x - step_size * grad_g_x(x, y); y_new = y - step_size * grad_g_y(x, y); % Hiển thị kết fprintf('Vị trí ban đầu: x = %f, y = %f\n', x, y); fprintf('Kích thước bước tối ưu: %f\n', step_size); fprintf('Vị trí mới: x = %f, y = %f\n', x_new, y_new); Kết quả: Code function biến: function step_size = armijo_rule(f, grad_f, x, alpha, beta, max_iter) step_size = 1.0; iter_count = 0; while iter_count < max_iter f_val = f(x); grad_val = grad_f(x); new_f_val = f(x - step_size * grad_val); if new_f_val

Ngày đăng: 27/11/2023, 15:33