Tải bản đầy đủ (.doc) (11 trang)

MATLAB với môn học các PHƯƠNG PHÁP số

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (162.15 KB, 11 trang )

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 CC PHNG PHP S
ng Quang
Vin Cụng ngh thụng tin
Vin khoa hc v cụng ngh Vit nam
Trong bỏo cỏo ny chỳng tụi cp n vic s dng MATLAB trong
vic ging dy mụn Cỏc phng phỏp s v gii thiu v mt th vin cỏc
chng trỡnh/hm mó ngun phc v cho mụn hc ú.

1. Gii thiu s lc v MATLAB
MATLAB phn mm ni ting ca cụng ty MathWorks, l mt ngụn
ng hiu nng cao cho tớnh toỏn k thut nh c vit trong logo ca
phn mm ny. Nú tớch hp tớnh toỏn, hin th v lp trỡnh trong mt mụi
trng 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 vit bng FORTRAN cung cp truy nhp
d dng ti phn mm ma trn c phỏt trin bi cỏc d ỏn LINPACK v
EISPACK. Sau ú nú c vit bng ngụn ng C trờn c s cỏc th vin nờu
trờn v phỏt trin thờm nhiu lnh vc ca tớnh toỏn khoa hc v cỏc ng
dng k thut.
Ngoi MATLAB c bn vi cỏc kh nng rt phong phỳ s c
cp sau, phn mm MATLAB cũn c trang b thờm cỏc ToolBox cỏc gúi


chng trỡnh (th vin) cho cỏc lnh vc ng dng rt a dng nh x lý tớn
hiu, nhn dng h thng, x lý nh, mng n ron, logic m, ti chớnh, ti
u húa, phng trỡnh o hm riờng, sinh tin hc,... õy l cỏc tp hp


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
mó ngun vit bng chớnh MATLAB da theo cỏc thut toỏn mi, hu hiu
m ngi dựng cú th chnh sa hoc b sung thờm cỏc hm mi.
MATLAB c thit k gii cỏc bi toỏn bng 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 cng cú th tớnh toỏn ký hiu c nh cỏc hm
trong Symbolic Math ToolBox.

Mt s c trng chớnh ca MATLAB:
MATLAB l ngụn ng thụng dch. Vỡ th nú cú th lm vic hai ch
: tng tỏc v lp trỡnh. Trong ch tng tỏc MATLAB thc hin
tng lnh c gừ trong ca s lnh sau du nhc lnh v kt qu
tớnh toỏn c hin ngay trong ca s ny, cũn th c hin
trong mt ca s khỏc. Lnh tng 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 thnh mt tờp uụi .m (m-file). Cỏc hm cng
c t chc thnh cỏc m-file. Mt chng trỡnh cú th gm nhiu
m-file. chy chng trỡnh ch cn gừ tờn m-file chớnh trong ca s
lnh ri Enter.
Cỏc hm trong MATLAB c bn (khụng k cỏc th vin chuyờn dng
c gi l cỏc ToolBox) c chia lm 2 loi: hm trong v hm

ngoi. Cỏc hm trong l cỏc hm c ci t sn (built-ins) tc l
tn ti di dng mó nh phõn nờn ta khụng th xem c mó ngun
ca chỳng, thớ d cỏc hm sin, sqrt, log, clear, clc,.... õy l cỏc
hm hay c s dng hoc cỏc hm ũi hi nhiu thi gian x lý.
Cỏc hm ngoi l cỏc hm tn ti di dng mó ngun m ngi
dựng cú th tham kho hoc chnh sa, b sung khi cn thit, thớ d
log10, ode23, fzero,...
Phn t d liu chớnh ca MATLAB l cỏc ma trn (mng) m kớch
thc ca chỳng khụng cn khai bỏo trc nh trong cỏc ngụn ng
lp trỡnh khỏc. Tuy nhiờn, tng tc x lý cn bỏo trc cho
MATLAB bit kớch thc ti a ca mng phõn b b nh bng mt
lnh gỏn, chng hn A(20,30)=0.

