1. Trang chủ
  2. » Mẫu Slide

ỨNG DỤNG PHẦN MỀM MATLAB ĐỂ GIẢI MỘT SỐ MÔ HÌNH TOÁN TRONG KINH TẾ

6 118 1

Đ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 6
Dung lượng 297,56 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài báo này trình bày ứng dụng của phần mềm Matlab để giải quyết một số bài toán tối ưu trong kinh tế.. Từ khóa: tối ưu trong kinh tế, ứng dụng Matlab, bài toán tối ưu,...[r]

Trang 1

ỨNG DỤNG PHẦN MỀM MATLAB

ĐỂ GIẢI MỘT SỐ MÔ HÌNH TOÁN TRONG KINH TẾ

Nguyễn Quỳnh Hoa * , Phạm Thị Linh, Trần Thị Mai

Trường Đại học Kinh tế & Quản trị kinh doanh – ĐH Thái Nguyên

TÓM TẮT

Trong thực tế hiện nay hầu hết các bài toán trong sản xuất, kinh doanh hàng hóa là các bài toán tối

ưu Đã có rất nhiều phương pháp để giải các bài toán tối ưu này nhưng việc ứng dụng các phần mềm để giải các bài toán tối ưu hứa hẹn nhiều triển vọng Bài báo này trình bày ứng dụng của phần mềm Matlab để giải quyết một số bài toán tối ưu trong kinh tế

Từ khóa: tối ưu trong kinh tế, ứng dụng Matlab, bài toán tối ưu,

ĐẶT VẤN ĐỀ*

MatLab là một phần mềm nổi tiếng của công

ty MathWorks, là một công cụ có tính ứng

dụng cao trong tính toán được cộng đồng hàn

lâm trên thế giới chấp nhận rộng rãi như một

công cụ phục vụ cho giảng dạy, nghiên cứu

toán học và phát triển các ứng dụng kỹ thuật

Hiện nay đã có rất nhiều đầu sách về Matlab

dành cho giáo viên, sinh viên và các nhà

chuyên môn Ở Việt nam, Matlab cũng đã

được đưa vào giảng dạy cho sinh viên, học

viên cao học hoặc giới thiệu tại một số khoa,

trường đại học Các ứng dụng tiêu biểu của

Matlab bao gồm: hỗ trợ toán học và tính toán;

phát triển thuật toán; mô hình, mô phỏng;

phân tích, khảo sát và hiển thị số liệu; đồ họa

khoa học và kỹ thuật; phát triển ứng dụng với

giao diện đồ họa

Ngày nay trong quá trình phân tích kinh tế,

chúng ta phải sử dụng rất nhiều kiến thức về

toán học như: phân tích số liệu và thống kê,

tìm cực trị của hàm một biến hoặc nhiều biến,

giải bài toán tối ưu một hay nhiều mục tiêu,

tìm nghiệm của phương trình, tính gần đúng

tích phân, giải phương trình vi phân… Với ưu

thế về tính toán số trị Matlab rất thích hợp

cho việc ứng dụng để giải một số mô hình

toán trong kinh tế Việc sử dụng Matlab để

lập trình các thuật toán có cái lợi là đơn giản

và dễ dàng vẽ các đồ thị để hiển thị kết quả

Đặc biệt, trong Matlab đã được cài đặt sẵn rất

nhiều các hàm tính toán toán học

*

Tel: 0977 615828, Email: hoakhcb@gmail.com

TỔNG QUAN VỀ PHẦN MỀM MATLAB Tên của phần mềm MATLAB là viết tắt của thuật ngữ “MATrix LABoratory”, được Cleve Moler phát minh vào cuối thập niên 1970, và sau đó là chủ nhiệm khoa máy tính tại Đại học New Mexico Năm 2004 MATLAB 7 phát hành, có khả năng chính xác đơn và kiểu nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm, và có môi trường phân tích số liệu tương tác Đến tháng 12 năm 2008, phiên bản 7.7 được phát hành với SP3 cải thiện Simulink cùng với hơn 75 sản phẩm khác

Một số đặc trưng chính của MATLAB:

- MATLAB là ngôn ngữ thông dịch

