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

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 233 2

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 246,77 KB

Nội dung

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.

Trang 1

Ứ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 về phần mềm Matlab và ứng dụng của phần mềm Matlab trong việc

giải các bài toán tối ưu, bao gồm các bài toán tối ưu tuyến tính hoặc phi tuyến, bài toán tối ưu có ràng buộc hoặc không ràng buộc

1 Mở đầu

Ở trường trung học phổ thông, học sinh đã được học các phương pháp để tìm cực trị của hàm số một biến và tìm giá trị lớn nhất, giá trị nhỏ nhất của một biểu thức mà thực chất là tìm cực trị của hàm nhiều biến Đến chương trình Đại học, sinh viên được học tập và nghiên cứu chi tiết về cực trị của hàm nhiều biến, các bài toán quy hoạch tuyến tính, các bài toán phi tuyến Đặc điểm chung của các bài toán cực trị là có lời giải hết sức cồng kềnh, dễ sai sót trong quá trình tính toán và thậm chí nhều học sinh, sinh viên không thể tìm được lời giải cho bài toán vì phải sử dụng những kỹ thuật, những kiến thức phức hợp, phức tạp

Với sự phát triển như vũ bão của khoa học kỹ thuật, sự bùng nổ của công nghệ thông tin và truyền thông thì quá trình học tập, nghiên cứu, …phải được thay đổi theo hướng ứng dụng: Nội dung liên quan đến lý thuyết hàn lâm phải được tinh giản đến mức tối đa, tăng cường những kiến thức gắn liền với thực tế cuộc sống, thực tế lao động sản xuất; tăng cường ứng dụng công nghệ thông tin và 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 quả học tập, tăng năng suất lao động

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

2 Nội dung

2.1 Giới thiệu phần mềm Matlab

Matlab được phát minh vào cuối thập niên 1970 bởi Cleve Moler – Chủ nhiệm khoa máy tính trường đại học New Mexico Đến năm 1984 phiên bản Matlab 1.0 đầu tiên ra đời Sau đó hai năm Matlab 2.0 cũng ra đời nhờ sự hỗ trợ của Unix và trong những năm sau đó cho tới bây giờ phần mềm Matlab không ngừng được cải tiến với những công dụng bổ ích Matlab là viết tắt của Matrix Laboratory, là một bộ phần mềm toán học của hãng Mathworks để lập trình, tính toán số

và có tính trực quan rất cao Có thể dùng Matlab để tính toán, thực hiện thuật toán, thu thập dữ liệu, mô hình và mô phỏng, phân tích dữ liệu, vẽ đồ thị, giao diện đồ họa, thực hiện thuật toán,… Matlab gồm 5 phần chính:

Trang 2

 Development Environment: Là một bộ các công cụ giúp ta sử dụng các hàm và tập tin của 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 các hàm toán học như 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ị dữ liệu dưới dạng đồ thị, ngoài ra nó còn 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 các chức năng tính tóan của Matlab trong chương trình C hay fortran

Matlab cung cấp một lượng rất lớn các hàm toán học, đối với hàm số sơ cấp có: Sin, cos, tan, atan, ln, log, exp, sqrt, round, ceil, floor, sum, min, max, mean, abs hay đối với 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ó rất nhiều phiên bản, thao tác cài đặt các phiên bản đều tương đối dễ dàng Trong bài báo này chúng tôi sử dụng phiên bản Matlab 2013a, sau khi cài đặt, giao diện làm việc có dạng:

Thực tế bài toán có thể yêu cầu tìm giá trị lớn nhất hoặc giá trị nhỏ nhất của hàm số F trên miền D Tuy nhiên nếu bài toán yêu cầu tìm giá trị lớn nhất của F trên D, ta có thể đặt G = -F và chuyển thành bài toán tìm giá trị nhỏ nhất của hàm số G trên D, bởi vậy để đơn giản, dưới đây

Trang 3

chủ yếu trình bày các ví dụ cho bài toán tìm giá trị nhỏ nhất của hàm số (có hoặc không có ràng buộc)

2.2 Ứng dụng phần mềm Matlab giải bài toán tối ưu phi tuyến

2.2.1 Ứng dụng phần mềm Matlab giải bài toá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

Ví dụ 1 Tìm giá trị nhỏ nhất của biểu thức:    2 4

F x , x  x  1 x

Nhận thấy giá trị nhỏ nhất của biểu thức bằng 0, đạt khi x1 1, x2  ; ví dụ đầu tiên đưa ra0 nhằm mục đích giúp cho người đọc dễ dàng có sự đối chiếu, so sánh

Thuật toán:

f=@(x)(x(1)-1)^2+x(2)^4;

[x,fval]=fminsearch(f,[0,0])

Kết quả chạy chương trình:

Trang 4

Ghi chú:

 Các phép toán quen thuộc được khai báo tương ứng là: Cộng (+), trừ (-), nhân (*), chia (/), lũy thừa (^), căn bậc hai (sqrt), trị tuyệt đối (abs), …

 Nếu dòng lệnh kết thúc bằng dấu ; thì khi chạy chương trình kết quả sẽ không được hiển thị; ngược lại nếu không có dấu ; thì kết quả của dòng lệnh đó sẽ hiển thị trên màn hình

Ví dụ 2 (Đề thi tuyển sinh Đại học – Cao Đẳng khối B năm 2006) Cho x, y là các số thực

thay đổi Tìm giá trị nhỏ nhất của biểu thức: A x12  y2  x12 y2  y 2

Xem x là x và 1 x là y, ta có:2

Thuật toá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 quả chạy chương trình được giá trị nhỏ nhất của biểu thức A bằng 3,7321; đạt tại x = 0

và y = 0,5773 (phù hợp với đáp án của Bộ giáo dục và đào tạo là: Giá trị nhỏ nhất của A bằng

2 3 2,7321, đạt khi x = 0 và

1 0,5773 3

)

b) Hàm fminunc

Cấu trúc thuật toán: [x,fval]=fminunc(f, x0)

Ví dụ 3 Tìm cực tiểu của hàm số    22  2

1, 2 100 2 1 1 1

Thuật toán:

f=@(x)100*(x(2)-(x(1))^2)^2+(1-x(1))^2;

[x,fval]=fminunc(f,[0,0])

Kết quả chạy chương trình được giá trị cực tiểu của hàm số F bằng 0 khi x1 x2  (giá trị1 cực tiểu của hàm số hiển thị bằng 1,9474 10 11 ).0

2.2.2 Ứng dụng phần mềm Matlab giải bài toán tối ưu phi tuyến không ràng buộc

a) Hàm một biến

Cấu trúc thuật toán: [x,fval]=fminbnd(f, x1, x2)

Trong đó x1 là cận dưới, x2 là cận trên

Ví dụ 4 Tìm giá trị nhỏ nhất của hàm số f x  x3  2x 5 với 3  x 7

Thuật toán:

f=@(x)x^3-2*x-5;

[x,fval]=fminbnd(f,3,7)

Kết quả chạy chương trình cho ta giá trị nhỏ nhất của hàm số f bằng 16, đạt khi x = 3 b) Hàm nhiều biến ràng buộc tuyến tính:

Trang 5

Bài toán: Tìm giá trị nhỏ nhất của hàm số F(X), trong đó x = (x1, x2, …, xn) thỏa mãn hệ

điều kiện ràng buộc:

Ax b Aeqx beq

lb x ub

 Cấu trúc thuật toán: [x,fval]=fmincon(f, x0, A, b, Aeq, beq, lb, ub)

Ví dụ 5 Tìm giá trị nhỏ nhất của hàm số F x x 1, 2  x1 22 x2  32 5

thỏa mãn:

1 2

4 0

x x

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 là lb = Zeros(2,1))

x0 = [0; 0];

[x,fval]=fmincon(f, x0, A, b, [ ], [ ], lb, [ ])

Kết quả chạy chương trình cho ta giá trị nhỏ nhất của hàm số F bằng 5,5 đạt khi

1 2

1,5 2,5

x x

Ghi chú: Ký hiệu [ ] sẽ được máy hiểu là không có điều kiện ràng buộc tương ứng.

Ví dụ 6 (Đề thi tuyển sinh Đại học năm 2015) Cho các số thực a, b, c thuộc đoạn [1; 3] và

thỏa mãn điều kiện a + b + c = 6 Tìm giá trị lớn nhất của biểu thức:

2 2 2 2 2 2 12 72 1

2

ab bc ca

Trước hết ta tìm giá trị nhỏ nhất của biểu thức:

2 2 2 2 2 2 12 72 1

2

ab bc ca

Thỏa mãn điều kiện a, b, c thuộc đoạn [1; 3] và thỏa mãn điều kiện a + b + c = 6

Xem a là x1, b là x2 và c là x3 ta có:

Thuật toá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 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 quả chạy chương trình cho ta giá trị nhỏ nhất của hàm số Q bằng -14,5455 và dấu bằng

Trang 6

có khi a = 1, b = 2, c = 3 Giá trị này phù hợp với đáp án đưa ra của Bộ giáo dục và đào tạo là giá trị lớn nhất bằng

160 14,5455

11  , đạt khi a = 1, b = 2, c = 3 (rất ít thí sinh làm được câu này).

Ghi chú: Matlab chỉ lập trình cho bài toán tìm Min Nếu yêu cầu bài toán là tìm Max của

hàm F thì trước hết ta tìm Min của hàm –F, giả sử đó là M, khi đó Max cần tìm chính là –M

2.3 Ứng dụng phần mềm Matlab giải các bài toán quy hoạch tuyến tính

Bài toán: Tìm Min (Max) của 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 một 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)

Ví dụ 7 Tìm giá trị nhỏ nhất của hàm số F x x x 1, ,2 3 2x1 3x23x3

thỏa mãn:

1 2

1 2 3

1 2 3

3

x x x

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ỏ nhất của F bằng 4,5; đạt khi x1 = 4,5; x2 = 1,5; x3 =0

Ghi chú: Trong hệ điều kiện của bài toán cụ thể phải đưa về nguyên dạng, chẳng hạn ở bài

toán này thì điều kiện x12x2 x3  phải được đưa về 1  x1 2x2 x3 1

Ví dụ 8 Tìm GTLN của hàm số Fx x x1, ,2 3 3x1 8x2 5x3 thỏa mãn hệ điều kiện:

1 2

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);

Trang 7

x0 = [0; 0; 0];

[x,fval] = linprog(f, A, b, [ ], [ ], lb, [ ], x0)

Kết quả:

Hàm số Fx x x1, ,2 3 3x1  8x2  5x3

đạt giá trị nhỏ nhất tại x1 = 1,6667; x2 = 0,7778;

x3 = 2,6667 và giá trị nhỏ nhất đạt được là -24,5556 (đây là các giá trị gần đúng, còn giá trị đúng tương ứng là 1 2 3

và giá trị nhỏ nhất là

221 9

)

Vậy giá trị lớn nhất cần tìm là 24,5556 đạt tại x1 = 1,6667; x2 = 0,7778; x3 = 2,6667 (đó là giá trị gần đúng, còn giá trị đúng là

221

9 , đạt tại 1 2 3

)

3 Kết luận

Mỗi phần mềm ra đời đều có một ý nghĩa chuyên dụng, đem lại lợi ích nhất định đối với người sử dụng Mục đích chính của phần mềm Matlab là giải toán (chủ yếu là tính toán kỹ thuật), bởi vậy nếu khai thác hết được tính năng của phần mềm Matlab vào quá trình dạy và học toán sẽ mang lại ý nghĩa hết sức to lớn Trong bài viết chúng tôi chỉ mới nghiên cứu và trình bày một vài kết quả ban đâu, tuy nhiên có thể rút ra một số kết luận sau:

 Matlab giải các bài toán cực trị, Min, Max cho kết quả chính xác trong thời gian rất ngắn (khoảng một giây);

 Matlab có thể giải được bài toán quy hoạch tuyến tính gốc mà không cần phải mất thời gian chuyển về dạng chuẩn tắc;

 Các thao tác của người dùng đối với phần mềm Matlab khá đơn giản: Chỉ cần dùng đúng tên lệnh và sử dụng đúng cấu trúc lệnh mà không cần phải lập trình (như các phần mềm khác: Pascal, C+, C++, …), nghĩa là bất cứ ai cũng có thể dễ dàng sử dụng nó;

 Chỉ cần soạn thảo các bài toán trên Word hoặc PowerPoin rồi copy sang Matlab mà không cần trực tiếp soạn trên Matlab nên rất tiện dụng;

 Sử dụng phần mềm Matlab có thể giúp những người không được đào tạo chuyên sâu về toán vẫn có thể giải được nhiều bài toán trong thực tế liên quan đến ngành nghề của họ như: Bài toán tối ưu trong sản xuất, trong xây dựng, bài toán vận tải, …

 Các kiến thức toán chúng ta học được khi đang ngồi trên ghế nhà trường thường là kiến thức toán học chính xác còn trong thực tế cuộc sống thì tính toán gần đúng (tương đối) mang ý nghĩa quan trọng hơn Giải các bài toán với phần mềm Matlab giúp chúng ta gắn toán học với thực tiễn, phù hợp với xu hướng dạy học hiện đại: học tập gắn liền với cuộc 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 Toán kinh tế phần quy hoạch tuyến tính.

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

w