Cỏc kh nng chớnh ca MATLAB c bn:


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
Thc hin cỏc tớnh toỏn toỏn hc bao gm: ma trn v i s tuyn
tớnh, a thc v ni suy, phõn tớch s liu v thng kờ, tỡm cc tr
ca hm mt bin hoc nhiu bin, tỡm nghim ca phng trỡnh,
tớnh gn ỳng tớch phõn, gii phng trỡnh vi phõn.
ha 2 chiu v 3 chiu: MATLAB cung cp rt nhiu cỏc hm
ha, nh ú ta cú th nhanh chúng v c th ca hm bt k 1
bin hoc 2 bin, v c cỏc kiu mt, cỏc contour, trng vn
tc,...Ngoi ra MATLAB cũn v rt tt cỏc i tng 3 chiu phc tp
nh hỡnh tr, hỡnh cu, hỡnh xuyn,..v cung cp kh nng x lý nh
v hot hỡnh.
Xõy dng giao din ngi dựng: vi MATLAB 7 ngi dựng cú th d

dng xõy dng giao din gm cỏc thc n, nỳt lnh, hp thoi, hp
chn,...m khụng cn phi vit mó nh cỏc phiờn bn trc õy.

2. MATLAB vi mụn hc Cỏc phng phỏp s
Nh cú cỏc kh nng v u th nh ó núi trờn MATLAB c cng
ng hn 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.
Hn 3500 trng i hc nht l cỏc trng i hc k thut ó a
MATLAB vo ging dy v nghiờn cu. Hin nay ó cú trờn 700 u sỏch
v MATLAB dnh cho giỏo viờn, sinh viờn v cỏc nh chuyờn mụn. Trờn
Internet cỏc ti liu cú liờn quan n MATLAB rt nhiu. Nu vo trang
Web http:\\www.google.com.vn tỡm kim theo t khúa MATLAB ta s
tỡm thy nhiu triu kt qu cú liờn quan, trong ú cú nhiu ti liu gii
thiu v dy v MATLAB. Thớ d: A practical introduction to MATLAB ta
a ch ,MATLAB summary and
Tutorial ti /> Vit nam, theo tụi c bit, MATLAB ó c a vo ging dy
cho sinh viờn, hc viờn cao hc hoc gii thiu ti mt s khoa, trng i
hc v cng ó xut bn mt s u sỏch v MATLAB dnh cho sinh viờn
cỏc khi khoa hc v k thut. ó cú nhiu sinh viờn ngnh Toỏn v cỏc
ngnh k thut s dng MATLAB lm ỏn tt nghip. Tuy nhiờn mc
ph bin ca MATLAB cha phi l cao.


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
Vi u th v tớnh toỏn s tr MATLAB rt thớch hp cho vic ging
dy mụn hc Cỏc phng phỏp s- mụn hc khụng th thiu c i
vi sinh viờn toỏn, lý, cụng ngh thụng tin v cỏc ngnh k thut. Vic s
dng MATLAB lp trỡnh cỏc thut toỏn ca mụn hc ny cú cỏi li l n

gin, d dng v cỏc th hin th kt qu v kim tra kt qu cỏc
chng trỡnh t vit so vi kt qu ca cỏc hm ó ci t sn vỡ MATLAB
c bn cha ng rt nhiu cỏc hm tớnh toỏn toỏn hc nh ó núi trong
mc 1. Nhn thc c iu ny, trong quỏ trỡnh ging dy mụn hc Cỏc
phng phỏp s tụi ó khuyn 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 phng phỏp s vit cui nm 2003 nhng
cha xut bn tụi ó minh ha cỏc thut toỏn bng cỏc chng trỡnh vit
bng MATLAB v trong phn Ph lc tụi ó cung cp mt s kin thc c
bn v phn mm ny lm c s ban u sinh viờn cú th t hc thờm
v MATLAB. Giỏo trỡnh ny tụi cng ó cho photocopy ph bin.
Hin nay trờn th gii ngi ta ó xut bn khỏ nhiu sỏch v cỏc
phng phỏp s vi cỏc chng trỡnh vit bng MATLAB. Cỏc chng trỡnh
ny thng c t chc thnh cỏc ToolBox v cung cp min phớ trờn
Internet. Di õy l danh sỏch mt s sỏch v a ch cỏc Web site ni
gii thiu hoc cú th ti v cỏc ToolBox phn mm ng hnh vi sỏch:
1. Gerald Recktenwald, Numerical methods with MATLAB, Prentice
Hall, 2000. Companion Software: nmm (Numerical methods with
MATLAB) ToolBox. />2. Shoichiro Nakamura, Numerical Analysis and Graphic Visualization
with MATLAB, Prentice Hall, 1996. Companion Software:
Numerical Analysis and Graphic Visualization Toolbox.
/> />3. Charles F. Van Loan, Introduction to Scientific Computing: A
Matrix-Vector Approach Using MATLAB, Prentice Hall, 1997,
/>4. David Kincaid & Ward Cheney,Numerical Analysis, 2e, Brooks/Cole
Publishing Company, 1996
/>Kincaid_Cheney/matlab.


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
5. John H. Mathews, Numerical Methods for Mathematics, Science,
and Engineering, 2e, Prentice Hall, 1992,
/>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.
13.
Howard Wilson, Louis H. Turcotte, David Halpern, Advanced
Mathematics and Mechanics Applications Using MATLAB, Third
Edition, CRC Press, 1998.
Trong phn tip theo chỳng tụi gii thiu s lc v Numerical
methods with MATLAB ToolBox nmm ca Recktenwald.

3. Th vin chng trỡnh NMM ToolBox v cỏc phng
phỏp s

NMM ToolBox l mt th vin cha khong 150 chng trỡnh/hm
vit bng MATLAB v 40 tp d liu t cỏc ng dng rt a dng c t
chc thnh cỏc th mc: data, eigen, errors, fit, intergrate,interact,
interpolate, linalg, ode, program, rootfind and utils. Cỏc chng
trỡnh/hm u cho di dng mó ngun MATLAB nờn ngi dựng cú th
xem tham kho thut toỏn v t mỡnh chnh sa theo ý mun hoc da
vo ú vit cỏc hm khỏc. Tr th mc data cha cỏc tp d liu mu
cho cỏc thớ d, th mc utils cha mt s hm tin ớch v th mc interact
cha mt s hm v thớ d demo v cỏc loi ng, mt, contour, cũn cỏ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

22
th mc khỏc cha cỏc hm 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 phng trỡnh i s tuyn tớnh v
phi tuyn, gii s phng trỡnh vi phõn thng, tỡm nghim ca phng
trỡnh phi tuyn v mt s chng trỡnh tớnh toỏn khỏc. Di õy trớch chn
mt s hm 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 phng phỏp tớnh no.

Th mc Intergrate:
Hm I = trapezoid(fun,a,b,npanel) v hm 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 tng ng ca hm cú tờn l fun
t a n b vi s on chia u l npanel.
Hm demoTrap v hm demoSimp khụng tham s minh ha s
dng hm trapezoid v simpson tớnh tớch phõn ca hm 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 hm 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.
Hm [x,w] = GLNodeWt(n) tớnh cỏc nỳt v trng s ca cụng thc
cu phng Gauss-Legendre bc n.
Hm 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.
Hm demoGauss minh ha tớnh tớch phõn ca hm s x*exp(-x)
trờn on [0,5] bng cụng thc Gauss-Legendre.
Hm compIntRules khụng tham s so sỏnh cỏc cụng thc hỡnh
thang, Simpson v Gauss-Legendre trờn thớ d hm x*exp(-x) trờn
on [0,5].
Thớ d ỏp dng: Trong ca s lnh thc hin lnh fun = inline('x.*exp(x)'), ri lnh plotTrapInt(fun,0,1,5) MATLAB s tớnh c tớch phõn bng
0.2609 v v hỡnh di õy


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

23

0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
0


0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Hình 1. Minh họa công thức hình thang

Thư mục Interpolate
− Hàm yi = lagrint(x,y,xi) tính nội suy hàm cho bởi bảng giá trị (x,y)
tại xi bằng đa thức nội suy Lagrange.
− Hàm [yhat,dy,cout] = newtint(x,y,xhat) tính nội suy bởi đa thức
Newton.
− Hàm linterp(x,y,xi)nội suy từng mẩu tuyến tính.
− Hàm [yhat,aa,bb,cc,dd] = splint(x,y,xhat,opt1,opt2) nội suy bởi
hàm spline bậc 3 với các loại điều kiện biên khác nhau.

− Hàm compSplinePlot demo hàm spline với các loại điều kiện biên
khác nhau.


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

24

Natural end conditions

Zero-slope end conditions

0.5

0.5
knots
x*exp(-x)
spline

0.4
0.3

0.3

0.2

0.2

0.1


0.1

0

0

2

4

knots
x*exp(-x)
spline

0.4

6

0

0

Not-a-knot end conditions
knots
x*exp(-x)
spline

0.4
0.3


0.3
0.2

0.1

0.1
0

2

4

4

6

knots
x*exp(-x)
spline

0.4

0.2

0

2

Exact-slope end conditions


6

0

0

2

4

6

Hình 2. Spline bậc 3 với các điều kiện biên khác nhau

Thư mục RootFind
− Hàm r = bisect(fun,xb,xtol,ftol) tìm nghiệm của phương trình
f(x)=0 bằng phương pháp chia đôi.
− Hàm r = newton(fun,x0,xtol,ftol)tìm nghiệm của phương trình
f(x)=0 bằng phương pháp Newton.
− Hàm xm = demoBisect(xleft,xright,n) minh họa phương pháp chia
đôi giải phương trình x - x^(1/3) – 2 = 0.
− Hàm x = demoNewton(x0,n) minh họa phương pháp Newton.

Thư mục Fit
− Hàm [c,R2] = linefit(x,y)tìm đường thẳng phù hợp (hồi quy tuyến
tính).
− Hàm lineTest minh họa đường thẳng phù hợp.
− Hàm c = xexpfit(x,y) tìm đường phù hợp dạng y =
c(1)*x*exp(c(2)*x) bằng phương pháp bình phương cực tiểu.
− Hàm demoXexp(n)minh họa hàm trên



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

25
3.5

0.7
original
noisy
fit

0.6

3

c1 = 4.524 c2 = -2.915

0.4
2

10 points in synthetic data set

y

y data and fit function

0.5
2.5


0.3
1.5

0.2
1

0.5

0.1

0

1

2

3
x values

4

5

Hình 3. Đường thẳng phù hợp

6

0

0


0.2

0.4

0.6

0.8

1
x

1.2

1.4

1.6

2

Hình 4. Đường y = c1*x*exp(c2*x) phù
hợp

Thư mục Linalg
− Hàm x = GEshow(A,b,ptol)chỉ ra các bước giải hệ phương trình
Ax=b bằng phương pháp khử Gauss không trụ xoay.
− Hàm C = Cholesky(A)tìm khai triển Cholesky của ma trân đối xứng,
xác định dương A = C'*C.
− Hàm [L,U] = luNopiv(A,ptol)tìm khai triển A = L*U không xoay.
− Hàm [L,U,pv] = luPiv(A,ptol) tìm khai triển A = L*U có xoay


Thư mục ode
− Hàm [t,y] = odeEuler(f,tn,h,y0) giải số phương trình vi phân
dy/dt=f(t,y) trên đoạn [0, tn] với điều kiện đầu y(0)=y0, bước lưới
h bằng phương pháp Euler.
− Hàm [t,y] = odeRK4(f,tn,h,y0)- phương pháp Runge-Kutta bậc 4.
− Hàm demoEuler(h)minh họa phương pháp Euler giải phương trình
dy/dt = t - 2*y; y(0) = 1.
− Hàm demoRK4(h) minh họa phương pháp Runge-Kutta bậc 4 giải
phương trình dy/dt = t - 2*y; y(0) = 1.
− Hàm [t,y] = odeRK4sys(diffeq,tn,h,y0)giải hệ phương trình vi phân
thường với véc tơ hàm vế phải diffeq.
− Hàm demoSystem minh họa phương pháp giải hệ phương trình vi
phân thường.

1.8


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

26
cú th hiu cỏc hm nờu trờn v cỏc hm khỏc trong NMM
ToolBox ch cn nm c mt s quy c v cỏch vit ma trn, trớch ma
trn, vộc t, mt s hm ci t sn nh: sum, max, min, prod, norm,
sort, length, size (cho kớch c ma trn), zeros (to ma trn vi cỏc phn t
0), linspace (to vộc t cỏc im cỏch u), eye (to ma trn n v), tril
v triu (tr v ma trn tam giỏc di v trờn), inline (xõy dng hm s
dng dũng), feval (tớnh giỏ tr ca hm) , mt s hm ha nh plot,
subplot, set, fill, xlabel, ylabel, legend, title.


4. Mt s nhn xột kt lun
i vi vic hc tp v nghiờn cu mụn Phng phỏp s núi riờng
v cỏc mụn Toỏn ng dng núi chung nh Ti u húa, Xỏc xutThng kờ thỡ MATLAB l mt mụi trng lý tng vỡ nú n gin, d
s dng, h tr nhiu hm ci t sn v rt nhiu hm di dng mó
ngun (ca MATLAB c bn v cỏc ToolBox Optimization, Statistics,
Spline, Wavelet, Curve Fitting) cng nh h tr ha phong phỳ.
Ngi s dng khụng phi mt thi gian vo vic lp trỡnh m cú th
dnh nhiu thi gian v cụng sc cho tỡm hiu v phỏt trin thut
toỏn.
i vi cụng vic phỏt trin cỏc phn mm ng dng toỏn hc thỡ
MATLAB cng l mụi trng lý tng vỡ nú cng cung cp cụng c
xõy dng giao din thõn thin mt cỏch nhanh chúng.
Khụng ch nh võy, MATLAB cũn l mụi trng vụ cựng thun li
cho vic hc tp, nghiờn cu v phỏt trin cỏc ng dng a dng
trong nhiu lnh vc khỏc nhau ca khoa hc v cụng ngh t iu
khin, trớ tu nhõn to n ti chớnh, vin thụng,...
Chớnh vỡ th, MATLAB c ụng o cỏc gii khoa hc v cụng
ngh s dng rng rói v c ging dy, ph bin trờn ton th gii.
Vit nam chỳng ta cng phi lm c iu ny.

TI LIU THAM KHO
1. ng Quang , Matlab-mt mụi trng tớnh toỏn k thut v ha
nhanh, Tuyn tp bỏo cỏo Hi tho Phỏt trin cụng c tin hc tr
giỳp cho ging dy, nghiờn cu v ng dng toỏn hc, H ni, 910/4/1999, 194-198.


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

27
2. Lê Viết Dư Khương, Matlab một công cụ tin học mạnh trợ giúp hữu

hiệu việc giảng dạy và nghiên cứu trong nhiều lĩnh vực khoa học và
kỹ thuật, Tuyển tập trên, 55-74.
3. Đặng Quang Á, Xây dựng một số hàm giải phương trình đạo hàm
riêng cấp bốn bổ sung cho ToolBox PDE của MATLAB, Hội thảo “Một
số vấn đề chọn lọc của công nghệ thông tin và truyền thông”, Thái
nguyên, 8/2003.
4. MATLAB Help của MATLAB version 7.0.1, 9/2004.
5. Web site
6. Trang Web />


×