- Các hàm trong MATLAB cơ bản (không kể các thư viện chuyên dụng được gọi là các ToolBox) được chia làm 2 loại: hàm trong và hàm ngoài Các hàm trong là các hàm được cài đặt sẵn (built-ins) tức là tồn tại dưới dạng

mã nhị phân nên ta không thể xem được mã nguồn của chúng, thí dụ các hàm sin, sqrt, log, clear, clc, Đây là các hàm hay được sử dụng hoặc các hàm đòi hỏi nhiều thời gian xử

lý Các hàm ngoài là các hàm tồn tại dưới dạng mã nguồn mà người dùng có thể tham khảo hoặc chỉnh sửa, bổ sung khi cần thiết, thí dụ log10, ode23, fzero,

- Phần tử dữ liệu chính của MATLAB là các

ma trận (mảng) mà kích thước của chúng không cần khai báo trước như trong các ngôn ngữ lập trình khác Tuy nhiên, để tăng tốc độ

xử lý cần báo trước cho MATLAB biết kích thước tối đa của mảng để phân bổ bộ nhớ

Trang 2

bằng một lệnh gán, chẳng hạn A(20,30)=0

Các khả năng chính của MATLAB cơ bản:

- Thực hiện các tính toán toán học bao gồm:

ma trận và đại số tuyến tính, đa thức và nội

suy, phân tích số liệu và thống kê, tìm cực

trị của hàm một biến hoặc nhiều biến, tìm

nghiệm của phương trình, tính gần đúng tích

phân, giải phương trình vi phân…

- Đồ họa 2 chiều và 3 chiều

Xây dựng giao diện người dùng

Chương trình

 Một chương trình MATLAB thường được

soạn trong các M-file (các file có đuôi m)

Để chạy các dòng lệnh trong file xyz.m

nào đó, ta vào cửa sổ làm việc và gõ xyz rồi

Enter Lưu ý: lúc này đường dẫn tới thư

mục chứa file xyz.m (và các file liên quan)

phải được khai báo trong Current

Directory của MATLAB Khi mới khởi

động, thư mục này mặc định là Work trong

chỗ cài đặt Matlab (thường là

C:\MATLAB7\work)

Dòng lệnh

- Các dòng lệnh trong MATLAB được thực

hiện tiếp nối nhau Mỗi dòng lệnh thông

thường có thể có dấu “;” ở cuối hoặc không

Nếu dòng lệnh không có dấu “;” ở cuối thì

kết quả sẽ được xuất ra Trong trường hợp

không muốn nhìn các kết quả trung gian mà

chỉ muốn xem kết quả cuối cùng, ta sử dụng

dấu “;” cho các dòng lệnh mà ta không muốn

xem kết quả

- Nếu muốn loại bỏ một dòng lệnh khi chạy

chương trình, ta có thể để dấu % ở đầu dòng

lệnh Thông thường dấu % được sử dụng

để ghi các chú thích (chỉ dùng cho người

đọc, máy không thực thi)

Hàm số

- Hàm số xyz được viết trên file xyz.m, có cú

pháp kiểu như:

function a=xyz(b,c) % day la ham xyz

Trong đó b, c là các dữ liệu nhập vào, a là giá

trị trả về (trong chương trình sẽ có ít nhất

một lệnh gán, chẳng hạn a = b + c;)

- Để xem công dụng của một hàm số xyz (là

hàm có sẵn trong thư viện hoặc do ta tự định

nghĩa), ta vào cửa sổ làm việc và gõ help

xyz rồi Enter Ta sẽ được xem các chú thích

trong file xyz.m

Biến số

- Các biến được ký hiệu bằng một ký tự hoặc

1 chuỗi ký tự MATLAB phân biệt chữ thường và chữ hoa

- Các biến thông thường được định nghĩa trong 1 file được gọi là biến địa phương

(local variable) MATLAB cũng cho phép sử dụng một số biến toàn cục (global variable) Biến toàn cục xx phải được khai báo là

global xx, trong tất cả các file mà xx xuất

hiện, có một file định nghĩa xx, chẳng hạn gán xx=3

- Biến i và j được mặc định là số ảo đơn vị (i^2=-1) Tuy nhiên, nếu ta dùng lệnh gán i=3 thì biến i sẽ mang giá trị 3

MỘT SỐ MÔ HÌNH TOÁN TRONG KINH TẾ

Mô hình tối ưu một biến không ràng buộc

