Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 17
MATLAB VI MÔN HC CÁC PHƯƠNG PHÁP S
Đng Quang Á
Vin Công ngh thông tin
Vin khoa hc và công ngh Vit nam
Trong báo cáo này chúng tôi đ cp đến vic s dng MATLAB trong vic ging
dy môn Các phương pháp s và gii thiu v mt thư vin các chương trình/hàm mã
ngun phc v cho môn hc đó.
1. Gii thiu sơ lược v MATLAB
MATLAB – phn mm ni tiếng ca công ty MathWorks, là mt ngôn ng hiu
năng cao cho tính toán k thu t như được viết trong logo ca phn mm này. Nó tích
hp tính toán, hin th và lp trình trong mt môi trường d s dng. Các ng dng tiêu
biu ca MATLAB bao gm:
H tr toán hc và tính toán
Phát trin thut toán
Mô hình, mô phng
Phân tích, kho sát và hin th s liu
Đ ha khoa hc và k thut
Phát trin ng dng vi các giao din đ ha.
Tên ca phn mm MATLAB bt ngun t thut ng “Matrix Laboratory”. Đu
tiên nó được viết bng FORTRAN đ cung cp truy nhp d dàng ti phn mm ma
trn được phát trin bi các d án LINPACK và EISPACK. Sau đó nó được viết bng
ngôn ng C trên cơ s các thư vin nêu trên và phát trin thêm nhiu lĩnh vc ca tính
toán khoa hc và các ng dng k thut.
Ngoài MATLAB cơ bn vi các kh năng rt phong phú s được đ cp sau,
phn mm MATLAB còn được trang b thêm các ToolBox các gói chương trình (thư
vin) cho các lĩnh vc ng dng rt đa dng như x lý tín hiu, nhn dng h thng, x
lý nh, mng nơ ron, logic m, tài chính, ti ưu hóa, phương trình đo hàm riêng, sinh tin
hc,... Đây là các tp hp mã ngun viết bng chính MATLAB da theo các thut toán
mi, hu hiu mà người dùng có th chnh sa hoc b sung thêm các hàm mi.
Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 18
MATLAB đ ượ c thi ế t k ế đ gi i các bài toán b ng s ch không nhm mc đích
chính là tính toán ký hiu như MATHEMATICA và MAPLE. Tuy nhiên, trong MATLAB
cũng có th tính toán ký hiu được nh các hàm trong Symbolic Math ToolBox.
Mt s đc trưng chính ca MATLAB:
MATLAB là ngôn ng thông dch. Vì thế nó có th làm vic hai chế đ: tương
tác và lp trình. Trong chế đ tương tác MATLAB thc hin tng lnh được gõ
trong ca s lnh sau du nhc lnh và kết qu tính toán được hin ngay trong
ca s này, còn đ th được hin trong mt ca s khác. Lnh tương tác có th
là đơn gin, thí d tính sin(1.5) hoc v fplot('sin(1 ./ x)', [0.01 0.1]), có th là cu
trúc điu kin, thí d if x<=0; y=0; else; y=1; end hoc các cu trúc lp xác đnh
và không xác đnh. Trong chế đ lp trình mt tp lnh được son tho và ghi
thành mt têp đuôi .m (m-file). Các hàm cũng được t chc thành các m-file. Mt
chương trình có th gm nhiu m-file. Đ chy chương trình ch cn gõ tên m-file
chính trong ca s lnh ri Enter.
Các hàm trong MATLAB cơ bn (không k các thư vin chuyên dng được gi là
các ToolBox) được chia làm 2 loi: hàm trong và hàm ngoài. Các hàm trong là các
hàm được cài đt sn (built-ins) tc là tn ti dưới dng mã nh phân nên ta không
th xem được mã ngun ca chúng, thí d các hàm sin, sqrt, log, clear, clc,.... Đây
là các hàm hay được s dng hoc các hàm đòi hi nhiu thi gian x lý. Các
hàm ngoài là các hàm tn ti dưới dng mã ngun mà người dùng có th tham
kho hoc chnh sa, b sung khi cn thiết, thí d log10, ode23, fzero,...
Phn t d liu chính ca MATLAB là các ma trn (mng) mà kích thước ca
chúng không cn khai báo trước như trong các ngôn ng lp trình khác. Tuy nhiên,
đ tăng tc đ x lý cn báo trước cho MATLAB biết kích thước ti đa ca
mng đ phân b b nh bng mt lnh gán, chng hn A(20,30)=0.
Các kh năng chính ca MATLAB cơ bn:
Thc hin các tính toán toán hc bao gm: ma trn và đi s tuyến tính, đa thc
và ni suy, phân tích s liu và thng kê, tìm cc tr ca hàm mt biến hoc nhiu
biến, tìm nghim ca phương trình, tính gn đúng tích phân, gii phương trình vi
phân.
Đ ha 2 chiu và 3 chiu: MATLAB cung cp rt nhiu các hàm đ ha, nh đó
ta có th nhanh chóng v được đ th ca hàm bt k 1 biến hoc 2 biến, v
được các kiu mt, các contour, trường vn tc,...Ngoài ra MATLAB còn v rt
Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 19
tt các đi tượng 3 chiu phc tp như hình tr, hình cu, hình xuyến,..và cung
cp kh năng x lý nh và hot hình.
Xây dng giao din người dùng: vi MATLAB 7 người dùng có th d dàng xây
dng giao din gm các thc đơn, nút lnh, hp thoi, hp chn,...mà không cn
phi viết mã như các phiên bn trước đây.
2. MATLAB vi môn hc Các phương pháp s
Nh có các kh năng và ưu thế như đã nói trên MATLAB được cng đng hàn
lâm trên thế gii chp nhn rng rãi như mt công c phc v cho ging dy, nghiên
cu toán hc và phát trin các ng dng k thut. Hơn 3500 trường đi hc nht là các
trường đi hc k thut đã đưa MATLAB vào ging dy và nghiên cu. Hin nay đã có
trên 700 đu sách v MATLAB dành cho giáo viên, sinh viên và các nhà chuyên môn. Trên
Internet các tài liu có liên quan đến MATLAB rt nhiu. Nếu vào trang Web
http:\\www.google.com.vn tìm kiếm theo t khóa “MATLAB” ta s tìm thy nhiu triu
kết qu có liên quan, trong đó có nhiu tài liu gii thiu và dy v MATLAB. Thí d: A
practical introduction to MATLAB ta đa ch
http://www.math.mtu.edu/~msgoken/ ,MATLAB summary and Tutorial ti
http://www.math.ufl.edu/help/matlab-tutorial.
Vit nam, theo tôi được biết, MATLAB đã được đưa vào ging dy cho sinh
viên, hc viên cao hc hoc gii thiu ti mt s khoa, trường đi hc và cũng đã xut
bn mt s đu sách v MATLAB dành cho sinh viên các khi khoa hc và k thut. Đã
có nhiu sinh viên ngành Toán và các ngành k thut s dng MATLAB làm đ án tt
nghip. Tuy nhiên mc đ ph biến ca MATLAB chưa phi là cao.
Vi ưu thế v tính toán s tr MATLAB rt thích hp cho vic ging dy môn
hc “Các phương pháp s”- môn hc không th thiếu được đi vi sinh viên toán, lý,
công ngh thông tin và các ngành k thut. Vic s dng MATLAB đ lp trình các thut
toán ca môn hc này có cái li là đơn gin, d dàng v các đ th đ hin th kết qu và
kim tra kết qu các chương trình t viết so vi kết qu ca các hàm đã cài đt sn vì
MATLAB cơ bn cha đng rt nhiu các hàm tính toán toán hc như đã nói trong mc
1. Nhn thc được điu này, trong quá trình ging dy môn hc “Các phương pháp s
tôi đã khuyến cáo sinh viên khai thác và s dng MATLAB đ lp trình thay cho s dng
ngôn ng truyn thng là PASCAL hoc C. Trong giáo trình “Các phương pháp s viết
cui năm 2003 nhưng chưa xut bn tôi đã minh ha các thut toán bng các chương
trình viết bng MATLAB và trong phn Ph lc tôi đã cung cp mt s kiến thc cơ
Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 20
bn v phn mm này làm cơ s ban đu đ sinh viên có th t hc thêm v MATLAB.
Giáo trình này tôi cũng đã cho photocopy đ ph biến.
Hin nay trên thế gii người ta đã xut bn khá nhiu sách v các ph ươ ng pháp
s vi các chương trình viết bng MATLAB. Các chương trình này thường được t chc
thành các ToolBox và cung cp min phí trên Internet. Dưới đây là danh sách mt s sách
và đa ch các Web site nơi gii thiu hoc có th ti v các ToolBox –phn mm đng
hành vi sách:
1. Gerald Recktenwald, Numerical methods with MATLAB, Prentice Hall, 2000.
Companion Software: nmm (Numerical methods with MATLAB) ToolBox.
http://www.prenhall.com/recktenwald
2. Shoichiro Nakamura, Numerical Analysis and Graphic Visualization with MATLAB,
Prentice Hall, 1996. Companion Software: Numerical Analysis and Graphic
Visualization Toolbox. ftp://ftp.mathworks.com/pub/books/nakamura/,
http://www.mathworks.com/matlabcentral/fileexchange
3. Charles F. Van Loan, Introduction to Scientific Computing: A Matrix-Vector
Approach Using MATLAB, Prentice Hall, 1997, ftp://ftp.cs.cornell.edu/pub/cv.
4. David Kincaid & Ward Cheney,Numerical Analysis, 2e, Brooks/Cole Publishing
Company, 1996
ftp://ftp.brookscole.com/brookscole/Mathematics/Texts_by_Author/Kincaid_Cheney
/matlab.
5. John H. Mathews, Numerical Methods for Mathematics, Science, and Engineering,
2e, Prentice Hall, 1992, ftp://ftp.mathworks.com/pub/books/mathews/
6. George Lindfield & John Penny, Numerical Methods Using MATLAB,
Prentice Hall/Ellis Horwood, 1995,
7. G. J. Borse, Numerical Methods With MATLAB: A Resource for Scientists and
Engineers, PWS Publishing Company, 1997,
8. Gunnar Backstrom, Practical Mathematics Using MATLAB 5,
Studentlitteratur, 1997
9. G.W. Recktenwald Numerical Methods with MATLAB: Implementations and
Applications, Prentice Hall, 2000. www.me.pdx.edu/~gerry/nmm
10. Paolo Brandimarte, Numerical Methods in Finance: A MATLAB-Based Introduction,
Wiley, 2001.
11. Laurene V. Fausett , Applied Numerical Analysis Using Matlab, Prentice Hall, 1999.
12. Won Young Yang, Wenwu Cao, Tae-Sang Chung, John Morris, Applied Numerical
Methods Using MATLAB, Wiley, 2005.
Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 21
13. Howard Wilson, Louis H. Turcotte, David Halpern, Advanced Mathematics and
Mechanics Applications Using MATLAB, Third Edition, CRC Press, 1998.
Trong phn tiếp theo chúng tôi gii thiu sơ lược v Numerical methods with
MATLAB ToolBox –nmm ca Recktenwald.
3. Thư vin chương trình NMM ToolBox v các phương pháp s
NMM ToolBox là mt thư vin cha khong 150 chương trình/hàm viết bng
MATLAB và 40 tp d liu t các ng dng rt đa dng được t chc thành các thư
mc: data, eigen, errors, fit, intergrate,interact, interpolate, linalg, ode, program, rootfind
and utils. Các chương trình/hàm đu cho dưới dng mã ngun MATLAB nên người dùng
có th xem đ tham kho thut toán và t mình chnh sa theo ý mun hoc da vào đó
đ viết các hàm khác. Tr thư mc data cha các tp d liu mu cho các thí d, thư
mc utils cha mt s hàm tin ích và thư mc interact cha mt s hàm và thí d demo
v các loi đường, mt, contour, còn các thư mc khác cha các hàm và các thí d minh
ha v giá tr riêng, sai s, đường phù hp, tích phân s, ni suy, h phương trình đi s
tuyến tính và phi tuyến, gii s phương trình vi phân thưng, tìm nghim ca phương
trình phi tuyến và mt s chương trình tính toán khác. Dưới đây trích chn mt s hàm
trong các thư mc ca NMM ToolBox th hin các thut toán rt cơ bn có trong bt k
giáo trình phương pháp tính nào.
Thư mc Intergrate:
Hàm I = trapezoid(fun,a,b,npanel) và hàm I = simpson(fun,a,b,npanel) tính gn đúng
tích phân theo công thc hình thang và công thc Simpson tương ng ca hàm có
tên là fun t a đến b vi s đon chia đu là npanel.
Hàm demoTrap và hàm demoSimp không tham s minh ha s dng hàm trapezoid
và simpson tính tích phân ca hàm s x*exp(-x) trên đon [0,5] vi các s đon
chia là 2 4 8 16 32 64 128 256.
Các hàm I = plotTrapInt(fun,a,b,npanel)và plotSimpInt(fun,a,b,nsub) cho biu din
đ ha các công thc hình thang và Simpson.
Hàm [x,w] = GLNodeWt(n) tính các nút và trng s ca công thc cu phương
Gauss-Legendre bc n.
Hàm I = gaussQuad(fun,a,b,npanel,nnode) tính gn đúng tích phân theo công thc
Gauss-Legendre vi s nút trên mi đon con là nnode.
Hàm demoGauss minh ha tính tích phân ca hàm s x*exp(-x) trên đon [0,5]
bng công thc Gauss-Legendre.