intTypePromotion=1
ADSENSE

HỌC MATLAB BẰNG THÍ DỤ

Chia sẻ: Pham Khanh Hung Hung | Ngày: | Loại File: PDF | Số trang:51

490
lượt xem
235
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu này được viết với mục đích hướng dẫn các sinh viên học nhanh về Matlab. Phần đầu tài liệu là nội dung bài giảng của tác giả về Matlab trong học phần "Giải phương trình bằng máy tính". Một số thí dụ, chương trình tính toán số được lấy từ bài giảng "Giải tích số 1" cho lớp cử nhân tài năng, "Cơ học chất lỏng" cũng của tác giả. Matlab là phần mềm trợ giúp tính toán số và ký hiệu, do đó tài liệu gồm hai phần: (1) tính toán ký hiệu, và (2) tính toán số. Sau khi đọc xong...

Chủ đề:
Lưu

Nội dung Text: HỌC MATLAB BẰNG THÍ DỤ

  1. HỌC MATLAB BẰNG THÍ DỤ
  2. HOÏC MATLAB BAÈNG THÍ DUÏ Trònh Anh Ngoïc 8/5/2009
  3. 1 Hoïc MATLAB baèng thí duï 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ûi phöô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øi giaû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àn töû 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ø öùng duï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ùn hoï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öôïng toaù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 Matrix laboratory), cho pheùp ta thöïc hieän deã daøng caùc tính toaùn ma traän vaø vectô thöôøng gaë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öõ Matlab 2) 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
  4. 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ính naê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øi lieä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øi lieä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
  5. 3 Hoïc MATLAB baèng thí duï 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éc leä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= 12345698765 Chuù 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ät khoaû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:10 > b= 0 1 2 3 4 5 6 7 8 9 10 Neá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:10 > c= 0 2 4 6 8 10 Kí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ô a vôùi 3 > a+3 > ans = 4 5 6 7 8 9 12 11 10 Chuù yù: caùc leänh, caùc bieán ñöa vaøo ñöôïc Matlab löu giöõ trong workspace (vuøng laøm vieäc). Coù theå hình dung workspace nhö laø tôø giaáy nhaùp ta duøng khi laøm tính, caùc pheù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 tenbien hoaëc clear all - xoùa taát caû). Noäi dung cuûa workspace ñöôïc hieån thò treân cöûa soå Matlab ta coù theå duøng thanh tröôït beân phaûi cöûa soå Matlab ñeå xem caùc noäi dung cuõ(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û 1 Teân Matlab 7.1 coù theå khaùc tuøy thuoäc phieân baûn Matlab maø baïn duøng.
  6. 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än laï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ïi leänh. Tính vectô d laø toång cuûa hai vectô a vaø b > d=a+b > d= 1 3 5 7 9 11 15 15 15 15 15 Chuù 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):
  7. 5 Hoïc MATLAB baèng thí duï > B = [1 2 3 4; 5 6 7 8; 9 10 11 12] > hay > B = [1 2 3 4 > 5 678 9 10 11 12] B = 1 234 5 678 9 10 11 12 Kích thöôùc ma traän ñöôïc cho baèng haøm size, > size(B) > ans= 34 ◦ 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ùp tí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 ñöôïc hieå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 ma traä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 s laø 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. Trong tröôø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 ta duø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) >
  8. 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.3891 20.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änh function (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ïi moã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-file M-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änh tí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ài nhaá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ønh trong 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öõ trong workspace, 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óa haøm (gioáng nhö chöông trình con). Thí duï M-file rank.m
  9. 7 Hoïc MATLAB baèng thí duï 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 = =1 tol = max(size(A)) * max(s) * eps; end r = 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øn laï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ûa Matlab ñaûm traùch vieäc tính toaùn kyù hieäu.
  10. 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øng haø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øi pheù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ïi trong 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ï, s laø 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 old laø 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; new laø 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öôùng coø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)]
  11. 9 Hoïc MATLAB baèng thí duï [ 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 öùng cuû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ùc pheùp tính ñöôïc thöïc hieän nhö sau −1 −3 −t −3 ∗ t exp(−t) exp(−3 ∗ t) exp ∗t = exp = −4 −2 −4 ∗ t −2 ∗ 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än töøng phaàn töû; nghóa laø subs(x*y,{x,y},{A,B}) traû veà A.*B khi A, B laø ma traän caù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å khai trieå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-1 > f= (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äp caù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
  12. 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ài traû 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. keát quaû phöông phaùp s cos(x)∧2+sin(x)∧2 1 simplify 2*cos(x)∧2-sin(x)∧2 3*cos(x)∧2-1 simplify cos(x)∧2-sin(x)∧2 cos(2*x) combine(trig) cos(x)+(-sin(x)∧2)∧(1/2) cos(x)+i*sin(x) radsimp cos(x)+i*sin(x) exp(i*x) convert(exp) x∧3-x (x+1)*x*(x-1) combine(trig) x∧3+3*x∧2+3*x+1 (x+1)∧3 factor 4*x∧3-3*x cos(3*acos(x)) expand log(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 3x3 A= 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 AÙ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 3x3 A = [ 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át toaù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
  13. 11 Hoïc MATLAB baèng thí duï > x = sym(’x’,’real’); > > y = sym(’y’,’real’); > hay hieäu quaû hôn > syms x y real > taï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àu naøy coù nghóa laø bieåu thöùc f = x∧2 + y∧ 2 laø khoâng aâm. Suy ra, z = x + I*y laø 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 unreal > hay > x = sym(’x’,’unreal’) > > clear x > khoâ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öøa k! 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änh cuû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)/h > traû 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 >
  14. 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ích phaân), subs, vaø caùc haøm Symbolic Math Toolbox khaùc ñeå tính toaùn nhöõng bieåu thöùc nhö 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; else z = 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á", trong thí 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øm toaù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õ
  15. 13 Hoïc MATLAB baèng thí duï > 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ïo haø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án kyù hieäu maëc nhieân. Vôùi caùc haøm treân chuùng ta nhaän ñöôïc n*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 = x Neá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
  16. 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 = 31 5x + y + 2z = 29 3x − 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 10 Duø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 -83 Duø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
  17. 15 Hoïc MATLAB baèng thí duï 0 1 2 14 0 0 3 15 Baï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+3 d=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+12 Laø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-6 Khi m = 1 vaø m = 3 heä coù nghieäm duy nhaát > x=d1/d > x= (-4*m+12)/(m∧2-4*m+3) > x=simplify(x) >
  18. 16 Trònh Anh Ngoïc x= -4/(m-1) > y=d2/d > y= 0 > z=d3/d > z= (2*m-6)/(m∧2-4*m+3) > z=simplify(z) > z= 2/(m-1) Tröôøng hôïp m = 1 > subs(d1) > ans = 8 heä voâ nghieäm. Tröôøng hôïp m = 3 ta coù d1 = d2 = d3 = 0 tröôøng hôïp naøy phaûi xeùt cuï 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. Trong thí 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 1 1 1 1 un = + + + ...+ . n+1 n+2 n+3 n+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 . Trong Matlab 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 2 Coâ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). 3 Töø ñ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åu töôø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ân duøng ñeán help khi thaáy thaät caàn thieát.
  19. 17 Hoïc MATLAB baèng thí duï 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ûa haø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ù 1 1 1 1 1 1 11 un = + + +...+ 1 + 1/n n 1 + 2/n n 1 + 3/n n 1+1n suy ra 1 dx = ln(1 + x)|1 = ln(2). lim un = 0 1+x n→∞ 0 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át hieä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 h > Khi ñ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à inf limit(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. Tuy nhieân, duøng Matlab tính 20 soá haïng ñaàu cuûa daõy
  20. 18 Trònh Anh Ngoïc >> clear all >> x(1)=sqrt(2); >> for i=2:20, x(i)=sqrt(2-x(i-1)); end >> x x= Columns 1 through 15 1.4142 0.7654 1.1111 0.9428 1.0282 0.9858 1.0071 0.9965 1.0018 0.9991 1.0004 0.9998 1.0001 0.9999 1.0000 Columns 16 through 20 1.0000 1.0000 1.0000 1.0000 1.0000 1.4142 0.7654 1.1111 0.9428 1.0282 0.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öùng minh 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 dx +2 . y x +1 > clear all > > syms x y >
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2