Xét hàm số một biến y = f(x) với

x   D R D được gọi là miền xác định của hàm số

- Điểm x  D được gọi là điểm cực đại địa phương của hàm số, nếu với

   (U là lân cận của x) thì luôn

f x  f x 

- Điểm x  D được gọi là điểm cực đại toàn cục của hàm số nếu với   x D

luôn có f x  f x  Tương tự, có thể định nghĩa khái niệm cực tiểu địa phương và cực tiểu toàn cục Các điểm cực tiểu hay cực đại được gọi chung là điểm cực trị

Mô hình tối ưu nhiều biến không ràng buộc

Xét hàm số n biến f : DR nR D được gọi là miền xác định của hàm số

- Điểm x  D được gọi là điểm cực đại địa phương của hàm số, nếu với

   (U là lân cận của x) thì luôn

f  x  f x 

Trang 3

- Điểm x  D được gọi là điểm cực

đại toàn cục của hàm số nếu với   x D

luôn có f  x  f x 

Tương tự, có thể định nghĩa khái niệm cực

tiểu địa phương và cực tiểu toàn cục Các

điểm cực đại hay cực tiểu được gọi chung là

điểm cực trị

Dễ thấy, mọi điểm cực đại (cực tiểu) toàn cục

cũng là điểm cực đại (cực tiểu) địa phương,

trong khi đó điều ngược lại không nhất thiết

luôn xảy ra

Mô hình tối ưu n biến và một phương

trình ràng buộc

Phương pháp nhân tử Lagrange

Xét bài toán zf x 1, ,x nMax Min( ) với

ràng buộc g x 1, ,x nc

Ta có hàm Lagrange L f c g 

(được gọi là nhân tử Lagrange)

Điều kiện cần

1

0

n x x L L  L  (*)

Giả sử 0  0 0  1, , n, 0 xx x  là nghiệm của (*) Khi đó x0 được gọi là điểm dừng của hàm Lagrange Điều kiện đủ Giả sử x0 được gọi là điểm dừng của hàm Lagrange Ta tính các đạo hàm riêng cấp 2 của hàm Lagrange tại điểm x0 Đặt   2   0 0 0 1, ,

i n ij i i j g L g x x L x x x x        Ta có ma trận H 1 1 11 1 1 0

n n n n nn g g g L L H g L L                Gọi Hk là định thức con chính cấp k+1 của ma trận H Khi đó: +) Nếu   1k H k 0  k 2,n thì hàm  1, , nzf x x với ràng buộc g x 1, ,x nc đạt giá trị cực đại tại điểm  0 0 1, , n x x +) Nếu H k 0  k 2,n thì hàm  1, , nzf x x với ràng buộcg x 1, ,x nc đạt giá trị cực tiểu tại điểm  0 0 1, , n x x Mô hình tối ưu n biến và m phương trình ràng buộc Phương pháp nhân tử Lagrange Xét bài toán zf x 1, ,x nMax Min( ) với các ràng buộc       1 1 1 2 1 2 1 , ,

, ,

, ,

n n m n m g x x b g x x b g x x b           Ta có hàm Lagrange     1 1 1 m m m L fbg   bg Trong đó, 1, , m được gọi là các nhân tử Lagrange Điều kiện cần Hệ phương trình sau có nghiệm     0 1, 0 1, k i L k m L i n x               Giả sử 0  0 0 0 0 1, , ,n 1, , m xx x   là nghiệm của (*) Khi đó x0 được gọi là điểm dừng của hàm Lagrange Điều kiện đủ Giả sử x0 được gọi là điểm dừng của hàm Lagrange Ta tính các đạo hàm riêng các đạo hàm riêng   2   0 0 0 1, ,

k ki n ij i i j g L g x x L x x x x        Ta có ma trận H 11 1 1 11 1 11 1 1 0 0

0 0

n

n

H

g

1

g mn L n L nn

Trang 4

Gọi Hk là định thức con chính cấp k+1 của ma

trận H

Khi đó:

+)Nếu  1k H k 0   k m 1,n thì hàm

 1, , n

zf x x với ràng buộc

1

, ,

, ,

, ,

n

n

đạt giá trị cực đại tại điểm  0 0

1, , n

+) Nếu  1m H k0   k m 1,n thì hàm

 1, , n

zf x x với ràng buộc

1

, ,

, ,

, ,

n

n

g x x b

g x x b

g x x b

đạt giá trị cực tiểu tại điểm  0 0

1, , n

x x

Mô hình tối ưu có điều kiện với ràng buộc

là bất phương trình

Xét bài toán: Chọn (x, y) để hàm số

 , 

zf x y đạt cực đại (cực tiểu) với ràng

buộc g x y , bg x y , b

Để giải bài toán này, trước hết ta thay ràng

buộc đã cho bởi ràng buộc g x y  ,   b

Bằng phương pháp nhân tử Lagrange ta tìm

được điểm dừng của hàm Lagrange là

 0 0 0

, ,

Khi đó:

Đối với bài toán cực đại hóa hàm

 , 

zf x y với ràng buộc g x y , b

+) Nếu 0

0

  thì điều kiện áp đặt thực sự là

ràng buộc và phương án chọn tối ưu là

 0 0

,

x y

+) Nếu 0

0

  thì điều kiện áp đặt không phải là ràng buộc thực Trong trường hợp này

ta bỏ ràng buộc và quay trở về giải bài toán cực trị tự do

Đối với bài toán cực đại hóa hàm

 , 

zf x y với ràng buộc g x y  ,   b +) Nếu 00 thì điều kiện áp đặt thực sự là ràng buộc và phương án chọn tối ưu là

 0 0

,

x y

+) Nếu 0  0 thì điều kiện áp đặt không phải là ràng buộc thực Trong trường hợp này

ta bỏ ràng buộc và quay trở về giải bài toán cực trị tự do

Đối với bài toán cực tiểu hóa hàm

 , 

zf x y với ràng buộc g x y , b

+) Nếu 00 thì điều kiện áp đặt thực sự là ràng buộc và phương án chọn tối ưu là

 0 0 ,

+) Nếu 0  0 thì điều kiện áp đặt không phải là ràng buộc thực Trong trường hợp này

ta bỏ ràng buộc và quay trở về giải bài toán cực trị tự do

Đối với bài toán cực tiểu hóa hàm

 , 

zf x y với ràng buộc g x y  ,   b +) Nếu 00 thì điều kiện áp đặt thực sự là ràng buộc và phương án chọn tối ưu là

x y0, 0 +) Nếu 0  0 thì điều kiện áp đặt không phải là ràng buộc thực Trong trường hợp này

ta bỏ ràng buộc và quay trở về giải bài toán cực trị tự do

ỨNG DỤNG PHẦN MỀM MATLAB ĐỂ GIẢI MỘT SỐ MÔ HÌNH TOÁN TRONG KINH TẾ

Trong giới hạn bài báo này, chúng tôi sẽ xét mô hình bài toán sản xuất, kinh doanh hàng hóa

Bài toán: Xét mô hình cân bằng thị trường

độc quyền với hai mặt hàng cho bởi các phương trình sau: Q1= 40 – 2P1 + P2; Q2= 15 + P1 – P2 Trong đó, Q1và Q2 là các mức cầu

về hai mặt hàng với các giá P1, P2 tương ứng

Trang 5

Cho biết hàm chi phí là C = Q1

2

+ Q1Q2+ Q2

2

và hàm doanh thu là

R = 55Q1 + 70Q2 – 2Q1Q2 – Q1

2 – 2Q2 2

Hãy tìm các mức cân bằng về cầu và về giá cả

Q1, Q2, P1, P2 để lợi nhuận đạt giá trị lớn

nhất Biết hàm lợi nhuận là

Chương trình viết trên Matlab giải bài

toán tối ưu trên

function g=ham2bien(x1,x2)

g=55*x1+70*x2-3*x1*x2-2*x1*x1-3*x2*x2;

popsize=50;

generation=1000;

bits=20;

vlb=0;

vub=8;

Pc=1;

Pm=0.01;

newgen=genbin(bits,popsize);

fittol=0;

for i=1:popsize fit(i)=0;end

for n=1:generation

for i=1:popsize

x1=decode(newgen(i,1:bits/2),vlb,vub,bits/2);

x2=decode(newgen(i,bits/2+1:bits),vlb,vub,bi

ts/2);

fit(i)=ham2bien(x1,x2);

fittol=fittol+fit(i);

end

norm_fit = fit/sum(fit);

selected = rand(size(fit));

sum_fit = 0;

for i=1:length(fit),

sum_fit = sum_fit + norm_fit(i);

index = find(selected<sum_fit);

selected(index) = i*ones(size(index));

end

newgen = newgen(selected,:);

[junk,mating] = sort(rand(size(newgen,1),1));

newgen = newgen(mating,:);

lchrom = size(newgen,2);

ceil(rand(size(newgen,1)/2,1)*(lchrom-1));

sites = sites.*(rand(size(sites))<Pc);

for i = 1:length(sites);

newgen([2*i-1 2*i],:) = [newgen([2*i-1 2*i],1:sites(i))

newgen([2*i 2*i-1],sites(i)+1:lchrom)]; end

[pop bitlength]=size(newgen);

for i=1:popsize for j=1:bits

if rand<=Pm

if newgen(i,j)==1 newgen(i,j)=0;

else newgen(i,j)=1;

end end end end end max=0;

%tim gen co do thich nghi nhat a=newgen;

for i=1:popsize x1=decode(newgen(i,1:bits/2),vlb,vub,bits/2); x2=decode(newgen(i,bits/2+1:bits),vlb,vub,bi ts/2);

fit(i)=ham2bien(x1,x2);

if fit(i)>max max=fit(i);chiso=i;end end

giatrilon=max;

b=chiso;

x1=decode(a(chiso,1:bits/2),vlb,vub,bits/2); fprintf('Gia tri lon nhat dat tai x1= %d\n', x1); x2=decode(a(chiso,bits/2+1:bits),vlb,vub,bits/ 2);

fprintf('Gia tri lon nhat dat tai x2= %d\n', x2); r=ham2bien(x1,x2);

fprintf('Gia tri lon nhat dat tai %d\n', r);

Kết quả chạy chương trình trên Matlab

Gia tri lon nhat dat tai x1= 8 Gia tri lon nhat dat tai x2= 7.593353e+000 Gia tri lon nhat dat tai 4.883172e+002 KẾT LUẬN

Trong bài báo này tôi đã hệ thống lại được những kiến thức cơ bản về MATLAB và lập trình trong MATLAB; đưa ra được một số mô hình tối ưu ứng dụng trong kinh tế và ứng dụng của Matlab để giải quyết bài toán tối ưu Hướng nghiên cứu ứng dụng của Matlab để giải các mô hình toán trong kinh tế vẫn còn

Trang 6

rất nhiều vấn đề để nghiên cứu, ví dụ như ứng

dụng Matlab để giải quyết những mô hình

toán trong kinh tế liên quan đến kiến thức về

đạo hàm, phương trình vi phân, phương trình

sai phân,

TÀI LIỆU THAM KHẢO

1 Michael W Klein, Mathematical methods for

economics, Addison– Wesley Higher Education

Group, 2002

2 Hoàng Đình Tuấn, Lí thuyết mô hình toán kinh

tế (dành cho sinh viên ngành toán kinh tế và toán tài chính), Nxb Khoa học và Kĩ thuật, 2003

3 Nguyễn Hải Thanh, Toán ứng dụng, Nxb Đại

học Sư phạm Hà Nội, 2005

4 Nguyễn Phùng Quang, Matlab & Simulink dành cho kỹ sư điều khiển tự động, Nxb Khoa học và

Kĩ thuật, 2006

5 Tô Cẩm Tú, Một số phương pháp tối ưu hóa

trong kinh tế, Nxb Khoa học và Kĩ thuật, 1997

SUMMARY

MATLAB SORFWARE APPLICATIONS TO DEAL

WITH SOME MATHERMATICAL MODELS IN ECONOMICS

Nguyen Quynh Hoa * , Pham Thi Linh, Tran Thi Mai

College of Economics and Business Administration - TNU

In current situation, most of the calculations in manufacturing and trading goods and services are optimal calculations There have been many waysfor dealing these kinds of optimal calculations but the applications of algorithm calculating development can be considered the promise for further prospects This article presents a new way for dealing with multi-purpose optimal calculations that is using GA-Genetic Algorithm

Key words: maximizes, Genetic Algorithm, encoded real number

*

Tel: 0977 615828, Email: hoakhcb@gmail.com

Ngày đăng: 15/01/2021, 07:54

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w