50
HOÏC MATLAB BAÈNG THÍ DUÏ Trònh Anh Ngoïc 8/5/2009

hoc nhanh matlab.pdf

Embed Size (px)

Citation preview

Page 1: hoc nhanh matlab.pdf

HOÏC MATLAB BAÈNG THÍ DUÏ

Trònh Anh Ngoïc

8/5/2009

Page 2: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 1

Taøi lieäu naøy ñöôïc vieát vôùi muïc ñích höôùng daãn caùc sinh vieân hoïc nhanh veà Matlab.Phaàn ñaàu taøi lieäu laø noäi dung baøi giaûng cuûa taùc giaû veà Matlab trong hoïc phaàn ”Giaûiphöông trình baèng maùy tính”. Moät soá thí duï, chöông trình tính toaùn soá ñöôïc laáy töø baøigiaûng ”Giaûi tích soá 1” cho lôùp cöû nhaân taøi naêng, ”Cô hoïc chaát loûng” cuõng cuûa taùc giaû.Matlab laø phaàn meàm trôï giuùp tính toaùn soá vaø kyù hieäu, do ñoù taøi lieäu goàm hai phaàn: (1)tính toaùn kyù hieäu, vaø (2) tính toaùn soá. Sau khi ñoïc xong taøi lieäu naøy, sinh vieân coù theå:

- Duøng Matlab giaûi caùc baøi toaùn giaûi tích, ñaïi soá vaø ñaïi soá tuyeán tính;

- Duøng Matlab ñeå vieát chöông trình tính toaùn cho caùc moân nhö Phöông phaùp phaàntöû höõu haïn, Giaûi tích soá, Cô hoïc vaät raén bieán daïng, Cô hoïc chaát loûng . . .

1 Vai troø cuûa maùy tính trong nghieân cöùu vaø öùngduïng toaùn hoïc

• Coâng cuï trôï giuùp tính toaùn soá vaø kyù hieäu.Veà tính toaùn soá: giuùp moâ phoûng caùc baøi toaùn thuoäc laõnh vöïc khoa hoïc vaø kyõ

thuaät, phaân tích döõ lieäu.

Veà tính toaùn kyù hieäu: cho pheùp thöïc hieän, kieåm tra caùc pheùp bieán ñoåi toaùnhoïc; döï ñoaùn, thöû nghieäm caùc döï ñoaùn toaùn hoïc; ñaùnh giaù thöïc haønh caùc keát quaû lyùthuyeát.

• Hieån thò caùc keát quaû baèng ñoà hoïa.

2 Matlab - phaàn meàm toaùn hoïc

Matlab laø moät ngoân ngöõ thöïc hieän daønh cho tính toaùn, ñaëc bieät laø caùc tính toaùn kyõthuaät. Vôùi Matlab ta coù theå tính toaùn, hình dung, vaø laäp trình cho caùc ñoái töôïngtoaùn hoïc.

Matlab laø moät heä thoáng töông taùc maø phaàn töû döõ lieäu cô baûn cuûa noù laø maûng(array). Ñieàu naøy, theå hieän trong teân goïi cuûa noù (Matlab laø vieát taét cuûa Matrixlaboratory), cho pheùp ta thöïc hieän deã daøng caùc tính toaùn ma traän vaø vectô thöôønggaëp trong caùc baøi toaùn kyõ thuaät.

Heä thoáng Matlab goàm naêm phaàn chính:

1) Ngoân ngöõ Matlab2) Moâi tröôøng laøm vieäc Matlab

3) Quaûn lyù ñoà hoïa

4) Thö vieän caùc haøm toaùn hoïc Matlab

5) Giao dieän chöông trình öùng duïng Matlab

Trong taøi lieäu naøy ta seõ laøm quen vôùi caùc phaàn 1) - 4). Baïn ñoïc neân tìm caùc

Page 3: hoc nhanh matlab.pdf

2 Trònh Anh Ngoïc

taøi lieäu:

Getting Started with MATLAB, MathWorks, Inc., 1998.

Symbolic Math Toolbox User’s Guide, MathWorks, Inc., 1998.trong tuû saùch cuûa MathWorks ñeå ñoïc theâm veà Matlab khi caàn.

3 Löôùt qua Matlab - caùi nhìn ñaàu

Trong muïc naøy ta seõ löôùt qua moät voøng Matlab ñeå coù moät caùi nhìn khaùi quaùt veà tínhnaêng vaø nhöõng ñaëc ñieåm ñaùng löu yù cuûa noù. Ñeå hoïc nhanh Matlab baïn phaûi ñoïc taøilieäu naøy vôùi maùy tính tröôùc maët. Haõy thöû thöïc hieän caùc thí duï ñöôïc ñöa ra trong taøilieäu. Quan saùt ”phaûn öùng” cuûa Matlab khi xöû lyù caùc leänh ñöa vaøo. Töï ñaët ra caùc thíduï ñeå thöû nghieäm, ñoïc kyõ caùc doøng caûnh baùo, thoâng baùo loãi neáu coù.

Hình 1: Cöûa soå Matlab.

◦ Ñeå khôûi ñoäng Matlab ta chæ caàn nhaép keùp (double click) vaøo bieåu töôïng cuûa

Page 4: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 3

noù, hoaëc vaøo menu start\All programs\Matlab 7.1 roài choïn Matlab 7.11.Moät cöûa soå coù teân Matlab (hay Matlab command) xuaát hieän cuøng vôùi daáu nhaécleänh >>(hình 1). Caùc leänh cuûa Matlab ñöôïc nhaäp vaøo töø ñaây.

◦ Ñeå thoaùt (quit) chæ caàn nhaép chuoät vaøo daáu X ôû goùc treân beân phaûi cöûa soåMatlab.

◦ Taát caû caùc ñoái töôïng ñöa vaøo Matlab phaûi ñöôïc ”khai baùo” baèng caùch xaùcñònh ”noäi dung” cuûa noù.

Vectô◦ Ñeå taïo moät vectô, thí duï a, trong cöûa soå Matlab command ta nhaäp vaøo

>> a = [1 2 3 4 5 6 9 8 7 6 5]sau khi nhaán enter Matlab traû veà:a =1 2 3 4 5 6 9 8 7 6 5Chuù yù: caùc thaønh phaàn cuûa vectô naèm giöõa hai daáu ngoaëc vuoâng, caùch nhau moätkhoaûng traéng. Dieãn ngöõ ”Matlab traû veà” seõ ñöôïc hieåu ngaàm trong caùc thí duï sau.

Taïo vectô b vôùi caùc thaønh phaàn laáy giaù trò nguyeân töø 0 ñeán 10>> b = 0:10b =0 1 2 3 4 5 6 7 8 9 10Neáu muoán caùc thaønh phaàn lieân tieáp caùch nhau 2 thì nhaäp vaøo>> c = 0:2:10c =0 2 4 6 8 10Kích thöôùc (chieàu daøi) cuûa vectô ñöôïc cho nhôø haøm length,>> dai=length(c)dai=6

◦ Tính toaùn treân vectô cuõng raát ñôn giaûn. Coäng caùc thaønh phaàn cuûa vectô avôùi 3>> a + 3ans =4 5 6 7 8 9 12 11 10Chuù yù: caùc leänh, caùc bieán ñöa vaøo ñöôïc Matlab löu giöõ trong workspace (vuøng laømvieäc). Coù theå hình dung workspace nhö laø tôø giaáy nhaùp ta duøng khi laøm tính, caùcpheùp tính ñöôïc vieát tuaàn töï töø treân xuoáng döôùi, ta coù theå xem laïi nhöõng keát quaû ñaõthöïc hieän, xoùa nhöõng bieán hoaëc bieåu thöùc ñöôïc ñöa vaøo (duøng leänh clear tenbienhoaëc clear all - xoùa taát caû). Noäi dung cuûa workspace ñöôïc hieån thò treân cöûasoå Matlab ta coù theå duøng thanh tröôït beân phaûi cöûa soå Matlab ñeå xem caùc noäi dungcuõ(hình 2).

Trong tính toaùn treân, do ta khoâng chæ ñònh pheùp gaùn, Matlab löu tröõ keát quaû

1Teân Matlab 7.1 coù theå khaùc tuøy thuoäc phieân baûn Matlab maø baïn duøng.

Page 5: hoc nhanh matlab.pdf

4 Trònh Anh Ngoïc

Hình 2: Noäi dung workspace ñöôïc hieån thò treân cöûa soå Matlab.

tính toaùn trong moät bieán taïm thôøi goïi laø ”ans”.

Veà maët toaùn hoïc ta khoâng theå coäng vectô vôùi moät soá! Trong thí duï treân Matlabñaõ môû roäng 3 ra thaønh ma traän [3 3 3 3 3 3 3 3 3] coù cuøng ñoä daøi nhö vectôa roài thöïc hieän pheùp coäng.

◦ Neáu caàn thöïc hieän laïi moät leänh ñaõ ñöôïc ñöa vaøo tröôùc ñoù ta coù theå taùi hieänlaïi leänh naøy baèng caùch nhaán phím ↑ moät soá laàn thích hôïp maø khoâng caàn phaûi goõ laïileänh.

Tính vectô d laø toång cuûa hai vectô a vaø b>> d = a + bd =1 3 5 7 9 11 15 15 15 15 15Chuù yù: muoán coäng hai vectô thì chuùng phaûi coù cuøng ñoä daøi. Pheùp tröø treân vectôcuõng ñöôïc thöïc hieän töông töï.

Ma traän◦ Nhaäp ma traän vaøo Matlab gioáng nhö nhaäp moät vectô, ngoaïi tröø moãi doøng

caùch nhau bôûi daáu chaám phaåy hoaëc enter (return):

Page 6: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 5

>> B = [1 2 3 4; 5 6 7 8; 9 10 11 12]hay>> B = [1 2 3 45 6 7 89 10 11 12]B =1 2 3 45 6 7 89 10 11 12Kích thöôùc ma traän ñöôïc cho baèng haøm size,>> size(B)ans=3 4

◦ Matlab coù theå thöïc hieäu nhieàu pheùp tính ma traän, döôùi ñaây laø moät soá pheùptính thöôøng duøng (baïn ñoïc töï ñöa ra thí duï ñeå thöû nghieäm), danh saùch caùc leänh ñöôïchieån thò khi duøng leänh help. Töø danh saùch naøy ta coù theå tra cöùu cuù phaùp leänh vaøcaùc thoâng tin lieân quan.

Pheùp coäng (tröø) hai ma traän töông töï nhö tröôøng hôïp vectô. Ñaëc bieät, nhaân matraän vôùi moät soá coù theå vieát theo thöù töï naøo cuõng ñöôïc. Thí duï, neáu A laø ma traän slaø moät soá thì hai leänh s*A vaø A*s cho cuøng moät keát quaû.

Chuyeån vò:>> C = B ’

Neáu B laø ma traän phöùc thì B ’ cho chuyeån vò cuûa lieân hôïp phöùc cuûa B. Trongtröôøng hôïp muoán laáy chuyeån vò cuûa B ta phaûi duøng ”.’”>> D = B .’

Nhaân hai ma traän:>> D = A * B

Neáu muoán nhaân caùc phaàn töû töông öùng cuûa hai ma traän coù cuøng kích thöôùc taduøng ”.*”>> G = E .* F

Neáu E laø ma traän vuoâng thì pheùp nhaân ma traän E vôùi chính noù n laàn coù theåthöïc hieän baèng pheùp laáy luõy thöøa. Thí duï:>> E∧3

Neáu muoán luõy thöøa töøng phaàn töû cuûa ma traän ta duøng ”.∧”. Thí duï:>> E .∧3

Nghòch ñaûo ma traän vuoâng:>> inv(E)

Caùc giaù trò rieâng:>> eig(E)

Ña thöùc ñaëc tröng:>> poly(E)

Page 7: hoc nhanh matlab.pdf

6 Trònh Anh Ngoïc

Haøm soá◦ Matlab coù moät thö vieän caùc haøm toaùn hoïc raát phong phuù nhö : sin, cos,

log, exp, sqrt, . . . Caùc soá thöôøng duøng nhö : π, i (hay j) =√−1 cuõng ñöôïc ñònh

nghóa saün trong Matlab.>> sin(pi/4)ans =0.7071

◦ Ñoái soá cuûa haøm coù theå laø moät ma traän. Thí duï, x=[1 2; 3 4], leänh exp(x)traû veàans =2.7183 7.389120.0855 54.5982ñoù chính laø ma traän

[exp(1) exp(2)exp(3) exp(4)

].

◦ Ñeå tìm hieåu caùch duøng moät haøm Matlab baát kyø chæ caàn goõ>> help [ten ham]

◦ Matlab cuõng cho pheùp ngöôøi söû duïng taïo caùc haøm rieâng cho mình baèng leänhfunction (seõ ñöôïc giôùi thieäu döôùi ñaây).

Ñoà thòTrong Matlab ñeå veõ ñoà thò moät haøm soá ta duøng haøm plot. Thí duï ñeå veõ ñoà

thò haøm sin(t), tröôùc heát ta taïo vectô thôøi gian t vaø roài tính giaù trò haøm sin taïimoãi thôøi ñieåm>> t = 0:0.25:7;y =sin(t);>> plot(t,y)Chuù yù: teân haøm (plot) vieát baèng chöõ thöôøng, daáu chaám phaåy cuoái moãi caâu leänh chæthò Matlab khoâng theå hieän keát quaû tính toaùn ra maøn hình.

M-fileM-file laø caùc file vaên baûn (text) chöùa maõ Matlab. Teân M-file coù phaàn môû roäng

”.m”. Coù hai loaïi M-file:

◦ Script, khoâng coù ñoái soá nhaäp/xuaát, gioáng nhö moät ”kòch baûn” ghi caùc leänhtính toaùn tuaàn töï maø ngöôøi söû duïng yeâu caàu. Khi goõ teân file ôû daáu nhaéc leänh roàinhaán phím enter, Matlab seõ thöïc hieän caùc leänh ghi trong file, treân döõ lieäu hieän haønhtrong vuøng laøm vieäc (workspace). Trong thöïc haønh, ñeå kieåm soaùt döõ lieäu tính toaùn,script file thöôøng baét ñaàu baèng leänh clear all xoùa taát caû caùc bieán löu tröõ trongworkspace, vaø khôûi taïo laïi caùc bieán maø script file caàn duøng.

◦ Function, coù ñoái soá nhaäp/xuaát. Loaïi file naøy thöôøng ñöôïc duøng ñeå ñònh nghóahaøm (gioáng nhö chöông trình con). Thí duï M-file rank.m

Page 8: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 7

Hình 3: Ñoà thò haøm y = sin(t) vôùi 0 ≤ t ≤ 7.

function r = rank(A,tol)% RANK Matrix rank.% RANK(A) provides an estimate of the number of linearly% independent rows or columns of a matrix A.% RANK(A,tol) is the number of singular values of A% that are larger than tol.% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.s = svd(A);if nargin = =1tol = max(size(A)) * max(s) * eps;endr = sum(s > tol);Chuù yù: function trong doøng thöù nhaát laø töø khoùa. Doøng naøy cho teân function vaøthöù töï caùc ñoái soá. Tieáp theo doøng ñaàu laø caùc doøng bình luaän, baét ñaàu baèng %, doøngñaàu tieân trong chuùng seõ ñöôïc Matlab hieån thò khi ta goõ leänh help rank. Phaàn coønlaïi cuûa file laø caùc doøng khaû thi.

4 Giôùi thieäu veà Symbolic Math Toolbox

Muïc naøy giôùi thieäu caùc neùt chính cuûa Symbolic Math Toolbox, moät thaønh phaàn cuûaMatlab ñaûm traùch vieäc tính toaùn kyù hieäu.

Page 9: hoc nhanh matlab.pdf

8 Trònh Anh Ngoïc

4.1 Ñoái töôïng kyù hieäu

Ñoái töôïng kyù hieäu (symbolic object) hay sym laø moät caáu truùc döõ lieäu löu tröõ moät chuoãi(string) bieåu dieãn cuûa kyù hieäu. Ñoái töôïng kyù hieäu ñöôïc duøng ñeå bieåu dieãn caùc bieán,caùc bieåu thöùc vaø caùc ma traän kyù hieäu. Ñeå taïo caùc bieán vaø bieåu thöùc kyù hieäu ta duønghaøm sym. Thí duï,>> x = sym(’x’)taïo moät bieán kyù hieäu x löu tröõ kyù töï x vaø>> a = sym(’alpha’)taïo moät bieán kyù hieäu a löu tröõ chuoãi caùc kyù töï alpha. Thí duï khaùc,>> rho = sym(’(1 + sqrt(5))/2’)taïo moät bieán kyù hieäu bieåu dieãn tæ leä vaøng (golden ratio).

4.2 Caùc pheùp tính kyù hieäu thöôøng duøng

Ta coù theå thöïc hieän nhieàu pheùp tính treân caùc bieán kyù hieäu. Döôùi ñaây laø moät vaøipheùp tính thöôøng duøng.

SUBS - thay theá kyù hieäu.◦ subs(s) thay theá taát caû caùc bieán trong bieåu thöùc kyù hieäu s baèng caùc giaù trò

nhaän ñöôïc töø haøm goïi, hay vuøng laøm vieäc. Thí duï, giaû söû a=980, C1=3 ñaõ toàn taïitrong vuøng laøm vieäc.>> y=exp(-a*t)*C1;>> subs(y)traû veà ans=3*exp(-980*t)

◦ subs(s,new) thay theá caùc bieán kyù hieäu töï do trong s baèng new. Thí duï, slaø bieåu thöùc f=x∧2>> subs(s,2)traû veà ans=4 (x ñöôïc thay baèng 2 trong bieåu thöùc s).

◦ subs(s,old,new) thay theá old baèng new trong bieåu thöùc s. ÔÛ ñaây oldlaø bieán kyù hieäu, chuoãi bieåu dieãn moät teân bieán hay chuoãi dieãn taû moät bieåu thöùc; newlaø moät bieán kyù hieäu hoaëc bieán soá hoaëc bieåu thöùc. Thí duï, subs(a+b,a,4) traû veà4+b (a ñöôïc thay theá baèng 4).

Leänh subs cuõng cho pheùp thay theá nhieàu bieán cuøng moät luùc. Thí duï,subs(cos(a)+sin(b),{a,b},{sym(’alpha’),2})traû veà cos(alpha)+sin(2) (a ñöôïc thay theá baèng chuoãi alpha, b ñöôïc thay theábaèng 2).

Neáu old vaø new laø caùc vectô hay maûng coù cuøng kích thöôùc, thì moãi phaàn töûcuûa old ñöôïc thay bôûi phaàn töû töông öùng cuûa new. Neáu s vaø old laø caùc voâ höôùngcoøn new laø maûng hay maûng ma traän (cell array), thì caùc voâ höôùng ñöôïc môû roäng rañeå cho keát quaû maûng. Thí duï, subs(exp(a*t),’a’,-[1 3; 4 2]) traû veà[ exp(-t), exp(-3*t)]

Page 10: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 9

[ exp(-4*t), exp(-2*t)]Trong thí duï naøy a ñöôïc môû roäng ra thaønh maûng roài thay theá caùc phaàn töû töông öùngcuûa noù baèng caùc phaàn töû töông öùng cuûa maûng -[1 3; 4 2]. Veà maët toaùn hoïc, caùcpheùp tính ñöôïc thöïc hieän nhö sau

exp([

−1 −3−4 −2

]∗ t

)= exp

([−t −3 ∗ t

−4 ∗ t −2 ∗ t

])=[

exp(−t) exp(−3 ∗ t)exp(−4 ∗ t) exp(−2 ∗ t)

]

Neáu new laø caùc ma traän maûng hay ma traän soá, thì söï thay theá ñöôïc thöïc hieäntöøng phaàn töû; nghóa laø subs(x*y,{x,y},{A,B}) traû veà A.*B khi A, B laø ma traäncaùc soá). Thí duï, subs(x*y,{x,y},{[0 1;-1 0],[1 -1;-2 1]}) traû veà[ 0, -1][ 2, 0]

EXPAND - khai trieån bieåu thöùc kyù hieäu.expand(s) vieát moãi phaàn töû cuûa bieåu thöùc kyù hieäu s nhö laø tích caùc thöøa soá

cuûa noù. expand hay ñöôïc duøng vôùi ña thöùc, ngoaøi ra noù cuõng ñöôïc duøng ñeå khaitrieån caùc bieåu thöùc löôïng giaùc, haøm muõ vaø haøm logarit.

Thí duï:

1) ((x-2)*(x-4)) traû veà x∧2-6*x+8.

2) expand(cos(x+y)) traû veà cos(x)*cos(y)-sin(x)*sin(y).

3) expand(exp((a+b)∧2)) traû veà exp(a∧2)*exp(a*b)∧2*exp(b∧2).

4) expand([sin(2*t), cos(2*t)]) traû veà [2*sin(t)*cos(t), 2*cos(t)∧2-1].

SIMPLIFY - ñôn giaûn bieåu thöùc kyù hieäu.simplify(s) ñôn giaûn moãi phaàn töû cuûa ma traän kyù hieäu s.

Thí duï:

1) simplify(sin(x)∧2 + cos(x)∧2) traû veà 1.

2) Vôùi rho laø bieán bieåu dieãn tæ leä vaøng (thí duï ôû treân).>> f = rho∧2-rho-1f =(1/2+1/2*5∧(1/2))∧2-3/2-1/2*5∧(1/2)>> simplify(f)f =0

3) simplify(exp(c*log(sqrt(alpha+beta)))) traû veà (alpha+beta)∧(1/2*c).

Chuù yù, leänh gaùn bieåu thöùc döôùi ñaây>> f = sym(’a*x∧2 + b*x + c’)khoâng taïo caùc bieán töông öùng vôùi caùc töø a, b, c, vaø x cuûa bieåu thöùc. Ñeå thieát laäpcaùc pheùp toaùn kyù hieäu (e.g., tích phaân, vi phaân, thay theá, etc.) treân f, ta caàn phaûi taïo

Page 11: hoc nhanh matlab.pdf

10 Trònh Anh Ngoïc

caùc bieán moät caùch töôøng minh>> a = sym(’a’)>> b = sym(’b’)>> c = sym(’c’)>> x = sym(’x’)hay ñôn giaûn>> syms a b c x

SIMPLE - tìm daïng ñôn giaûn nhaát cuûa bieåu thöùc kyù hieäu hay ma traän.

simple(s) coá gaéng thöû nhieàu bieán ñoåi ñaïi soá khaùc nhau ñeå ñôn giaûn s, roàitraû veà bieåu thöùc ngaén nhaát.

Döôùi ñaây laø keát quaû traû veà cuûa simple(s) keøm theo chæ ñònh pheùp bieán ñoåiñöôïc duøng.

s keát quaû phöông phaùpcos(x)∧2+sin(x)∧2 1 simplify2*cos(x)∧2-sin(x)∧2 3*cos(x)∧2-1 simplifycos(x)∧2-sin(x)∧2 cos(2*x) combine(trig)cos(x)+(-sin(x)∧2)∧(1/2) cos(x)+i*sin(x) radsimpcos(x)+i*sin(x) exp(i*x) convert(exp)(x+1)*x*(x-1) x∧3-x combine(trig)x∧3+3*x∧2+3*x+1 (x+1)∧3 factorcos(3*acos(x)) 4*x∧3-3*x expandlog(x) + log(y) log(x*y) combine

4.3 Moät soá caùch duøng khaùc cuûa haøm sym

a) Chuyeån ñoåi moät ma traän töø daïng soá sang daïng kyù hieäu. Leänh A = hilb(3)sinh ra ma traän Hilbert 3x3A =1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.2000AÙp duïng sym cho A>> A = sym(A)ta ñöôïc (chính xaùc voâ cuøng) daïng kyù hieäu cuûa ma traän Hilbert 3x3A =[ 1, 1/2, 1/3 ][ 1/2, 1/3, 1/4 ][ 1/3, 1/4, 1/5 ]

b) Xaây döïng caùc bieán thöïc vaø phöùc. Leänh sym cho pheùp chæ ñònh caùc tính chaáttoaùn hoïc cuûa bieán kyù hieäu baèng caùch duøng tuøy choïn ’real’. Nghóa laø, caùc leänh

Page 12: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 11

>> x = sym(’x’,’real’);>> y = sym(’y’,’real’);hay hieäu quaû hôn>> syms x y realtaïo caùc bieán kyù hieäu x vaø y coù tính chaát toaùn hoïc theâm vaøo laø caùc bieán thöïc. Ñieàunaøy coù nghóa laø bieåu thöùcf = x∧2 + y∧2laø khoâng aâm. Suy ra,z = x + I*ylaø moät (hình thöùc) bieán phöùc vaø coù theå tính toaùn nhö soá phöùc. Caùc leänh conj(x),conj(z), expand(z*conj(z)) traû laïi x, x - i*y, x∧2 + y∧2 (leänh conj laøtoaùn töû lieân hôïp phöùc). Neáu conj(x) == x traû laïi 1, thì x laø moät bieán thöïc. Ñeåxoùa tính chaát ”thöïc” cuûa x, ta duøng leänh>> syms x unrealhay>> x = sym(’x’,’unreal’)>> clear xkhoâng laøm x trôû thaønh bieán khoâng thöïc!

c) Duøng sym ñeå truy xuaát caùc haøm Maple. Ta coù theå truy xuaát haøm giai thöøak! cuûa Maple, baèng caùch duøng sym,>> kfac = sym(’k!’).Ñeå tính 6! hay n!, goõ>> syms k n>> subs(kfac,k,6)ans =720>> subs(kfac,k,n)ans =n!

d) Taïo caùc haøm tröøu töôïng. Leänh>> f = sym(’f(x)’)taïo bieán kyù hieäu f taùc ñoäng gioáng nhö f(x) vaø coù theå ñöôïc tính toaùn baèng caùc leänhcuûa Symbolic Math Toolbox. Thí duï, xaây döïng tæ sai phaân caáp 1, leänh>> df = (subs(f,’x’,’x+h’) - f)/’h’hay>> syms x h>> df = (subs(f,x,x+h)-f)/htraû veàdf =(f(x+h)-f(x))/h

e) Taïo caùc haøm toaùn hoïc kyù hieäu

Caùch 1 - duøng caùc bieåu thöùc kyù hieäu. Daõy caùc leänh>> syms x y z

Page 13: hoc nhanh matlab.pdf

12 Trònh Anh Ngoïc

>> r = sqrt(x∧2 + y∧2 + z∧2)>> t = atan(y/x)>> f = sin(x*y)/(x*y)sinh ra caùc bieåu thöùc kyù hieäu r, t, vaø f. Ta coù theå duøng diff (ñaïo haøm), int (tíchphaân), subs, vaø caùc haøm Symbolic Math Toolbox khaùc ñeå tính toaùn nhöõng bieåu thöùcnhö vaäy.

Caùch 2 - taïo moät M-File. Muoán taïo haøm sinc (=sin(x)/x), ta taïo moät M-file trong thö muïc @sym.function z = sinc(x)% SINC The symbolic sinc function% sin(x)/x. This function% accepts a sym as the input argumen.if is equal(x,sym(0))z = 1;elsez = sin(x)/x;end

Haøm plot ñöôïc duøng ñeå veõ ñoà thò cuûa caùc haøm ñöôïc cho döôùi daïng ”soá”, trongthí duï veõ ñoà thò ôû treân, haøm y=sin(t) haøm ñöôïc cho döôùi daïng ”soá” nhö laø daõy caùcñieåm hình hoïc (t(i),y(i)) (i=1,2,...,29) ñöôïc xaùc ñònh bôûi hai vectô t vaø y.Haøm plot veõ ñoà thò naøy baèng caùch noái caùc ñieåm bôûi caùc ñoaïn thaúng. Vôùi caùc haømtoaùn hoïc ñöôïc ñònh nghóa baèng kyù hieäu Matlab cung caáp haøm ezplot ñeå veõ ñoà thòcuûa chuùng,>> syms x real>> ezplot(sin(x))cho ta ñoà thò cuûa haøm sin trong khoaûng maëc nhieân [−2π, 2π]. Neáu muoán veõ ñoà thò

Hình 4: Ñoà thò haøm sin(x) duøng leänh ezplot(sin(x)).

trong khoaûng [0, 7] thì ta phaûi chæ ñònh roõ

Page 14: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 13

>> ezplot(sin(x),[0 7])

Hình 5: Ñoà thò haøm sin(x) duøng leänh ezplot(sin(x),[0 7]).

4.4 Bieán kyù hieäu maëc nhieân

Khi ta ñöa vaøo moät haøm toaùn hoïc baèng bieåu thöùc cuûa noù, thí duï>> clear all>> syms x n a t b>> f = x∧n>> g = sin(a*t+b)Matlab seõ töï ñoäng nhaän daïng ñaâu laø bieán kyù hieäu. Vaø khi ñöôïc yeâu caàu tính ñaïohaøm cuûa caùc haøm naøy, khoâng chæ ñònh bieán ñoäc laäp, thì Matlab seõ tính theo caùc bieánkyù hieäu maëc nhieân. Vôùi caùc haøm treân chuùng ta nhaän ñöôïcn*x∧(n-1)a*cos(a*t+b)

Laøm theá naøo ñeå bieát bieán maø Symbolic Math Toolbox laáy ñaïo haøm? Caâu traûlôøi laø leänh findsym.>> findsym(f,1)traû veàans =xNeáu trong findsym vaéng maët ñoái soá thöù hai thì Matlab traû veà moät danh saùch taát caûcaùc bieán>> findsym(g)ans =a, b, t

Page 15: hoc nhanh matlab.pdf

14 Trònh Anh Ngoïc

Quy taéc: Bieán kyù hieäu maëc nhieân trong moät bieåu thöùc kyù hieäu laø chöõ caùi gaàn x nhaát.Neáu coù hai chöõ caùi gaàn x nhö nhau, chöõ caùi ñöùng sau trong baûng chöõ caùi ñöôïc choïn.

4.5 Caùc thí duï tính toaùn kyù hieäu

Baây giôø chuùng ta baét ñaàu hoïc caùch duøng Matlab, cuï theå laø Symbolic Math Toolbox,ñeå tính toaùn kyù hieäu thoâng qua caùc thí duï.

Thí duï 1. Duøng phöông phaùp khöû Gauss giaûi heä phöông trình ñaïi soá tuyeán tính

x + 2y + 4z = 315x + y + 2z = 293x − y + z = 10

Ñöa vaøo ma traän caùc heä soá nôùi roäng>> clear all >> a=[1 2 4 31; 5 1 2 29; 3 -1 1 10]a =

1 2 4 31

5 1 2 29

3 -1 1 10Duøng doøng 1 khöû caùc soá haïng beân döôùi a11

>> a(2,:)=a(2,:)-5*a(1,:)a =

1 2 4 31

0 -9 -18 -126

3 -1 1 10>> a(3,:)=a(3,:)-3*a(1,:)a =

1 2 4 31

0 -9 -18 -126

0 -7 -11 -83Duøng doøng 2 khöû caùc soá haïng beân döôùi a22

>> a(2,:)=a(2,:)/(-9)a =

1 2 4 31

0 1 2 14

0 -7 -11 -83>> a(3,:)=a(3,:)+7*a(2,:)a =

1 2 4 31

Page 16: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 15

0 1 2 14

0 0 3 15Baïn ñoïc thöïc hieän noát phaàn coøn laïi (pheùp theá ngöôïc).

Thí duï 2. Giaûi vaø bieän luaän heä phöông trình ñaïi soá tuyeán tính

x + 2y + 2z = 0−2x + (m− 2)y + (m− 5)z = 2

mx + y + (m + 1)z = −2

Duøng quy taéc Cramer>> clear all>> syms m>> a=[1 2 2; -2 m-2 m-5; m 1 m+1];>> b=[0; 2; -2];Tính caùc ñònh thöùc cô baûn>> d1=det(a)d =m∧2-4*m+3d=factor(d1)d =(m-1)*(m-3)Thay coät 1 cuûa a baèng b. Ñeå traùnh thay ñoåi ta ñöa vaøo ma traän ad=a>> ad=a;>> ad(:,1)=b;>> d1=det(ad)d1 =-4*m+12Laøm töông töï>> ad=a;>> ad(:,2)=b;>> d2=det(ad)d2 =0>> ad=a;>> ad(:,3)=b;>> d3=det(ad)d3 =2*m-6Khi m 6= 1 vaø m 6= 3 heä coù nghieäm duy nhaát>> x=d1/dx =(-4*m+12)/(m∧2-4*m+3)>> x=simplify(x)

Page 17: hoc nhanh matlab.pdf

16 Trònh Anh Ngoïc

x =-4/(m-1)>> y=d2/dy =0>> z=d3/dz =(2*m-6)/(m∧2-4*m+3)>> z=simplify(z)z =2/(m-1)Tröôøng hôïp m = 1>> subs(d1)ans =8heä voâ nghieäm. Tröôøng hôïp m = 3 ta coù d1 = d2 = d3 = 0 tröôøng hôïp naøy phaûi xeùtcuï theå vaø duøng phöông phaùp Gauss, daønh cho baïn ñoïc.

Chuù thích 1. Leänh factor(s) traû veà vectô chöùa caùc thöøa soá nguyeân toá cuûa s. Trongthí duï naøy ta thaáy factor coù theå phaân tích ña thöùc thaønh tích.

Thí duï 3. Cho daõy

un =1

n + 1+

1n + 2

+1

n + 3+ . . . +

1n + n

.

Chöùng minh daõy {un} hoäi tuï vaø tìm giôùi haïn cuûa noù.

Thoâng thöôøng, ñeå tìm giôùi haïn cuûa caùc daõy soá maø soá haïng toång quaùt cuûa daõy laømoät toång, tröôùc heát ta tính toång ñeå xaùc ñònh un döôùi daïng coâng thöùc ñoùng2. TrongMatlab leänh symsum cho ta coâng cuï tính toång raát tieän lôïi3.>> clear all>> syms n,i>> un=symsum(1/(i+n),i,1,n)un =Psi(2*n+1)-Psi(n+1)Ñeán ñaây ta gaëp moät haøm ñaëc bieät, haøm digamma (baïn coù theå duøng help Psi ñeåbieát theâm veà haøm naøy). Tuy nhieân, neáu tieáp tuïc duøng leänh limit ta seõ ñöôïc giôùi

2Coâng thöùc ñoùng cuûa moät bieåu thöùc laø coâng thöùc maø soá pheùp tính caàn thöïc hieän laø xaùcñònh. ÔÛ ñaây coâng thöùc cuûa un coù soá pheùp tính taêng theo chæ soá n (khoâng xaùc ñònh).

3Töø ñaây, ngoaøi moät vaøi tröôøng hôïp, cuù phaùp cuûa caùc leänh Matlab seõ khoâng ñöôïc phaùt bieåutöôøng minh, baïn neân hoïc (ñoaùn) cuù phaùp cuûa noù thoâng qua thí duï hieän haønh, vaø chæ neânduøng ñeán help khi thaáy thaät caàn thieát.

Page 18: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 17

haïn cuûa daõy>> limit(un,n,inf)ans =log(2)Keát quaû traû veà cuøng bieåu thöùc xaùc ñònh un gôïi yù cho ta, un laø toång tích phaân cuûahaøm f(x) = 1/(1 + x) treân ñoaïn [0, 1] vôùi phaân hoaïch ñeàu ∆xi = 1/n vaø caùc ñieåmξi laø ñieåm cuoái cuûa caùc ñoaïn con. Ta coù

un =1

1 + 1/n

1n

+1

1 + 2/n

1n

+1

1 + 3/n

1n

+ . . . +1

1 + 11n

suy ra

limn→∞

un =∫ 1

0

dx

1 + x= ln(1 + x)|10 = ln(2).

Chuù thích 2. ÔÛ ñaây ta gaëp leänh limit - laáy giôùi haïn moät bieåu thöùc. Leänh naøy xuaáthieän döôùi nhieàu daïng thöùc:

limit(F,x,a) laáy giôùi haïn cuûa bieåu thöùc kyù hieäu F khi x → a.

limit(F,a) duøng findsym(F) nhö laø bieán ñoäc laäp.

limit(F) duøng a = 0 nhö laø ñieåm giôùi haïn.

limit(F,x,a,’right’) hay limit(F,x,a,’left’) laáy giôùi haïn moät phía.Thí duï:>> syms x a t hKhi ñoù:

limit(sin(x)/x) traû veà 1

limit((x-2)/(x∧2-4),2) traû veà 1/4

limit((1+2*t/x)∧(3*x),x,inf) traû veà exp(6*t)

limit(1/x,x,0,’right’) traû veà inflimit(1/x,x,0,’left’) traû veà -inf

limit((sin(x+h)-sin(x))/h,h,0) traû veà cos(x)

v = [(1 + a/x)∧x, exp(-x)];

limit(v,x,inf,’left’) traû veà [exp(a), 0]

Thí duï 4. Khaûo saùt söï hoäi tuï cuûa daõy {xn} xaùc ñònh bôûi coâng thöùc truy hoài

x1 =√

2, xn =√

2 − xn−1 (n ≥ 2).

YÙ töôûng ñaàu tieân ñeán vôùi ta laø aùp duïng ñònh lyù hoäi tuï cho daõy ñôn ñieäu. Tuynhieân, duøng Matlab tính 20 soá haïng ñaàu cuûa daõy

Page 19: hoc nhanh matlab.pdf

18 Trònh Anh Ngoïc

>> clear all>> x(1)=sqrt(2);>> for i=2:20, x(i)=sqrt(2-x(i-1)); end>> xx =Columns 1 through 151.4142 0.7654 1.1111 0.9428 1.0282 0.9858 1.0071 0.9965 1.0018 0.99911.0004 0.9998 1.0001 0.9999 1.0000Columns 16 through 201.0000 1.0000 1.0000 1.0000 1.0000 1.4142 0.7654 1.1111 0.9428 1.02820.9858 1.0071 0.9965 1.0018

Keát quaû traû veà cho thaáy daõy khoâng ñôn ñieäu. Nhöng ”hình nhö” daõy hoäi tuï veà1 (dao ñoäng quanh giaù trò 1). Ñieàu naøy daãn ta ñeán yù töôûng duøng nguyeân lyù aùnh xaï co.Deã thaáy, vôùi moïi n

0 ≤ xn ≤√

2 < 1.5.

Kyù hieäu f(t) =√

2 − t, ta coù xn = f(xn−1). Hôn nöõa,

xn − xn−1 = f ′(x∗)(xn−1 − xn−2) xn−2 < x∗ < xn−1 hay xn−1 < x∗ < xn−2.

Duøng Matlab khaûo saùt haøm soá f ′(t) treân ñoaïn [0, 1.5]>> syms t>> f=sqrt(2-t);>> df=diff(f)df =-1/2/(2-t)∧(1/2)>> ezplot(df,[0 1.5])Ñoà thò (hình 6) cho thaáy max[0,1.5] |f ′(t)| < 1, f laø aùnh xaï co treân [0, 1.5]. Chöùngminh chi tieát daønh cho baïn ñoïc.

Thí duï 5. Giaûi phöông trình vi phaân (x2+1)dy+ydx = 0 vôùi ñieàu kieän ñaàu y(1) = 1.Ta coù theå giaûi ngay phöông trình treân baèng caùch goïi haøm dsolve. Muïc ñích

vaø cuù phaùp cuûa haøm naøy ñöôïc theå hieän neáu ta goïi help dsolve töø daáu nhaéc Matlab.>> y=dsolve(’(1+x∧2)*Dy+y’,’y(1)=1’,’x’)y =1/exp(-1/4*pi)*exp(-atan(x))

ÔÛ ñaây ta chæ duøng Matlab trôï giuùp khi tính toaùn. Ñaây laø phöông trình vi phaân coùbieán phaân ly, taùch bieán ta ñöôïc:

dy

y+

dx

x2 + 1.

>> clear all>> syms x y

Page 20: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 19

Hình 6: Ñoà thò haøm f ′(t), thí duï 4.

>> tp1=int(1/y,y)tp1 =log(y)>> tp2=int(1/(x∧2+1),x)tp2 =atan(x)

Nghieäm toång quaùt cuûa phöông trình laø

ln y + arctgx = C.

Ñeå tìm nghieäm rieâng ta duøng Matlab trôï giuùp vieäc xaùc ñònh haèng soá tích phaân C .>> syms c>> pt=subs(tp1+tp2+c,{x,y},{1,1})pt =1/4*pi+c>> c=solve(pt,c)c =-1/4*pi

Vaäy nghieäm caàn tìm laø

ln y + arctgx =π

4.

Chuù thích 3. Trong thí duï ta gaëp hai leänh môùi cuûa Matlab: int vaø solve.INT - tích phaân haøm soá. Cuù phaùp:

int(s) laø tích phaân baát ñònh cuûa s ñoái vôùi bieán kyù hieäu nhö ñöôïc xaùc ñònhbôûi findsym. Neáu s laø haèng thì tích phaân ñöôïc laáy vôùi x.

Page 21: hoc nhanh matlab.pdf

20 Trònh Anh Ngoïc

int(s,v) laø tích phaân baát ñònh cuûa s laáy ñoái vôùi v. v laø bieán kyù hieäu voâhöôùng.

int(s,a,b) laø tích phaân xaùc ñònh cuûa s ñoái vôùi bieán kyù hieäu cuûa noù töø añeán b. a, b laø caùc soá hay bieán kyù hieäu voâ höôùng.

int(s,v,a,b) laø tích phaân xaùc ñònh cuûa s ñoái vôùi v töø a ñeán b.

SOLVE - giaûi phöông trình ñaïi soá. Cuù phaùp:solve(’eqn 1’,’eqn 2’,...,’eqn N’)

solve(’eqn 1’,’eqn 2’,...,’eqn N’,’var 1,var 2,...,var N’)

solve(’eqn 1’,’eqn 2’,...,’eqn N’,’var 1’,’var 2’,...’var N’)

Caùc eqn i laø caùc bieåu thöùc kyù hieäu hay chuoãi caùc phöông trình chæ ñònh. Caùcvar j laø caùc bieán kyù hieäu hay chuoãi chæ ñònh caùc bieán chöa bieát. Neáu caùc var jkhoâng ñöôïc chæ ñònh thì caùc aån ñöôïc xaùc ñònh bôûi findsym.

Neáu khoâng coù nghieäm giaûi tích ñöôïc tìm thaáy vaø soá phöông trình baèng soá aånthì nghieäm soá ñöôïc tìm.

Ñeå bieát caùch xuaát keát quaû cuûa solve xem caùc thí duï sau.

1) solve(’p*sin(x) = r’) choïn ’x’ nhö laø aån, traû veà ans = asin(r/p).Chuù yù, thay vì vieát ’p*sin(x) = r’ ta coù theå vieát ’p*sin(x) - r’; Matlab maëcnhieân hieåu veá hai laø 0.

2) [x,y] = solve(’x∧2 + x*y + y = 3’,’x∧2 - 4*x + 3 = 0’) traû veàx =[ 1][ 3]y =[ 1][ -3/2]

3) s = solve(’x∧2*y∧2 - 2*x - 1 = 0’,’x∧2 - y∧2 - 1 = 0’) traû veànghieäm daïng caáu truùcs =x: [8x1 sym]y: [8x1 sym]

4) [u,v] = solve(’a*u∧2 + v∧2 = 0’,’u - v = 1’) xem a nhö laø thamsoá vaø giaûi hai phöông trình tìm u,v. So saùnh vôùi thí duï beân döôùi 5).

5) s = solve(’a*u∧2 + v∧2’,’u - v = 1’,’a,u’) xem v nhö laø thamsoá, giaûi hai phöông trình, vaø traû veà s.a, s.u.

Thí duï 6. Giaûi phöông trình vi phaân xy′ − y = x2 cos x.Phöông trình coù theå vieát laïi döôùi daïng chuaån,

y′ − y

x= x cosx.

Page 22: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 21

Ñaây laø phöông trình vi phaân tuyeán tính caáp moät. Nghieäm toång quaùt:

y′ + p(x)y = q(x).

Nhaéc laïi, nghieäm toång quaùt cuûa phöông trình vi phaân tuyeán tính caáp moät coù daïng:

y = yp + Cy1

vôùi Cy1 laø nghieäm toång quaùt cuûa phöông trình thuaàn nhaát töông öùng (y1 laø nghieämcô sôû); yp laø moät nghieäm rieâng cuûa phöông trình xaùc ñònh bôûi:

yp =∫

G1(x, s)q(s)ds

trong ñoù

G1(x, s) =y1(x)y1(s)

laø haøm Green caáp moät, vaø s ñöôïc thay baèng x sau khi laáy tích phaân.

Baây giôø ta giaûi phöông trình. Phöông trình thuaàn nhaát töông öùng (phöông trìnhcoù bieán phaân ly)

y′ − y

x= 0 hay

dy

y=

dx

x.

Duøng Matlab trôï giuùp laáy tích phaân>> clear all>> syms x>> int(1/x,x)ans =log(x)

Vì ln y = lnx neân nghieäm cô sôû: y1 = x.

Haøm Green caáp moät: G1(x, s) = x/s. Duøng Matlab trôï giuùp tìm nghieäm rieâng>> y1=x;>> syms s>> yp=subs(int(y1/subs(y1,x,s)*s*cos(s),s),s,x)yp =x*sin(x)

Vaäy nghieäm toång quaùt cuûa phöông trình: y = (C + sinx)x.

Thí duï 7. Cho phöông trình vi phaân tuyeán tính caáp hai thuaàn nhaát

y′′ + a(x)y′ + b(x)y = 0.

Page 23: hoc nhanh matlab.pdf

22 Trònh Anh Ngoïc

Giaû söû phöông trình coù nghieäm cô sôû y1, tìm nghieäm cô sôû coøn laïi.

Nghieäm cô sôû thöù hai ñöôïc tìm döôùi daïng:

y2(x) = u(x)y1(x).

Duøng Matlab ñeå xaùc ñònh u(x)>> syms xÑöa vaøo caùc haøm tröøu töôïng>> a=sym(’a(x)’);>> b=sym(’b(x)’);>> y1=sym(’y1(x)’);>> u=sym(’u(x)’);>> y2=u*y1;Thay y2 vaøo phöông trình vi phaân>> p=simple(diff(y,2)+a*diff(y)+b*y)p =diff(u(x),‘$‘(x,2))*y1(x)+2*diff(u(x),x)*diff(y1(x),x)+u(x)* diff(y1(x),‘$‘(x,2))+a(x)*(diff(u(x),x)*y1(x)+u(x)*diff(y1(x),x))+b(x)*u(x)*y1(x)Nhoùm caùc soá haïng coù chöùa u>> p=collect(p,u)p =(diff(y1(x),‘$‘(x,2))+diff(y1(x),x)*a(x)+b(x)*y1(x))*u(x)+diff(u(x),‘$‘(x,2))*y1(x)+2*diff(u(x),x)*diff(y1(x),x)+a(x)*diff(u(x),x)*y1(x)Ñeå thaáy roõ keát quaû nhoùm ta duøng leänh pretty>> pretty(pp)

((d2

dx2y1(x)

)+ a(x)

(d

dxy1(x)

)+ b(x)y1(x)

)u(x) +

(d2

dx2u(x)

)y1(x)

+2(

d

dxu(x)

)(d

dxy1(x)

)+ a(x)

(d

dxu(x)

)y1(x)

Heä soá cuûa u baèng khoâng do y1 laø nghieäm cô sôû. Matlab khoâng phaùt hieän ñöôïc ñieàunaøy. Ta phaûi giuùp!>> p=subs(p,diff(y1,2)+diff(y1)*a+b*y1,0);>> pretty(p)

(d2

dx2u(x)

)y1(x) + 2

(d

dxu(x)

)(d

dxy1(x)

)+ a(x)

(d

dxu(x)

)y1(x)

Page 24: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 23

Ñeå haï baäc ñaët v = u′ hay u =∫

vdx. Tröôùc heát ñöa vaøo haøm tröøu töôïng v

>> v=sym(’v(x)’);>> p=subs(p,u,int(v));>> pretty(p)

(d

dxv(x)

)y1(x) + 2v(x)

(d

dxy1(x)

)+ a(x)v(x)y1(x)

Phöông trình nhaän ñöôïc laø phöông trình vi phaân caáp moät coù bieán phaân ly. Taùchbieán. Ta thöïc hieän lieân tieáp hai laàn leänh collect; xem chuù thích beân döôùi veà leänhcollect vaø giaûi thích lyù do phaûi thöïc hieän hai laàn.>> p=collect(collect(p/v/y1,v),y1)p =diff(v(x),x)/v(x)+2*diff(y1(x),x)/y1(x)+a(x)Laáy tích phaân. Ta caàn tính tích phaân töøng soá haïng cuûa p. Ñeå chæ ñònh soá haïngtrong moät bieåu thöùc ta goïi leänh op cuûa Maple. Cuù phaùp cuûa leänh naøy trong Maplelaø op(i,s) - laáy soá haïng thöù i trong bieåu thöùc s. Ñeå goïi moät leänh cuûa Maple. Neáutrong Maple leänh ñoù ñöôïc vieát laø

function(arg1, arg2, ...)thì trong Matlab ñeå thöïc hieän leänh ñoù ta vieát

maple(’function’,arg1,arg2,..,) .>> p=int(maple(’op’,1,pp))+int(maple(’op’,2,pp))+ int(maple(’op’,3,pp))Warning: Explicit integral could not be found.In D:\MATLABR11\toolbox\symbolic\@sym\ int.m at line 58p =log(v(x))+2*log(y1(x))+int(a(x),x)Xaùc ñònh v ta laøm nhö sau>> p1=subs(p,v,’m’);>> v=solve(p1,’m’)v =1/exp(int(a(x),x))/y1(x)∧2Taïi sao ta khoâng giaûi tröïc tieáp ra v? Vì m chöa ñöôïc khai baùo bieán sym neân ta phaûiñaët noù giöõa hai daáu nhaùy, chæ ñònh chuoãi.>> u=int(v)Warning: Explicit integral could not be found.In D:\MATLABR11\toolbox\symbolic\@sym\ int.m at line 58u =int(1/exp(int(a(x),x))/y1(x)∧2,x)

Toùm laïi,

y2 = y1

∫dx

y21 exp(

∫adx)

. (1)

Page 25: hoc nhanh matlab.pdf

24 Trònh Anh Ngoïc

Chuù thích 4. Cuù phaùp cuûa leänh collect laø collect(s,v) trong ñoù s, v laø caùcbieåu thöùc kyù hieäu. Vôùi leänh naøy Matlab traû veà bieåu dieãn môùi cuûa s nhö laø moät ñathöùc theo v.

Leänh pretty, coù cuù phaùp: pretty(s) - xuaát s döôùi daïng thöùc toaùn hoïc, deãñoïc hôn.

Caûnh baùo cuûa Matlab ”Explicit integral could not be found” vaø chobieát ”vaán ñeà” naûy sinh ôû ñaâu laø hieån nhieân vì caùc haøm cho tröôùc khoâng coù bieåuthöùc toaùn hoïc cuï theå.

Thí duï 8. Tìm nghieäm cô sôû cuûa phöông trình Cauchy - Euler

x2y′′ + axy′ + by = f(x),

trong ñoù a, b laø caùc haèng soá.Ta tìm nghieäm döôùi daïng y = xm. Duøng Matlab ñeå xaùc ñònh m.

>> clear all>> syms a b x m>> y=x∧my =x∧mThay y vaøo phöông trình vi phaân>> p=simple(x∧2*diff(y,2)+a*x*diff(y)+b*y)p =x∧m*(m∧2-m+a*m+b)Goïi leänh coeff cuûa Maple ñeå laáy heä soá cuûa x trong bieåu thöùc p>> p=maple(’coeff’,p,x∧m)p =m∧2-m+a*m+bGiaûi phöông trình xaùc ñònh m. Chuù yù, ôû ñaây khoâng caàn chæ ñònh aån (taïi sao?)>> m=simple(solve(p))m =[1/2-1/2*a+1/2*(1-2*a+a∧2-4*b)∧(1/2)][ 1/2-1/2*a-1/2*(1-2*a+a∧2-4*b)∧(1/2)]

Nhö vaäy, noùi chung, coù hai giaù trò m

m12 =1 − a ±

√(1− a)2 − 4b

2.

Caùc nghieäm cô sôû:

y1,2 = x1−a±

√(1−a)2−4b2 .

Page 26: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 25

Thí duï 9. Baøi toaùn giaù trò rieâng Sturm-Liouville chính quy• Toaùn töû vi phaân L, taùc ñoäng leân caùc haøm y(x) xaùc ñònh treân I = [a, b], ñònh

bôûi:

Ly =d

dx

[p(x)

dy

dx

]+ q(x)y

ñöôïc goïi laø toaùn töû vi phaân Sturm-Liouville toång quaùt.

• Baøi toaùn tìm nghieäm khoâng taàm thöôøng cuûa phöông trình vi phaân tuyeán tínhthuaàn nhaát:

Lϕ + λw(x)ϕ = 0,

thoûa ñieàu kieän bieân thuaàn nhaát daïng:

κ1ϕ(a) + κ2ϕ′(a) = 0, κ3ϕ(b) + κ4ϕ

′(b) = 0

ñöôïc goïi laø baøi toaùn giaù trò rieâng Sturm-Liouville chính quy vôùi w laø haøm troïng löôïng.

Caùc ñieàu kieän haïn cheá ñaët leân heä laø, treân khoaûng höõu haïn I , caùc haøm p(x),q(x) vaø w(x) laø caùc haøm thöïc lieân tuïc, p(x) vaø q(x) laø döông treân khoaûng naøy. Caùcñieàu kieän bieân ñöôïc cho taùch bieät theo töøng ñieåm.

Taïi moät ñieåm bieân, thí duï a, ñieàu kieän bieân chính quy ñöôïc phaân thaønh baloaïi:

1) Loaïi 1 -- ñieàu kieän Dirichlet y(a) = 0.2) Loaïi 2 -- ñieàu kieän Neumann y′(a) = 0.3) Loaïi 3 -- ñieàu kieän Robin y′(a) + hy(a) = 0.• Caùc giaù trò λn laøm cho baøi toaùn giaù trò rieâng Sturm-Liouville coù nghieäm khoâng

taàm thöôøng ñöôïc goïi laø giaù trò rieâng, nghieäm töông öùng ϕn ñöôïc goïi laø haøm rieâng.

Ta coù caùc tính chaát sau:

(i) Toàn taïi voâ soá caùc giaù trò rieâng coù theå saép theo thöù töï ñoä lôùn taêng daàn λn

vôùi n = 0, 1, 2, . . .

(ii) Taát caû caùc giaù trò rieâng laø thöïc.(iii) Vôùi moãi giaù trò rieâng töông öùng vôùi moät haøm rieâng duy nhaát.

(iv) Caùc haøm rieâng töông öùng vôùi caùc giaù trò rieâng khaùc nhau tröïc giao ñoái vôùihaøm troïng löôïng w treân I . Neáu caùc haøm rieâng ñöôïc chuaån hoùa thì

∫ b

a

ϕn(x)ϕm(x)w(x)dx = δmn.

Ta coù theå chuaån hoùa caùc haøm rieâng baèng caùch chia noù cho chuaån (ñoä daøi) cuûa noù

‖ϕn‖ =

√∫ b

aϕn(x)2w(x)dx.

Page 27: hoc nhanh matlab.pdf

26 Trònh Anh Ngoïc

Moät tröôøng hôïp ñaëc bieät cuûa phöông trình Sturm -- Liouville vôùi p(x) = 1,q(x) = 0 vaø w(x) = 1 laø phöông trình Euler

y′′ + λy = 0

Tìm giaù trò rieâng vaø haøm rieâng töông öùng cho phöông trình Euler treân khoaûngI = (0, 1) vôùi caùc ñieàu kieän bieân y′(0) = 0, y(1) = 0.>> clear all>> syms x c k c1 c2 real

a) Tröôøng hôïp λ = −c2 6= 0Nghieäm ñaëc tröng>> solve(’k∧2-c∧2’,k);Phöông trình baäc hai coù hai nghieäm. Ñeå truy xuaát ta vieát k(1), k(2).Nghieäm cô sôû, nghieäm toång quaùt>> y1=exp(k(1)*x);>> y2=exp(k(2)*x);>> y=c1*y1+c2*y2;Duøng ñieàu kieän bieân>> eq1=subs(y,x,1);>> eq2=subs(diff(y),x,0);Ta xaùc ñònh c ñeå heä goàm eq1 vaø eq2 coù nghieäm khoâng taàm thöôøng, nghóa laø tìm cñeå ñònh thöùc cô sôû cuûa heä baèng khoâng>> delta=det([maple(’coeff’,eq1,c1) maple(’coeff’, eq1, c2);

maple(’coeff’, eq2, c1) maple(’coeff’, eq2, c2)])delta =-exp(c)*c-exp(-c)*c>> delta=simplify(delta)delta =-c*(1+exp(-2*c))*exp(c)luoân khaùc khoâng (λ 6= 0), baøi toaùn chæ coù nghieäm taàm thöôøng.

b) Tröôøng hôïp λ = 0>> clear all>> syms x c k c1 c2 real>> k=solve(’k∧2)k =[ 0][ 0]phöông trình ñaëc tröng coù nghieäm keùp k = 0.>> y1=exp(k(1)*x); y2=x*y1; y=c1*y1+c2*y2;>> eq1=subs(y,x,1); eq2=subs(diff(y),x,0);>> delta=det([maple(’coeff’,eq1,c1) maple(’coeff’, eq1, c2);

maple(’coeff’, eq2, c1) maple(’coeff’, eq2, c2)])delta =1

Page 28: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 27

baøi toaùn chæ coù nghieäm taàm thöôøng.

c) Tröôøng hôïp λ = c2

>> clear all>> syms x c k c1 c2 n real>> k=solve(k∧2+c∧2,k)k =[ i*c][ -i*c]Tröôøng hôïp nghieäm ñaëc tröng phöùc>> y1=cos(c*x); y2=sin(c*x); y=c1*y1+c2*y2;>> eq1=subs(y,x,1); eq2=subs(diff(y),x,0);>> delta=det([maple(’coeff’, eq1, c1), maple(’coeff’, eq1, c2);

maple(’coeff’, eq2, c1), maple(’coeff’, eq2, c2)])delta =cos(c)*c>> solve(ans,c)ans=[ 1/2*pi][ 0]Chuù yù, ñoái vôùi phöông trình cos(c)*c (=0) chæ cho nghieäm acos(0). Loaïi nghieämc=0.>> cn=pi/2+n*pi;>> eq1=subs(eq1,c,cn)eq1 =-c1*sin(n*pi)+c2*cos(n*pi)Matlab khoâng phaân bieät ñöôïc n laø soá nguyeân neân khoâng ñaùnh giaù ñöôïc sin(n*pi)vaø cos(n*pi) ta phaûi giuùp!>> eq1=subs(eq1,sin(n*pi),0); eq1=subs(eq1, cos (n*pi), (-1)∧n)eq1=c2*(-1)∧n>> eq2=subs(eq2,c,cn(1))eq2 =c2*(1/2*pi+n*pi)Nhö vaäy c2=0 coøn c1 tuøy yù. Ta choïn c1=1>> phi n=subs(y,{ c,c1,c2},{cn,1,0})phi n=cos((1/2*pi+n*pi)*x)

Page 29: hoc nhanh matlab.pdf

28 Trònh Anh Ngoïc

Caùc giaù trò rieâng vaø caùc haøm rieâng töông öùng:

λn =(2n + 1)2π2

4,

ϕn = cos(

(2n + 1)πx

2

),

n = 0, 1, 2, . . .

Chuaån hoùa caùc haøm rieâng>> phi n=cos((pi/2+n*pi)*x);>> norm=sqrt(int(phi n*phi n,0,1));>> norm=simple(subs(norm,sin(n*pi),0));>> phi n=phi n/normphi n=cos((1/2*pi+n*pi)*x)*2∧(1/2)Vaäy caùc haøm rieâng chuaån hoùa:

ϕn =√

2 cos(

(2n + 1)πx

2

)n = 0, 1, 2, . . .

Thí duï 10. Phöông trình soùng 1-chieàu - Phöông phaùp taùch bieánXeùt phöông trình ñaïo haøm rieâng, moâ taû phaân boá soùng u(x, t) cho dao ñoäng doïc

trong thanh,øutt = c2uxx − γut 0 < x < 1; t > 0.

Ñieàu kieän bieân:

u(0, t) = 0,

ux(1, t) + u(1, t) = 0.

Ñieàu kieän ñaàu:

u(x, 0) = f(x),ut(x, 0) = g(x).

Ta tìm nghieäm döôùi daïng taùch bieán,

u(x, t) = X(x)T (t).

Thay vaøo phöông trình ñaïo haøm rieâng, roài chia hai veá phöông trình cho c2XT tañöôïc

T ′′ + γT ′

c2T=

X ′′

X.

Page 30: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 29

Vì veá traùi laø haøm chæ cuûa t coøn veá phaûi laø haøm chæ cuûa x neân chæ coù theå xaûy ra neáutoàn taïi haèng soá λ ñeå cho

T ′′ + γT ′ + c2λT = 0 vaø X ′′ + λX = 0.

Phöông trình vi phaân ñaàu tieân laø phöông trình vi phaân tuyeán tính thuaàn nhaát caáphai heä soá haèng. Töông töï, phöông trình vi phaân thöù hai cuõng laø phöông trình vi phaântuyeán tính thuaàn nhaát caáp hai. Ta deã daøng nhaän ra chuùng thuoäc loaïi Sturm-Liouville.

Vôùi ñieàu kieän bieân ñaõ cho baøi toaùn Sturm-Liouville theo bieán khoâng gian laøphöông trình Euler

X ′′ + λX = 0

vôùi caùc ñieàu kieän bieân

X(0) = 0,

X ′(1) + X(1) = 0.

Ñeå traùnh laäp laïi laäp luaän ñaõ laøm trong thí duï tröôùc, ta chæ xeùt tröôøng hôïpλ = c2 > 0. Khi ñoù nghieäm cô sôû cuûa phöông trình Euler: X1 = sin(cx),X2 = cos(cx).>> clear all>> syms x c c1 c2 real>> X=c1*sin(c*x)+c2*cos(c*x);>> eq1=subs(diff(X,x),x,0)eq1 =c2>> eq2=subs(diff(X,x)+X,x,1)eq2 =c1*cos(c)*c-c2*sin(c)*c+c1*sin(c)+c2*cos(c)>> delta=det([maple(’coeff’,eq1,c1) maple(’coeff’,eq1,c2);

maple(’coeff’,eq2,c1) maple(’coeff’,eq2,c2)])delta=-cos(c)*c-sin(c)Nhö vaäy caùc giaù trò rieâng λn laø nghieäm cuûa phöông trình

tan(√

λn) = −√

λn (∗)

vaø caùc haøm rieâng töông öùng laø (do c2=0)

Xn(x) = sin(√

λnx).

Chuaån hoùa haøm rieâng:>> syms lambda n>> X n=sin(sqrt(lambda n)*x);

Page 31: hoc nhanh matlab.pdf

30 Trònh Anh Ngoïc

>> norm2 n=int(X n∧2,x,0,1)norm2 n=1/2*(-cos(lambda n∧(1/2))*sin(lambda n∧(1/2))+lambda n∧(1/2))

/lambda n∧(1/2)Keát quaû tính baèng Matlab cho

norm2 n =− cos(

√λn) sin(

√λn) +

√λn√

λn.

Ñeå yù raèng, sin(√

λn) = −√

λn cos(√

λn) (do (*)), neân ta coù theå thu goïn bieåu thöùc cuûanorm2 n vaø chuaån hoùa caùc Xn nhö sau>> norm2 n=simplify(subs(ans,sin(sqrt(lambda n)),-sqrt(lambda n)

*cos(sqrt(lambda n))))norm2 n=1/2*cos(lambda n∧(1/2))∧2+1/2>> X n=X n/sqrt(norm2 n)X n=2*sin(lambda n∧(1/2)*x)/(2*cos(lambda n∧(1/2))∧2+2)∧(1/2)

Xn(x) =√

2 sin(√

λnx)√cos2(

√λn) + 1

vôùi n = 1, 2, . . .

Nghieäm toång quaùt töông öùng cuûa phöông trình vi phaân theo bieán thôøi gian laø

Tn(t) = e−γt/2(An cos(ωnt) + Bn sin(ωnt)) n = 1, 2, . . . ,

trong ñoù

ωn =12

√4λnc2 − γ2.

Baïn haõy töï tìm keát quaû naøy baèng Matlab.

Nghieäm toång quaùt cuûa phöông trình, baèng pheùp choàng chaäp nghieäm

u(x, t) =∞∑

n=1

XnTn =∞∑

n=1

e−γt/2(An cos(ωnt) + Bn sin(ωnt))√

2 sin(√

λnx)√cos2(

√λn) + 1

.

trong ñoù caùc haèng soá An, Bn ñöôïc xaùc ñònh nhôø ñieàu kieän ñaàu cuûa baøi toaùn.

Page 32: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 31

Baây giôø ta xeùt caùch ñöa ñieàu kieän ñaàu vaøo nghieäm toång quaùt. Thay ñieàu kieänthöù nhaát vaøo nghieäm toång quaùt, taïi thôøi ñieåm x = 0,

f(x) =∞∑

n=1

AnXn(x). (∗∗)

Ñeå duøng ñieàu kieän thöù hai ta laáy ñaïo haøm nghieäm toång quaùt theo t

ut(x, t) =∞∑

n=1

Xne−γt/2

[(−Anγ

2+ Bnωn

)cos(ωnt) −

(Anωn +

Bnγ

2

)sin(ωnt)

].

Taïi thôøi ñieåm t = 0,

g(x) =∞∑

n=1

Xn

(Bnωn − Anγ

2

). (∗ ∗ ∗)

Nhaéc laïi raèng caùc haøm rieâng cuûa baøi toaùnn Sturm-Liouville chính quy laäp thaønh moättaäp ñaày ñuû ñoái vôùi caùc haøm trôn töøng khuùc treân khoaûng höõu haïn I . Vaäy, caû haiphöông trình treân laø khai trieån Fourier toång quaùt cuûa hai haøm f(x) vaø g(x) theo caùchaøm rieâng cuûa heä. Caùc heä soá An vaø Bn coù maët trong caùc heä soá cuûa hai khai trieånnaøy. Baây giôø ta tính caùc heä soá An vaø Bn .

Laáy tích trong hai veá caùc phöông trình (**), (***) vôùi caùc haøm rieâng. Do tínhtröïc chuaån cuûa caùc haøm rieâng, ta coù:

An =∫ b

af(x)Xn(x)dx,

Bnωn − Anγ

2=

∫ b

ag(x)Xn(x)dx ⇒ Bn =

1ωn

∫ b

a

(γf(x)

2+ g(x)

)Xn(x)dx.

Vaäy, ta coù theå vieát nghieäm hình thöùc cuûa baøi toaùn giaù trò ñaàu cho phöông trìnhsoùng:

u(x, t) =∞∑

n=1

Xn(x)e−γt/2

[∫ b

a

f(x)Xn(x)dx cos(ωnt)

+1ωn

∫ b

a

(γf(x)

2+ g(x)

)Xn(x)dx sin(ωnt)

].

Page 33: hoc nhanh matlab.pdf

32 Trònh Anh Ngoïc

Taát caû caùc pheùp toaùn ñöôïc thöïc hieän ôû treân döïa treân giaû thieát caùc chuoãi (**), (***)hoäi tuï ñeàu vaø söï thay ñoåi thöù töï laáy toång vaø thöïc hieän pheùp toaùn laø coù hieäu löïc. Coùtheå chöùng toû raèng neáu f(x) vaø g(x) thoûa caùc ñieàu kieän bieân nhö caùc haøm rieâng, thìcaû hai chuoãi hoäi tuï ñeàu.

Ñeå cuï theå, ta tính caùc heä soá An vaø Bn cho tröôøng hôïp c = 1/4, γ = 1/5, vaøcaùc haøm trong ñieàu kieän ñaàu:

f(x) = x − 2x2

3, g(x) = x.

Tröôùc heát ta thieát laäp coâng thöùc tính A n, B n>> clear all>> syms n lambda n x real>> c=1/4; gamma=1/5;>> f=x-2*x∧2/3; g=x;>> omega n=sqrt(4*lambda n*c∧2-gamma∧2)/2;omega n=1/20*(25*lambda n-4)∧(1/2)>> A n=int(f*sqrt(2)*sin(sqrt(lambda n)*x)/sqrt(cos(sqrt(lambda n))∧2+1),x,0,1)A n=-1/3*2∧(1/2)*(sin(lambda n∧(1/2))*lambda n∧(3/2)+4*cos(lambda n∧(1/2))*lambda n+cos(lambda n∧(1/2))*lambda n∧2-4*lambda n)/lambda n∧(5/2)/(cos(lambda n∧(1/2))∧2+1)∧(1/2)>> A n=simplify(subs(A n,sin(sqrt(lambda n)),-sqrt(lambda n)*cos(sqrt(lambda n))))A n=-4/3*2∧(1/2)*(cos(lambda n∧(1/2))-1)/lambda n∧(3/2)/(cos(lambda n∧(1/2))∧2+1)∧(1/2)>> B n=int(g*sqrt(2)*sin(sqrt(lambda n)*x)/sqrt(cos(sqrt(lambda n))∧2+1),x,0,1)/omega n;>> B n=simplify(subs(B n,sin(sqrt(lambda n)),-sqrt(lambda n)*cos(sqrt(lambda n))))B n=-40*2∧(1/2)*cos(lambda n∧(1/2))/lambda n∧(1/2)/(cos(lambda n∧(1/2))∧2+1)∧(1/2)/(25*lambda n-4)∧(1/2)

Page 34: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 33

Ñeå tieän theo doõi ta vieát laïi caùc coâng thöùc vöøa tìm:

ωn =√

25λn − 420

,

An =−4

√2(cos(

√λn)− 1)

3λ3/2n

√cos2(

√λn) + 1

,

Bn =−8

√2(15 cos(

√λn)λn + cos(

√λn)− 1)

3√

25λn − 4λ3/2n

√cos2(

√λn) + 1

.

vôùi n = 1, 2, . . .

Ñeå hoaøn taát ta caàn tìm caùc giaù trò rieâng λn laø nghieäm cuûa phöông trình (*).Phöông trình naøy chæ coù theå giaûi xaáp xæ. Ñeå cuï theå ta giaûi tìm ba giaù trò rieâng ñaàutieân. Tröôùc heát ta veõ ñoà thò haøm y = tan(v) vaø haøm y = −v ñeå xaùc ñònh thoâ nghieämcuûa phöông trình>> syms v real>> hold on(leänh hold on nhaèm muïc ñích giöõ laïi ñoà thò ñaõ coù khi veõ ñoà thò môùi)>> ezplot(tan(v),[0 20])>> ezplot(-v,[0 20])

Töø ñoà thò (hình 7), caùc giaù trò ban ñaàu cuûa nghieäm xaáp xæ neân choïn laø 2, 5, 8.>> lambda 1=fsolve(inline(’tan(v)+v’),2)∧2Optimization terminated: first-order optimality is less than op-tions.TolFun.lambda 1 =4.1159>> lambda 2=fsolve(inline(’tan(v)+v’),5)∧2Optimization terminated: first-order optimality is less than op-tions.TolFun.lambda 2 =24.1393>> lambda 3=fsolve(inline(’tan(v)+v’),2)∧3Optimization terminated: first-order optimality is less than op-tions.TolFun.lambda 3 =63.6591

Phaàn coøn laïi, thay caùc giaù trò vöøa tìm vaøo chuoãi chaët cuït giöõ ba soá haïng (öùngvôùi ba giaù trò λn vöøa tìm) ñöôïc daønh laïi cho baïn ñoïc.

Chuù thích 5. Leänh fsolve giaûi caùc phöông trình phi tuyeán daïng F(X)=0 baèngphöông phaùp bình phöông toái thieåu. Cuù phaùp ñôn giaûn nhaát: x=fsolve(fun,x0)

Page 35: hoc nhanh matlab.pdf

34 Trònh Anh Ngoïc

Hình 7: Ñoà thò haøm y = tan(v) vaø y = −v.

baét ñaàu taïi x0 vaø giaûi caùc phöông trình moâ taû trong fun. Ta coù theå chæ ñònh fun

laø moät ñoái töôïng haøm inline, thí duï, x = fsolve(inline(’sin(x.*x)’),x0). ÔÛñaây leänh inline(bieuthuc) taïo moät ñoái töôïng haøm inline töø moät bieåu thöùc chöùatrong chuoãi bieuthuc. fun cuõng coù theå laø moät chuoãi chöùa teân moät haøm (moät M-filehay moät haøm ñònh saün) cho pheùp tính giaù trò cuûa caùc phöông trình vôùi moãi giaù trò cuïtheå cuûa x, F=fun(x).

5 Vieát chöông trình baèng Matlab

Chöông trình vieát baèng ngoân ngöõ Matlab gaàn gioáng caùc ngoân ngöõ caáp cao quen thuoäcnhö Pascal, C. Döôùi ñaây ta seõ hoïc caùch vieát chöông trình thoâng qua caùc thí duï cuï theå.Nhöng tröôùc heát ta caàn bieát caùc caáu truùc thöôøng duøng trong ngoân ngöõ Matlab.

5.1 Caùc caáu truùc trong ngoân ngöõ Matlab

IF - thöïc hieän caùc leänh coù ñieàu kieänDaïng chung cuûa leänh if laø

Page 36: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 35

if bieåu thöùccaùc leänh

elseif bieåu thöùccaùc leänh

elsecaùc leänh

end

Caùc leänh ñöôïc thöïc hieän neáu phaàn thöïc cuûa bieåu thöùc khaùc khoâng. Caùc phaàn elsevaø elseif laø tuøy choïn. ’bieåu thöùc’ trong leänh if thöôøng coù daïng:

bieåu thöùc 1 R bieåu thöùc 2

trong ñoù R laø ==, <, >, <=, >=, hay ∼=.FOR - laëp laïi caùc leänh moät soá laàn ñöôïc chæ ñònhDaïng chung cuûa leänh for laø

for bieán = giaù trò ñaàu : böôùc gia taêng : giaù trò cuoáicaùc leänh

end

’bieán’ laáy giaù trò ’giaù trò ñaàu’, sau moãi laàn thöïc hieän caùc leänh ñöôïc taêng theâm moätlöôïng ’böôùc gia taêng’, neáu ’bieán’ vaãn coøn ”nhoû hôn” thì caùc leänh vaãn ñöôïc thöïc hieän.

WHILE - laëp laïi caùc moät soá laàn khoâng xaùc ñònhDaïng chung cuûa leänh while laø

while bieåu thöùccaùc leänh

end

Caùc leänh ñöôïc thöïc hieän khi phaàn thöïc cuûa ’bieåu thöùc’ khaùc khoâng. ’bieåu thöùc’ trongleänh while thöôøng coù daïng:

bieåu thöùc 1 R bieåu thöùc 2

trong ñoù R laø ==, <, >, <=, >=, hay ∼=. Leänh break coù theå ñöôïc duøng ñeå döøng voønglaëp.

SWITCH - chuyeån ñoåi giöõa nhieàu tröôøng hôïp treân cô sôû bieåu thöùcDaïng chung cuûa leänh switch laø

Page 37: hoc nhanh matlab.pdf

36 Trònh Anh Ngoïc

switch bieåu thöùccase tröôøng hôïp 1,caùc leänhcase tröôøng hôïp 2caùc leänh...otherwisecaùc leänh

end

Caùc leänh theo sau case thöù i ñöôïc thöïc hieän khi ’bieåu thöùc’ coù giaù trò ’tröôøng hôïp i’.Ngoaøi caùc tröôøng hôïp ñöôïc lieät keâ thì caùc leänh theo sau otherwise ñöôïc thöïc hieän.

5.2 Moät soá chöông trình thí duï

Muïc naøy chöùa ñöïng moät soá chöông trình ñôn giaûn vieát baèng ngoân ngöõ Matlab. Moãithí duï baét ñaàu baèng cô sôû thuaät toaùn vaø cuoái cuøng laø chöông trình tính. Baïn ñoïc neânñoïc kyõ phaàn thuaät toaùn ñeå hieåu muïc ñích vaø noäi dung cuûa chöông trình. Haõy chaïythöû vaø tìm caùch söûa ñoåi noù neáu ñöôïc.

Thí duï 11. Giaûi phöông trình ñaïi soá tuyeán tính AX = B - Pheùp khöû Gauss

Nhaéc laïi, heä phöông trình ñaïi soá tuyeán tính coù daïng

a11x1 + a12x2 + . . . + a1nxn = b1

a21x1 + a22x2 + . . . + a2nxn = b2...

......

...an1x1 + an2x2 + . . . + annxn = bn,

trong ñoù veá phaûi bi, i = 1, . . . , n, vaø caùc heä soá aij , i, j = 1, . . . , n laø caùc döõ lieäu chotröôùc; x1, . . . , xn laø aån.

YÙ töôûng ñaèng sau phöông phaùp khöû Gauss laø duøng caùc pheùp bieán ñoåi sô caáp ñeåkhöû caùc aån cuûa heä. Heä phöông trình töông ñöông, sau khi bieán ñoåi, coù daïng tam giaùctreân, ñöôïc giaûi baèng pheùp theá ngöôïc.

Neáu a11 6= 0, thì ôû böôùc ñaàu tieân ta khöû x1 khoûi (n − 1) phöông trình cuoáibaèng caùch tröø phöông trình thöù i vôùi nhaân töû

mi1 = ai1/a11, i = 2, . . . , n

laàn phöông trình ñaàu. Ñieàu naøy sinh ra moät heä ruùt goïn goàm (n − 1) phöông trìnhvôùi caùc aån x2, . . . , xn, trong ñoù caùc heä soá môùi ñöôïc cho bôûi

a(2)ij = aij − mi1a1j , b

(2)i = bi − mi1b1, i = 2, . . . , n.

Page 38: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 37

Neáu a(2)22 6= 0, tieáp theo baèng caùch töông töï ta khöû x2 töø (n − 2) phöông trình cuoái

cuûa heä phöông trình naøy. Sau k − 1 böôùc, k ≤ n, cuûa pheùp khöû Gauss ma traän A trôûthaønh ma traän coù daïng

A(k) =

a(1)11 a

(1)12 . . . a

(1)1k . . . a

(1)1n

0 a(2)22 . . . a

(2)2k . . . a

(2)2n

......

......

0 0 . . . a(k)kk . . . a

(k)kn

......

......

0 0 . . . a(k)nk . . . a

(k)nn

, b(k) =

b(1)1

b(2)2...

b(k)k...

b(k)n

,

trong ñoù ta ñaõ ñaët A(1) = A, b(1) = b. Caùc phaàn töû cheùo a(1)11 , a

(2)22 ,. . . , xuaát hieän trong

quaù trình khöû ñöôïc goïi laø caùc phaàn töû truï.Kyù hieäu Ak laø ma traän con chính cuûa A,

Ak =

a11 a12 . . . a1k

a21 a22 . . . a2k...

......

ak1 ak2 . . . akk

.

Vì ñònh thöùc cuûa ma traän khoâng thay ñoåi döôùi pheùp bieán ñoåi sô caáp thöù ba neân

det(Ak) = a(1)11 a

(2)22 · · ·a(k)

kk , k = 1, . . . , n.

Caùc phaàn töû truï a(i)ii , i = 1, . . . , n, trong pheùp khöû Gauss laø khaùc khoâng neáu vaø chæ

neáu det(Ak) 6= 0, k = 1, . . . , n. Trong tröôøng hôïp naøy ta coù theå khöû cho ñeán sau böôùcthöù (n − 1), coøn laïi moät phöông trình duy nhaát

a(n)nn xn = b(n)

n (a(n)nn 6= 0).

Caùc aån cuûa phöông trình coù theå tính baèng coâng thöùc truy hoài

xn = b(n)n /a(n)

nn , xi =

(b(i)i −

n∑

k=i+1

a(i)ik xk

)/a

(i)ii , i = n − 1, . . . , 1.

Quaù trình naøy goïi laø theá ngöôïc.

Page 39: hoc nhanh matlab.pdf

38 Trònh Anh Ngoïc

Giaû söû ôû böôùc thöù k cuûa pheùp khöû Gauss ta coù

a(k)kk = 0.

Neáu A khoâng suy bieán, thì k coät ñaàu cuûa ma traän A laø ñoäc laäp tuyeán tính. Ñieàu naøycuõng ñuùng vôùi ma traän ñaõ bieán ñoåi. Nghóa laø toàn taïi apk 6= 0 (k < p ≤ n). Baèng caùchhoaùn vò doøng k vaø doøng p thì phaàn töû naøy coù theå laáy laøm phaàn töû truï vaø pheùp khöûñöôïc tieáp tuïc. Toùm laïi, ma traän khoâng suy bieán baát kyø coù theå daãn veà daïng tam giaùctreân baèng pheùp khöû Gauss neáu pheùp hoaùn vò doøng ñöôïc duøng neáu caàn.

Neáu rank(A) < n thì coù theå xaûy ra ôû böôùc thöù k − 1 naøo ñoù

a(k)ik = 0, i = k, . . . , n.

Neáu toaøn boä caùc phaàn töû a(k)ij = 0, i, j = k, . . . , n thì rank(A) = k − 1 vaø ta döøng laïi.

Ngöôïc laïi, neáu coù phaàn töû khaùc khoâng, chaúng haïn

a(k)pq ,

ta coù theå mang noù ñeán vò trí truï baèng caùch hoaùn vò doøng k vôùi p, coät k vôùi q (khi coätcuûa ma traän A bò hoaùn vò thì ta cuõng phaûi hoaùn vò caùc phaàn töû töông öùng trong vectôx. Tieán haønh theo caùch naøy moïi ma traän A ñeàu coù theå ñöa veà daïng hình thang

A(r) =

a(1)11 . . . a

(1)1r a

(1)1,r+1 . . . a

(1)1n

0. . .

......

...... a

(r)rr a

(r)r,r+1 . . . a

(r)rn

0 . . . 0 0 . . . 0...

......

...0 . . . 0 0 . . . 0

, b(r) =

b(1)1...

b(r)r

b(r)r+1...

b(r)n

,

ôû böôùc r = rank(A).Caùc phaàn töû truï nhoû coù theå daãn ñeán keát quaû khoâng chính xaùc. Coù moät caùch ñeå

traùnh phaàn töû truï nhoû ñöôïc goïi laø pheùp xoay cuïc boä. Theo caùch naøy, khi khöû xk , tachoïn heä soá lôùn nhaát (veà giaù trò tuyeät ñoái) cuûa xk trong n−k+1 phöông trình cuoái nhö

laø phaàn töû truï. Nghóa laø, neáu |a(k)lk | laø lôùn nhaát cuûa caùc |a(k)

jk | vôùi j = k, k + 1, . . . , n

ta hoaùn vò doøng k vaø l. Baèng caùch ñaùnh soá laïi ta coù theå giaû söû raèng phaàn töû truï a(k)kk

coù ñoä lôùn lôùn nhaát.

Page 40: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 39

AÙp duïng giaûi heä phöông trình

x1 + x2 + x3 = 13x1 + x2 − 3x3 = 5x1 − 2x2 − 5x3 = 10

Ñeå löu giöõ ma traän caùc heä soá a vaø veá phaûi b, trong chöông trình ta ñöa vaøo ma traäncaùc heä soá nôùi roäng ad. Leänh [v,index]=max(ad(k:n,k)) traû veà hai giaù trò: v laøphaàn töû lôùn nhaát cuûa vectô ad(k:n,k) coøn index laø vò trí cuûa phaàn töû ñoù.

% chuong trinh 1 - giai he phuong dsttclear alla=[1 1 1; 3 1 -3; 1 -2 -5];b=[1;5;10];n=size(a,1);% ma tran noi rongad=a;ad(:,n+1)=b;for k=1:n-1

% tim phan tu tru[v,index]=max(ad(k:n,k));if v==0

disp(’he phuong trinh suy bien’)return

end% dong chua phan tu truindex=index+k-1;% hoan vi dong k va dong indextam=ad(index,:);ad(index,:)=ad(k,:);ad(k,:)=tam;% dung dong k khu cac dong duoifor i=k+1:n

for j=k:n+1ad(i,k:n+1)=ad(i,k:n+1)-(ad(i,k)/ad(k,k))*ad(k,k:n+1);

endend

end% phep the nguocif ad(n,n)==0

disp(’he phuong trinh suy bien’)return

Page 41: hoc nhanh matlab.pdf

40 Trònh Anh Ngoïc

endx(n)=ad(n,n+1)/ad(n,n);for i=n-1:-1:1

x(i)=ad(i,n+1);for j=i+1:n

x(i)=x(i)-ad(i,j)*x(j);endx(i)=x(i)/ad(i,i);

enddisp(’nghiem cua he:’)x

Keát quaû tính toaùn

nghiem cua he:x =

6.0000 -7.0000 2.0000

Thí duï 12. Giaûi phöông trình f(x) = 0 - Thuaät toaùn chia ñoâi khoaûng

Hình 8: Ñoà thò haøm soá f(x) = x3 − 3x2 + x + 1.

Neáu haøm lieân tuïc f(x) coù daáu ñoái nhau taïi caùc ñieåm x = B vaø x = C , thì noùcoù ít nhaát moät khoâng ñieåm trong khoaûng giöõa B vaø C . Phöông phaùp chia ñoâi (haytìm kieám nhò phaân) ñöôïc ñaët treân söï kieän naøy. Neáu f(B)f(C) < 0, haøm f(x) ñöôïcñaùnh giaù taïi ñieåm giöõa M = (B + C)/2 cuûa khoaûng. Neáu f(M) = 0, moät khoângñieåm ñöôïc tìm thaáy. Neáu khaùc, f(B)f(M) < 0 hoaëc f(M)f(C) < 0. Trong tröôønghôïp ñaàu coù ít nhaát moät khoâng ñieåm ôû giöõa M vaø B, vaø trong tröôøng hôïp thöù hai coùít nhaát moät nghieäm ôû giöõa C vaø M . Theo caùch naøy moät khoaûng chöùa nghieäm ñöôïctìm thaáy maø coù chieàu daøi baèng nöûa chieàu daøi khoaûng ban ñaàu. Thuû tuïc ñöôïc laëp laïicho ñeán khi ñònh vò ñöôïc nghieäm vôùi ñoä chính xaùc mong muoán.

Page 42: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 41

AÙp duïng giaûi phöông trình x3 − 3x2 + x + 1 = 0 (phöông trình naøy coù nghieämchính xaùc: 1, 1±

√2). Ñeå coù caùi nhìn sô boä veà phöông trình cho ta duøng Matlab veõ

ñoà thò cuûa haøm f(x) = x3 − 3x2 + x + 1. Töø ñoà thò (hình 8) ta thaáy phöông trình coùba nghieäm ñôn, laàn löôït naèm trong caùc khoaûng [−0.5, 0], [0.5, 1.5], [2, 3]. Nhö moät thíduï aùp duïng ta vieát chöông trình tìm nghieäm xaáp xæ cuûa phöông trình trong khoaûng[−0.5, 0].

% chuong trinh 2 - giai phuong trinh bang phuong phap chia% doi khoang% chuong trinh goi function f1clear allb=-0.5;c=0;epsilon=10^(-4);m=b; % m duoc khoi tao bang bwhile (abs(c-b)>=epsilon)&(f1(m)~=0)

m=(b+c)/2;if f1(b)*f1(m)<0

c=m;else

b=m;end

enddisp(’nghiem xap xi:’)m

Chöông trình goïi function f1 traû laïi giaù trò cuûa haøm f(x)

function v=f1(x)v=x^3-3*x^2+x+1;

Keát quaû tính toaùn

nghiem xap xi:m =

-0.4142

Thí duï 13. Giaûi phöông trình f(x) = 0 - Thuaät toaùn Newton vaø thuaät toaùn daây cungCaû hai thuaät toaùn ñeàu xaáp xæ ñöôøng cong y = f(x) baèng ñöôøng thaúng y = L(x)

roài sau ñoù xaáp xæ nghieäm phöông trình f(x) = 0 baèng nghieäm cuûa phöông trình

Page 43: hoc nhanh matlab.pdf

42 Trònh Anh Ngoïc

L(x) = 0. Phöông phaùp Newton laáy y = L(x) laø tieáp tuyeán vôùi ñöôøng cong y = f(x)taïi ñieåm xaáp xæ tröôùc ñoù xi vaø laáy ñieåm xaáp xæ keá tieáp xi+1 laø nghieäm cuûa phöôngtrình L(x) = 0, theo coâng thöùc taylor, ta coù f(x) ≈ f(xi) + f ′(xi)(x− xi) = 0, suy ra

xi+1 = xi −f(xi)f ′(xi)

.

Thuaät toaùn daây cung nhaän ñöôïc töø thuaät toaùn Newton baèng caùch xaáp xæ f ′(xi) baèng

Hình 9: Thuaät toaùn Newton.

tæ sai phaân

f ′(xi) ≈f(xi) − f(xi−1)

xi − xi−1.

Töø ñaây ta suy ra coâng thöùc laëp cuûa thuaät toaùn daây cung

xi+1 = xi − f(xi)xi − xi−1

f(xi)− f(xi−1).

AÙp duïng giaûi phöông trình x2 − 2 = 0 (phöông trình coù nghieäm chính xaùc laø±√

2). Ta aùp duïng thuaät toaùn Newton vôùi ñieåm xaáp xæ ban ñaàu laáy baèng 2. Ñieàukieän döøng thuaät toaùn laø |xi+1 − xi| < ε vaø ñeå traùnh tröôøng hôïp xaáu - chöông trìnhthöïc hieän quaù laâu ta duøng voøng laëp for chæ ñònh soá laàn laëp toái ña.

% chuong trinh 3 - giai phuong trinh bang phuong phap Newton% chuong trinh goi function f2 va df2clear allxc=2; % diem xap xi ban dauepsilon=10^(-4);

Page 44: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 43

Hình 10: Thuaät toaùn daây cung.

nmax=100; % so lan lap toi dafor i=1:nmax

xm=xc-f2(xc)/df2(xc);if abs(xm-xc)<epsilon

break;else

xc=xm;end

enddisp(’so lan lap:’)idisp(’nghiem xap xi:’)xm

Chöông trình goïi function f2 traû laïi giaù trò cuûa haøm f(x) vaø df2 traû laïi giaù trò cuûahaøm f ′(x)

function v=f2(x)v=x^2-2;function v=df2(x)v=2*x;

Keát quaû tính toaùn

so lan lap:i =

4nghiem xap xi:xm =

Page 45: hoc nhanh matlab.pdf

44 Trònh Anh Ngoïc

1.4142

AÙp duïng thuaät toaùn daây cung chöông trình vieát cho thuaät toaùn Newton ñöôïcbieán ñoåi moät chuùt

% chuong trinh 4 - giai phuong trinh bang phuong phap day cung% chuong trinh goi function f2clear allx1=2;xc=3; % hai diem xap xi ban dauepsilon=10^(-4);nmax=100; % so lan lap toi dafor i=1:nmax

xm=xc-f2(xc)*(xc-x1)/(f2(xc)-f2(x1));if abs(xm-xc)<epsilon

break;else

x1=xc;xc=xm;

endenddisp(’so lan lap:’)idisp(’nghiem xap xi:’)xm

Keát quaû tính toaùn

so lan lap:i =

5nghiem xap xi:xm =

1.4142

Baïn ñoïc haõy thöû nghieäm vôùi caùc thí duï soá khaùc vaø neâu nhaän xeùt (döïa treân caùc keátquaû soá) veà ba thuaät toaùn tìm nghieäm xaáp xæ cuûa phöông trình f(x) = 0.

Thí duï 14. Giaûi phöông trình vi phaân - Phöông phaùp Euler Trong thí duï naøy ta xeùtbaøi toaùn xaùc ñònh quyõ ñaïo cuûa moät haït x0 = (a, b, c) bieát tröôøng vaän toác v: tìm haøm

Page 46: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 45

vectô x = (x(t), y(t), z(t)) thoûa phöông trình vi phaân

dxdt

= v(x, t) (∗)

vaø ñieàu kieän ñaàu x(0) = x0.

Moät thuaät toaùn ñôn giaûn giaûi baøi toaùn naøy laø xeùt söï thay ñoåi vò trí cuûa haïttrong khoaûng thôøi gian ∆t, vaø thay phöông trình vi phaân (??) baèng caùc phöông trìnhñaïi soá

x(t + ∆t) − x(t)∆t

= vx(x, y, z, t),

y(t + ∆t) − y(t)∆t

= vy(x, y, z, t),

z(t + ∆t) − z(t)∆t

= vz(x, y, z, t).

Ñeå nhaän ñöôïc caùc phöông trình naøy ta ñaõ thay ñaïo haøm theo thôøi gian beân veá traùiphöông trình (*) baèng sai phaân tieán cuûa x taïi t.

Giaûi caùc phöông trình treân, ta ñöôïc

x(t + ∆t) = x(t) + ∆tvx(x, y, z, t),y(t + ∆t) = y(t) + ∆tvy(x, y, z, t),z(t + ∆t) = z(t) + ∆tvz(x, y, z, t).

Veà maët vaät lyù, caùc phöông trình treân phaùt bieåu raèng vò trí cuûa moät haït taïi thôøi ñieåmt + ∆t baèng vò trí taïi thôøi ñieåm tröôùc t coäng theâm moät dòch chuyeån beù trong khoaûngthôøi gian ∆t. Trong khoaûng thôøi gian naøy haït xem nhö coù vaän toác khoâng ñoåi baèngvaän toác cuûa haït taïi thôøi ñieåm t.

Thuaät toaùn

1. Chæ ñònh thôøi ñieåm ñaàu (t = 0).

2. Choïn böôùc löôùi thôøi gian.

3. Chæ ñònh toïa ñoä ñaàu x(0), y(0), z(0).

4. Tính caùc vaän toác vx(x, y, z, t), vy(x, y, z, t) vaø vz(x, y, z, t).

5. Tính veá phaûi cuûa (??), roài toïa ñoä cuûa haït taïi thôøi ñieåm t + ∆t.

Page 47: hoc nhanh matlab.pdf

46 Trònh Anh Ngoïc

6. Döøng hoaëc trôû veà tính töø böôùc 4 ñeán böôùc 6.

AÙp duïng thuaät toaùn, xaùc ñònh quyõ ñaïo cuûa haït ban ñaàu ôû vò trí (1, 1, 1) coù vaän toác:

v = −xi + yj+ cos tk.

(Nghieäm giaûi tích trong tröôøng hôïp k = a = ω = 1: x = e−t, y = et, z = sin t + 1)).% Chuong trinh 5 - xac dinh quy dao cua diem bang phuong phap% Eulerclear alltmax=2; % thoi gian khao satN = 100; % so nut thoi giandt=tmax/(N-1);t=0:dt:tmax; % cac nut thoi gian% vi tri ban dau cua diemx(1) = 1;y(1) = 1;z(1) = 1;for i = 2:N

x(i) = x(i-1) + dt*f(x(i-1),y(i-1),z(i-1),t(i-1));y(i) = y(i-1) + dt*g(x(i-1),y(i-1),z(i-1),t(i-1));z(i) = z(i-1) + dt*h(x(i-1),y(i-1),z(i-1),t(i-1));

end% ve quy daoplot3(x,y,z)

Chöông trình goïi caùc haøm f.m, g.m, h.mfunction v=f(x,y,z,t)v=-x;function v=g(x,y,z,t)v=y;function v=h(x,y,z,t)v=cos(t);

Baïn ñoïc neân so saùnh nghieäm xaáp xæ thu ñöôïc töø chöông trình naøy vôùi nghieämchính xaùc cuûa baøi toaùn.

Nhö ñaõ bieát, phöông trình vi phaân caáp hai töông ñöông vôùi heä hai phöôngtrình vi phaân caáp moät. Baïn haõy töï ñöa ra thuaät toaùn giaûi soá phöông trình vi phaâncaáp hai döïa treân thuaät toaùn ñöa ra ôû ñaây.

KEÁT LUAÄN

Taøi lieäu ”Hoïc Matlab baèng thí duï” ñöôïc trình baøy theo quan ñieåm thöïc duïng,chæ hoïc nhöõng gì caàn thieát vaø hoïc chuùng taïi nôi chuùng xuaát hieän. Ñieàu naøy tröôùc

Page 48: hoc nhanh matlab.pdf

Hoïc MATLAB baèng thí duï 47

Hình 11: Quyõ ñaïo cuûa haït (1, 1, 1)ï, thí duï 14.

tieân nhaèm ñaït muïc ñích hoïc nhanh veà Matlab, ngoaøi ra, caùch hoïc naøy coøn coù lôïiñieåm laø ngöôøi hoïc deã nhôù vaø bieát aùp duïng ngay kieán thöùc ñang hoïc. Tuy nhieân, ñaâychöa phaûi laø taát caû. Noäi dung cuûa Matlab raát phong phuù, khaû naêng tính toaùn cuûaMatlab raát ña daïng. Vaãn coøn raát, raát nhieàu nhöõng ñieàu caàn bieát veà Matlab, vaø nhaátlaø cho ñeán cuoái taøi lieäu naøy chuùng ta vaãn chöa baøn ñeán nhöõng haïn cheá cuûa Matlab.Baïn ñoïc trong nhöõng öùng duïng cuûa mình seõ nhaän thaáy nhöõng giôùi haïn ñoù, seõ thaáycaàn phaûi bieát theâm nhöõng gì veà Matlab - nhöõng noäi dung chöa ñöôïc baøn ñeán ôû ñaây.Khi vieát taøi lieäu naøy chuùng toâi aáp uû moät hy voïng - vôùi taøi lieäu naøy baïn ñoïc seõ caûmthaáy höùng thuù hoïc vaø aùp duïng Matlab trong coâng vieäc hoïc taäp vaø nghieân cöùu cuûamình.

Nhö moïi thöù thuoäc veà con ngöôøi, taøi lieäu naøy aét haøm chöùa nhöõng ñieàu sai soùt,chuùng toâi raát mong nhaän ñöôïc nhöõng ñoùng goùp giuùp hieäu chænh nhöõng sai soùt cuûataøi lieäu. Xin göûi nhöõng yù kieán nhaän xeùt, nhöõng ñoùng goùp giuùp hoaøn thieän taøi lieäuñeán cho chuùng toâi theo ñòa chæ email: [email protected]. Xin chaân thaønh caùmôn.

Trònh Anh Ngoïc

Page 49: hoc nhanh matlab.pdf

48 Trònh Anh Ngoïc

Page 50: hoc nhanh matlab.pdf

Muïc luïc

1 Vai troø cuûa maùy tính trong nghieân cöùu vaø öùng duïng toaùn hoïc . . . . . 1

2 Matlab - phaàn meàm toaùn hoïc . . . . . . . . . . . . . . . . . . . . . . . . . 1

3 Löôùt qua Matlab - caùi nhìn ñaàu . . . . . . . . . . . . . . . . . . . . . . . . 24 Giôùi thieäu veà Symbolic Math Toolbox . . . . . . . . . . . . . . . . . . . . 7

4.1 Ñoái töôïng kyù hieäu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.2 Caùc pheùp tính kyù hieäu thöôøng duøng . . . . . . . . . . . . . . . . . 8

4.3 Moät soá caùch duøng khaùc cuûa haøm sym . . . . . . . . . . . . . . . . 10

4.4 Bieán kyù hieäu maëc nhieân . . . . . . . . . . . . . . . . . . . . . . . . 13

4.5 Caùc thí duï tính toaùn kyù hieäu . . . . . . . . . . . . . . . . . . . . . 14

5 Vieát chöông trình baèng Matlab . . . . . . . . . . . . . . . . . . . . . . . . 34

5.1 Caùc caáu truùc trong ngoân ngöõ Matlab . . . . . . . . . . . . . . . . 34

5.2 Moät soá chöông trình thí duï . . . . . . . . . . . . . . . . . . . . . . 36

49