Nghiên Cứu Khoa Học ỨNG DỤNG PHẦN MỀM MATLAB GIẢI BÀI TOÁN CỰC TRỊ

7 229 2
Nghiên Cứu Khoa Học ỨNG DỤNG PHẦN MỀM MATLAB GIẢI BÀI TOÁN CỰC TRỊ

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

Thông tin tài liệu

Hiện nay đã có rất nhiều phần mềm được khai thác phục vụ cho mục đích giảng dạy, học tập và nghiên cứu về lĩnh vực toán học như Sketpad, Maple, Cabri3D, Excel, Mathcad, Scientific WordPlace,.. Tuy nhiên phần mềm Matlab (Matrix Laboratory) lại ít được nhắc đến. Matlab có thể giải quyết hiệu quả các bài toán về ma trận, định thức, hệ phương trình tuyến tính, các bài toán cực trị; ngoài ra có thể lập trình cho Matlab thay thế cho các ngôn ngôn ngữ lập trình truyền thống như C, C++…Dưới đây chỉ tập trung khai thác ứng dụng của Matlab giải các bài toán cực trị trong chương trình phổ thông và Đại học.

ỨNG DỤNG PHẦN MỀM MATLAB GIẢI BÀI TOÁN CỰC TRỊ Nguyễn Thị Nhật Hà : DT13STH01 Nguyễn Đức Minh Hoàng: DT13STH01 Tóm tắt: Bài báo giới thiệu phần mềm Matlab ứng dụng phần mềm Matlab việc giải toán tối ưu, bao gồm tốn tối ưu tuyến tính phi tuyến, tốn tối ưu có ràng buộc khơng ràng buộc Mở đầu Ở trường trung học phổ thông, học sinh học phương pháp để tìm cực trị hàm số biến tìm giá trị lớn nhất, giá trị nhỏ biểu thức mà thực chất tìm cực trị hàm nhiều biến Đến chương trình Đại học, sinh viên học tập nghiên cứu chi tiết cực trị hàm nhiều biến, tốn quy hoạch tuyến tính, toán phi tuyến Đặc điểm chung tốn cực trị có lời giải cồng kềnh, dễ sai sót q trình tính tốn chí nhều học sinh, sinh viên khơng thể tìm lời giải cho tốn phải sử dụng kỹ thuật, kiến thức phức hợp, phức tạp Với phát triển vũ bão khoa học kỹ thuật, bùng nổ công nghệ thông tin truyền thơng q trình học tập, nghiên cứu, …phải thay đổi theo hướng ứng dụng: Nội dung liên quan đến lý thuyết hàn lâm phải tinh giản đến mức tối đa, tăng cường kiến thức gắn liền với thực tế sống, thực tế lao động sản xuất; tăng cường ứng dụng công nghệ thông tin truyền thông, ứng dụng trực tiếp sản phẩm khoa học kỹ thuật nhằm tăng hiệu học tập, tăng suất lao động Hiện có nhiều phần mềm khai thác phục vụ cho mục đích giảng dạy, học tập nghiên cứu lĩnh vực toán học Sketpad, Maple, Cabri3D, Excel, Mathcad, Scientific WordPlace, Tuy nhiên phần mềm Matlab (Matrix Laboratory) lại nhắc đến Matlab giải hiệu toán ma trận, định thức, hệ phương trình tuyến tính, tốn cực trị; ngồi lập trình cho Matlab thay cho ngơn ngơn ngữ lập trình truyền thống C, C++…Dưới tập trung khai thác ứng dụng Matlab giải tốn cực trị chương trình phổ thông Đại học Nội dung 2.1 Giới thiệu phần mềm Matlab Matlab phát minh vào cuối thập niên 1970 Cleve Moler – Chủ nhiệm khoa máy tính trường đại học New Mexico Đến năm 1984 phiên Matlab 1.0 đời Sau hai năm Matlab 2.0 đời nhờ hỗ trợ Unix năm sau phần mềm Matlab không ngừng cải tiến với cơng dụng bổ ích Matlab viết tắt Matrix Laboratory, phần mềm toán học hãng Mathworks để lập trình, tính tốn số có tính trực quan cao Có thể dùng Matlab để tính tốn, thực thuật tốn, thu thập liệu, mơ hình mơ phỏng, phân tích liệu, vẽ đồ thị, giao diện đồ họa, thực thuật tốn,… Matlab gồm phần chính:  Development Environment: Là công cụ giúp ta sử dụng hàm tập tin Matlab, bao gồm: Matlab desktop, Command Window, a command history, an editor, debugger, browsers for viewing help, the workspace, files, the search path  Matlab Mathematical Function Library: Tập hợp hàm toán học sum, sine, số học,…  Matlab Language (scritp): Ngôn ngữ lập trình bậc cao  Graphics: Các cơng cụ giúp hiển thị liệu dạng đồ thị, cho phép xây dựng giao diện đồ họa  Matlab Application Program Interface (API): Bộ thư viện cho phép ta sử dụng chức tính tóan Matlab chương trình C hay fortran Matlab cung cấp lượng lớn hàm toán học, hàm số sơ cấp có: Sin, cos, tan, atan, ln, log, exp, sqrt, round, ceil, floor, sum, min, max, mean, abs hay hàm toán chuyên dụng: besselj (bessel function of the first kind), bessely (bessel function of the second kind), beta (beta function), erf (error function), gamma (gamma function), primes (generate list of prime numbers), cart2sph (transform Cartesian to spherical coordinates),… Hiện nay, Matlab có nhiều phiên bản, thao tác cài đặt phiên tương đối dễ dàng Trong báo sử dụng phiên Matlab 2013a, sau cài đặt, giao diện làm việc có dạng: Thực tế tốn u cầu tìm giá trị lớn giá trị nhỏ hàm số F miền D Tuy nhiên tốn u cầu tìm giá trị lớn F D, ta đặt G = -F chuyển thành tốn tìm giá trị nhỏ hàm số G D, để đơn giản, chủ yếu trình bày ví dụ cho tốn tìm giá trị nhỏ hàm số (có khơng có ràng buộc) 2.2 Ứng dụng phần mềm Matlab giải toán tối ưu phi tuyến 2.2.1 Ứng dụng phần mềm Matlab giải tốn tối ưu phi tuyến khơng ràng buộc a) Hàm fminsearch Cấu trúc thuật toán: [x,fval] = fminsearch(f, x0) Trong đó: x: Giá trị hàm số đạt chuẩn; fval : Giá trị đạt chuẩn; f : Hàm số cần tìm chuẩn; x0: Giá trị khởi đầu F  x1 , x    x1  1  x24 Ví dụ Tìm giá trị nhỏ biểu thức: Nhận thấy giá trị nhỏ biểu thức 0, đạt x1  1, x2  ; ví dụ đưa nhằm mục đích giúp cho người đọc dễ dàng có đối chiếu, so sánh Thuật tốn: f=@(x)(x(1)-1)^2+x(2)^4; [x,fval]=fminsearch(f,[0,0]) Kết chạy chương trình: 18 Vậy hàm số đạt cực trị x1  1, x2  giá trị cực trị ( 7,3308 �10 �0 ) Ghi chú:  Các phép toán quen thuộc khai báo tương ứng là: Cộng (+), trừ (-), nhân (*), chia (/), lũy thừa (^), bậc hai (sqrt), trị tuyệt đối (abs), …  Nếu dòng lệnh kết thúc dấu ; chạy chương trình kết không hiển thị; ngược lại khơng có dấu ; kết dòng lệnh hiển thị hình Ví dụ (Đề thi tuyển sinh Đại học – Cao Đẳng khối B năm 2006) Cho x, y số thực thay đổi Tìm giá trị nhỏ biểu thức: Xem x1 x x2 y, ta có: A  x  1  y2   x  1  y2  y  Thuật tốn: f=@(x)sqrt((x(1)-1)^2+(x(2))^2)+ sqrt((x(1)+1)^2+(x(2))^2)+abs(x(2)-2); [x,fval]=fminsearch(f,[0,0]) Kết chạy chương trình giá trị nhỏ biểu thức A 3,7321; đạt x = y = 0,5773 (phù hợp với đáp án Bộ giáo dục đào tạo là: Giá trị nhỏ A  �2, 7321 , đạt x = y �0,5773 ) b) Hàm fminunc Cấu trúc thuật toán: [x,fval]=fminunc(f, x0) F  x1 , x2   100  x2  x12     x1  2 Ví dụ Tìm cực tiểu hàm số Thuật tốn: f=@(x)100*(x(2)-(x(1))^2)^2+(1-x(1))^2; [x,fval]=fminunc(f,[0,0]) Kết chạy chương trình giá trị cực tiểu hàm số F x1  x2  (giá trị 11 cực tiểu hàm số hiển thị 1,9474 �10 �0 ) 2.2.2 Ứng dụng phần mềm Matlab giải toán tối ưu phi tuyến không ràng buộc a) Hàm biến Cấu trúc thuật tốn: [x,fval]=fminbnd(f, x1, x2) Trong x1 cận dưới, x2 cận f  x   x3  x  Ví dụ Tìm giá trị nhỏ hàm số với �x �7 Thuật tốn: f=@(x)x^3-2*x-5; [x,fval]=fminbnd(f,3,7) Kết chạy chương trình cho ta giá trị nhỏ hàm số f 16, đạt x = b) Hàm nhiều biến ràng buộc tuyến tính: Bài tốn: Tìm giá trị nhỏ hàm số F(X), x = (x 1, x2, …, xn) thỏa mãn hệ �Ax �b � �Aeqx  beq � lb �x �ub điều kiện ràng buộc: � Cấu trúc thuật toán: [x,fval]=fmincon(f, x0, A, b, Aeq, beq, lb, ub) F  x1 , x2    x1     x2  3  Ví dụ Tìm giá trị nhỏ hàm số thỏa mãn: �x1  x2  �0 � �x1 �0, x2 �0 Thuật toán: f=@(x)(x(1)-2)^2+(x(2)-3)^2+5; A = [1 1]; b = [4] (có thể viết b = 4); lb = [0; 0]; (có thể khai báo ma trận khơng 2x1 lb = Zeros(2,1)) x0 = [0; 0]; [x,fval]=fmincon(f, x0, A, b, [ ], [ ], lb, [ ]) �x1  1,5 � �x2  2,5 Kết chạy chương trình cho ta giá trị nhỏ hàm số F 5,5 đạt Ghi chú: Ký hiệu [ ] máy hiểu khơng có điều kiện ràng buộc tương ứng Ví dụ (Đề thi tuyển sinh Đại học năm 2015) Cho số thực a, b, c thuộc đoạn [1; 3] thỏa mãn điều kiện a + b + c = Tìm giá trị lớn biểu thức: a b  b c  c a  12abc  72  abc ab  bc  ca Trước hết ta tìm giá trị nhỏ biểu thức: a b  b c  c a  12abc  72 Q  abc ab  bc  ca Thỏa mãn điều kiện a, b, c thuộc đoạn [1; 3] thỏa mãn điều kiện a + b + c = Xem a x1, b x2 c x3 ta có: Thuật tốn: f=@(x)(-x(1)^2*x(2)^2-x(2)^2*x(3)^2-x(3)^2*x(1)^2-12*x(1)*x(2)*x(3)-72)/ (x(1)*x(2)+x(2)*x(3)+x(3)*x(1))+x(1)*x(2)*x(3)/2; Aeq = [1 1]; beq = 6; lb = [1; 1; 1]; ub = [3; 3; 3]; x0 = [1; 2; 3]; [x,fval]=fmincon(f, x0, [ ], [ ], Aeq, beq, lb, ub) Kết chạy chương trình cho ta giá trị nhỏ hàm số Q -14,5455 dấu xảy a =1, b = 2, c = Từ suy giá trị lớn biểu thức P 14, 5455, dấu có a = 1, b = 2, c = Giá trị phù hợp với đáp án đưa Bộ giáo dục đào tạo giá P 160 �14,5455 trị lớn 11 , đạt a = 1, b = 2, c = (rất thí sinh làm câu này) Ghi chú: Matlab lập trình cho tốn tìm Min Nếu u cầu tốn tìm Max hàm F trước hết ta tìm Min hàm –F, giả sử M, Max cần tìm –M 2.3 Ứng dụng phần mềm Matlab giải tốn quy hoạch tuyến tính Bài tốn: Tìm Min (Max) hàm số F(x) (tuyến tính) thỏa mãn điều kiện ràng buộc: �Ax �b � �Aeqx  beq � lb �x �ub � (điều kiện ràng buộc gồm hệ phương trình, bất phương trình tuyến tính) Cấu trúc thuật toán: [x,fval]=linprog(f, A, b, Aeq, beq, lb, ub, x0) F  x1 , x2 , x3   x1  3x2  3x3 Ví dụ Tìm giá trị nhỏ hàm số thỏa mãn: x1  x2 �12 � �x  x  x �1 �1 � x  x  x 3 �1 � �x1 , x2 , x3 �0 Thuật toán: f = [2; -3; 3]; A = [3 -1 0; -1 -2 1]; b = [12; -1]; Aeq = [1 -1 -1]; beq = 3; lb = zeros(3,1); [x,fval] = linprog(f, A, b, Aeq, beq, lb, [ ],[0,0,0]) Kết quả: Hàm số đạt giá trị nhỏ F 4,5; đạt x1 = 4,5; x2 = 1,5; x3 =0 Ghi chú: Trong hệ điều kiện toán cụ thể phải đưa ngun dạng, chẳng hạn tốn điều kiện x1  x2  x3 �1 phải đưa  x1  x2  x3 �1 Ví dụ Tìm GTLN hàm số F  x1 , x2 , x3   3x1  x2  x3 thỏa mãn hệ điều kiện: �x1  3x2 �4 �x  x �7 �1 � �x1  3x2  3x3 �12 � �x1 �0, x2 �0, x3 �0 Thuật toán: f=[-3; -8; -5]; A = [1,3,0;1,0,2;1,3,3]; b = [4; 7; 12]; lb = zeros(3,1); x0 = [0; 0; 0]; [x,fval] = linprog(f, A, b, [ ], [ ], lb, [ ], x0) Kết quả:  F  x1 , x2 , x3   3x1  x2  x3 Hàm số đạt giá trị nhỏ x = 1,6667; x2 = 0,7778; x3 = 2,6667 giá trị nhỏ đạt -24,5556 (đây giá trị gần đúng, giá trị 221 x1  , x2  , x3   giá trị nhỏ ) tương ứng Vậy giá trị lớn cần tìm 24,5556 đạt x = 1,6667; x2 = 0,7778; x3 = 2,6667 (đó 221 x1  , x2  , x3  ) giá trị gần đúng, giá trị , đạt Kết luận Mỗi phần mềm đời có ý nghĩa chuyên dụng, đem lại lợi ích định người sử dụng Mục đích phần mềm Matlab giải tốn (chủ yếu tính tốn kỹ thuật), khai thác hết tính phần mềm Matlab vào q trình dạy học tốn mang lại ý nghĩa to lớn Trong viết chúng tơi nghiên cứu trình bày vài kết ban đâu, nhiên rút số kết luận sau:  Matlab giải toán cực trị, Min, Max cho kết xác thời gian ngắn (khoảng giây);  Matlab giải tốn quy hoạch tuyến tính gốc mà khơng cần phải thời gian chuyển dạng chuẩn tắc;  Các thao tác người dùng phần mềm Matlab đơn giản: Chỉ cần dùng tên lệnh sử dụng cấu trúc lệnh mà khơng cần phải lập trình (như phần mềm khác: Pascal, C+, C++, …), nghĩa dễ dàng sử dụng nó;  Chỉ cần soạn thảo tốn Word PowerPoin copy sang Matlab mà không cần trực tiếp soạn Matlab nên tiện dụng;  Sử dụng phần mềm Matlab giúp người khơng đào tạo chun sâu tốn giải nhiều toán thực tế liên quan đến ngành nghề họ như: Bài toán tối ưu sản xuất, xây dựng, toán vận tải, …  Các kiến thức toán học ngồi ghế nhà trường thường kiến thức tốn học xác thực tế sống tính tốn gần (tương đối) mang ý nghĩa quan trọng Giải toán với phần mềm Matlab giúp gắn toán học với thực tiễn, phù hợp với xu hướng dạy học đại: học tập gắn liền với sống lao động sản xuất TÀI LIỆU THAM KHẢO [1] Trần Ngọc Hội (2007), Bài giảng quy hoạch tuyến tính [2] Trần Ngọc Hội (2007), Tài liệu ơn thi mơn Tốn kinh tế phần quy hoạch tuyến tính [3].http://www4.hcmut.edu.vn/~thietbidien/ptn_files/HuongDanMatlab_Simulink.pdf ... tìm giá trị nhỏ hàm số (có khơng có ràng buộc) 2.2 Ứng dụng phần mềm Matlab giải toán tối ưu phi tuyến 2.2.1 Ứng dụng phần mềm Matlab giải toán tối ưu phi tuyến không ràng buộc a) Hàm fminsearch... thác hết tính phần mềm Matlab vào trình dạy học toán mang lại ý nghĩa to lớn Trong viết nghiên cứu trình bày vài kết ban đâu, nhiên rút số kết luận sau:  Matlab giải toán cực trị, Min, Max cho... (như phần mềm khác: Pascal, C+, C++, …), nghĩa dễ dàng sử dụng nó;  Chỉ cần soạn thảo toán Word PowerPoin copy sang Matlab mà không cần trực tiếp soạn Matlab nên tiện dụng;  Sử dụng phần mềm Matlab

Ngày đăng: 12/10/2019, 22:33

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan