Professional Documents
Culture Documents
Chöông I
MATLAB CÔ BAÛN
• Treân cöûa soå Window nhaáp ñuùp leân bieåu töôïng cuûa Matlab
• Vaøo Start -> All Programs -> Matlab release 12 -> Matlab 12.
Sau khi khôûi ñoäng öùng duïng Matlab seõ ñöôïc môû, giao dieän chính cuûa Matlab nhö
hình
Thoaùt khoûi Matlab:
Ñeå thoaùt khoûi öùng duïng Matlab coù theå choïn Exit Matlab töø menu File treân
Desktop hoaëc nhaäp quit trong Command Window
exit, quit Thoaùt khoûi Matlab
finish Keát thuùc Mfile
2. Giôùi thieäu moâi tröôøng laøm vieäc vaø caùc coâng cuï cuûa Matlab
Giôùi thieäu khaùi quaùt giao dieän laøm vieäc chính cuûa Matlab
Khi khôûi ñoäng Matlab giao dieän chính seõ môû ra, giao dieän naøy chöùa caùc coâng cuï
(giao tieáp ngöôøi duøng) ñeå quaûn lyù caùc taäp tin, bieán vaø caùc öùng duïng phuï trôï khaùc.
• Command window.
• Help Browser.
• Current Directory Browser.
• Command history.
• WorkSpace Browser.
• Editor/Debugger.
• Profiler.
Söû duïng Matlab nhö moät maùy tính
Khi daáu nhaéc “>>” nhaáp nhaùy trong Command Window chæ ra raèng Matlab ñaõ
saún saøng cho vieäc nhaäp döõ lieäu. Khi nhìn thaáy daáu nhaéc “>>” luùc ñoù baïn coù theå
nhaäp vaøo moät bieán hoaëc chaïy moät haøm naøo ñoù.
Baïn chæ caàn nhaäp vaøo bieåu thöùc baïn muoán tính. Ví duï ta muoán tính bieåu thöùc
1 + 2 × 3 baïn nhaäp bieåu thöùc sau daáu nhaùy “>>” nhö sau
Neáu khoâng nhaäp vaøo bieán ñeå laáy giaù trò ra, Matlab söû duïng bieán maëc ñònh ans
(answer) ñeå nhaän giaù trò cuûa pheùp tính vöøa thöïc hieän. ans cuõng nhö caùc bieán
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 2
khaùc, baïn coù quyeàn tham chieáu ñeán noù khi caàn thieát. Trong tröôøng hôïp baïn muoán
duøng bieán ñeå laáy giaù trò ñaàu ra, baïn chæ caàn nhaäp
Teân bieán cuõng ñöôïc söû duïng ñeå tham chieáu ñeán keát quaû cuûa pheùp tính tröôùc. Khi
ta caàn tính 4 × x ta chæ caàn nhaäp
Keát thuùc moãi doøng leänh, nhaán <Enter> neáu baïn muoán kieåm tra keát quaû cuûa
vieäc thöïc thi doøng leänh ngay laäp töùc. Ngöôïc laïi, nhaäp daáu “;” tröôùc khi nhaán
<Enter> keát quaû thöïc thi cuûa doøng leänh vöøa nhaäp seõ khoâng hieån thò treân maøn
hình.
Ta coù theå nhaäp nhieàu bieåu thöùc treân cuøng moät doøng
Bieán chæ söû ñöôïc toái ña 31 kyù töï coù nghóa, bieán phaân bieät giöõa chöõ hoa vaø chöõ
thöôøng.
Bieán baét ñaàu baèng moät töø theo sau laø töø hay soá hoaëc daáu gaïch chaân (_).
Coù hai loaïi bieán:
• Bieán toaøn cuïc: coù taùc duïng trong toaøn boä chöông trình.
• Bieán cuïc boä: chæ coù taùc duïng trong phaïm vi khai baùo (noäi trong haøm)
Ngoaøi ra MATLAB coøn cung caáp moät soá bieán ñaëc bieät ví duï nhö pi, i, j, ans …
Duøng caùc leänh who vaø whos ñeå kieåm tra bieán, leänh clear vaø clear all ñeå xoùa
bieán ñaõ söû duïng
Ví duï:
Ví duï:
Neáu muoán löu döõ lieäu naøy vaøo taäp tin dat-file trong thö muïc hieän haønh ta laøm
nhö sau:
Ngoaøi ra ta coøn coù theå taïo moät tin döõ lieäu coù phaàn môû roäng *.m
Chöông trình Keát quaû
Leänh ‘input’ yeâu caàu ngöôøi duøng nhaäp döõ lieäu töø phím.
Ñeå theå hieän giaù trò cuûa moät bieán vaø chuoãi treân maøn hình ta söû duïng hai leänh
‘disp()’ vaø ‘fprintf’
6. Löu vaø taûi taäp tin coù phaàn môû roäng *.txt
6.1.Löu taäp tin *.txt
Chöông trình Keát quaû
• Phaân bieät giöõa caùc phaàn töû trong haøng laø khoaûng traéng hoaëc daáu
phaåy.
• Söû duïng daáu chaám phaåy (;) ñeå ngaên caùch giöõa caùc haøng.
• Bao quanh moät ma traän laø caëp daáu: “ [ ] ”
Ví duï: caàn khai baùo moät ma traän nhö sau:
⎡1 2 3⎤
A = ⎢⎢ 4 5 6 ⎥⎥
⎢⎣7 8 9 ⎥⎦
Khi nhaäp vaøo ma traän nhö treân, Matlab töï ñoäng löu bieán A trong Workspace
baïn coù theå tham chieáu ñeán noù chæ ñôn giaûn nhaäp vaøo A.
Khi ta khoâng nhaäp moät bieán laáy döõ lieäu ra, Matlab töï ñoäng söû duïng bieán ans
ñeå gaùn keát quaû cuûa pheùp tính. Vaø bieán naøy cuõng ñöôïc söû duïng nhö nhöõng bieán
khaùc.
Vec tô haøng laø ma traän 1 x n goàm 1 haøng vaø n coät
Vec tô coät laø moät ma traän côõ m x1, goàm moät coät vaø m haøng .
Söû duïng daáu “ ’ ” ñeå chuyeån ñoåi qua laïi giöõa caùc vec tô haøng vaø vectô coät
Ta cuõng coù theå tham chieáu ñeán caùc phaàn töû cuûa moät ma traän baèng moät chæ soá
duy nhaát A(k), caùch naøy thöôøng duøng ñeå tham chieáu ñeán caùc phaàn töû cuûa vector
haøng hoaëc coät. Tuy nhieân ta cuõng coù theå aùp duïng cho caùc ma traän hai chieàu,
trong tröôøng hôïp naøy chæ soá laø vò trí cuûa phaàn töû trong ma traän.
Neáu ta truy xuaát vaøo phaàn töû ôû beân ngoaøi ma traän Matlab seõ baùo loãi
Ngöôïc laïi, neáu ta gaùn moät giaù trò cho moät phaàn töû ôû beân ngoaøi ma traän thì
kích thöôùc ma traän seõ töï ñoäng taêng leân ñeå cung caáp vò trí cho caùc phaàn töû môùi.
Truy xuaát vaøo haøng thöù i, coät baát kì cuûa ma traän A ta thöïc hieän A(i ,: ).
Ngöôïc laïi khi caàn truy xuaát vaøo haøng baát kì, coät j cuûa ma traän A ta thöïc hieän
A(:,j)
Toaùn töû “ : ” ñaây laø moät trong nhöõng toaùn töû quan troïng nhaát cuûa Matlab, noù
xuaát hieän trong caùc daïng khaùc nhau.
Bieåu thöùc
Vôùi khai baùo nhö treân ta thu ñöôïc moät vactor coù moät haøng, naêm coät vôùi böôùc
nhaûy maëc ñònh laø moät.
Ñeå ñònh giaù trò böôùc nhaûy ta khai baùo nhö sau:
Khai baùo chæ soá phaàn töû cuûa ma traän A(1:k,j) nghóa laø laáy caùc phaàn töû ôû doøng
moät ñeán doøng k vaø coät j cuûa ma traän A.
Khi khai baùo A(:,end) coù nghóa laø laáy caùc phaàn töû ôû haøng baát kyø, coät cuoái
cuøng cuûa ma traän A
Truy xuaát vaøo ma traän con cuûa moät ma traän, ví duï Eixj laø ma traän con cuûa ma
traän Amxn ta thöïc hieän nhö sau:
Neáu muoán truy xuaát vaøo phaàn töû cuoái cuûa haøng hoaëc coät trong moät ma traän ta
coù theå thöïc hieän nhö sau:
Xoùa moät haøng hoaëc moät coät cuûa moät ma traän thöïc hieän pheùp gaùn haøng hoaëc
coät caàn xoaù boû baèng [ ]
Theâm vaøo moät ma traän moät haøng hoaëc moät coät ta thöïc hieän nhö sau:
Gheùp chuoãi: laø quaù trình xöû lyù laép gheùp nhieàu ma traän con (nhoû) thaønh moät ma
traän lôùn, yeâu caàu cuûa pheùp gheùp laø caùc ma traän con phaûi coù kích thöôùc phuø hôïp.
1 4 1/2 2
x 2 y 5 2\x 1 2./x 1
3 6 3/2 2/3
x’ 1 2 3 y’ 4 5 6 0 0 1/6 1/4
5 -3 x/y 0 0 1/3 x./y 2/5
x+y 7 x-y -3 0 0 1/2 1/2
9 -3 1/2 1/2
3 -1 x/2 1 x./2 1
x+2 x-2
4 0 3/2 3/2
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 13
5 1 1
4 x^y Error x.^y 39
x*y Error x.*y 10 729
18 1
x’*y 32 x’.*y Error x^2 Error x.^2 4
4 5 6 9
x*y’ 8 10 12 x.*y’ Error 2
12 15 18 2^x Error 2.^x 4
2 2 8
x*2 4 x.*2 4 (x+i*y)’ 1 - 4i 2 - 5i 3 - 6i
6 6 (x+i*y).' 1 + 4i 2 + 5i 3 + 6i
4
x\y 16/7 x.\y 5/2
2
IV. CAÙC LEÄNH VEÕ CÔ BAÛN
Caùc böôùc ñoà hoïa:
Böôùc MATLAB code
X= 0:0.1:2*pi;
1. Chuaån bò döõ lieäu
Y= sin(X);
2. Choïn cöûa soå vaø vò trí cuûa ñoái töôïng ñoà figure(‘Name’,’Hinh sine’);
hoïa trong cöûa soå. subplot(2,2,1);
3. Goïi haøm veõ ñoà thò h =plot(X,Y);
4. Xaùc ñònh thuoäc tính cho hình nhö kieåu
set(h, ‘LineStyle’,’-‘,’Color’,’r’)
ñöôøng, maøu saéc, …
5. Xaùc ñònh caùc thuoäc tính cuûa axis, axes, axis([-1 6 -1.2 1.2]);
löôùi veõ, … grid on;
xlabel(‘X’);
6. Chuù thích cho ñoà thò: labels, legend,
ylabel(‘Y=SIN(X)’);
text, …
title(‘Ñoà thò hình sine’);
7. Xuaát keát quaû
set(h,'linestyle','-','Color','r');
xlabel('Truc X');
ylabel('Y=sin(X)');
title('Hinh Sine');
grid on
subplot(2,1,2);
h=plot(X,Y2);
set(h,'linestyle','.','Color','b');
xlabel('Truc X');
ylabel('Y=cos(X)');
title('Hinh COS');
grid on;
V. LAÄP TRÌNH VÔÙI MATLAB
MATLAB cho pheùp ngöôøi duøng laäp trình theo hai loaïi : scripts vaø function
SCRIPTS: Laø hình thöùc ñôn giaûn nhaát cuûa M-file bôûi vì noù khoâng coù thoâng soá
vaøo vaø ra. Chuùng laø moät taäp hôïp caùc leänh vaø caùc haøm cuûa MATLAB. Scripts
hoaït ñoäng döïa vaøo ñoái töôïng toàn taïi trong Workspace. Taát caû caùc bieán taïo ra
trong scripts ñeàu coù theå söû duïng sau khi scripts keát thuùc.
Ví duï:
FUNCTION : Laø scripts tuy nhieân coù theâm ñoái soá vaøo ( input arguments)
vaø ñoái soá ra ( output arguments). Hoaït ñoäng cuûa bieán trong moät workspace rieâng,
caùc bieán naøy chia reõ vôùi caùc bieán trong workspace maø ta thöïc hieän trong scripts
hay ôû command line.
Caùc thaønh phaàn cô baûn cuûa moät haøm (function)
Doøng ñònh nghóa haøm.
Doøng cho bieát yù nghóa cuûa haøm (Doøng H1)
Doøng chuù thích yù nghóa cuûa haøm ( Doøng Help line)
Noäi dung cuûa haøm
Doøng ñònh nghóa haøm cho bieát: Teân cuûa haøm vaø caùc ñoái soá cuûa haøm ñöôïc minh
hoïa nhö sau:
Vieäc ñaët teân haøm cuõng coù raøng buoäc gioáng nhö vieäc ñaët teân bieán: baét ñaàu
baèng teân haøm baèng kí töï tieáp theo laø caùc con soá vaø daáu gaïch döôùi.
Ñoái soá cuûa haøm: Neáu haøm coù nhieàu giaù trò traû veà thì ta ñaët taát caû caùc ñoái soá
naøy trong daáu ngoaëc vuoâng []
function [x,y,z]= sphere(theta, phi, rho)
Neáu haøm khoâng coù giaù trò traû veà ta coù theå ñeå troáng hay ñeå daáu []
function print_result(x) hay function []=print_result(x)
Doøng H1: Ñaây laø doøng trôï giuùp ñaàu tieân, cho bieát yù nghóa cuûa haøm, doøng naøy
ngay sau doøng ñònh nghóa haøm vaø baét ñaàu vôùi kí töï “ %”
Ví duï : haøm average.m
% AVERAGE means of vectô Elements
Doøng naøy seõ laø doøng ñaàu tieân xuaát hieän khi baïn goõ help function_name ( Teân
haøm ) taïi doøng nhaéc (>>) cuûa MATLAB. Doøng naøy chöùa thoâng tin raát quan troïng
cuûa haøm.
Caùc doøng trôï giuùp ( Help line):
Caùc doøng naøy ñöôïc taïo ra nhmaè muïc ñích chuù thích caùc thoâng soá cuûa haøm cuõng nhö
caùc ví duï khi söû duïng haøm naøy. Caùc doøng naøy xuaát hieän sau doøng H1 line khi baïn
goõ help function_name taïi doøng nhaéc cuûa MATLAB. Caùc doøng naøy seõ keát thuùc khi
coù doøng traéng giöõa hai doøng coù “ %”
Ví duï baïn goõ help sin taïi doøng nhaéc MATLAB:
Coù keát quaû nhö sau:
Noäi dung cuûa haøm: ñaây chính laø phaàn chính cuûa haøm
Doøng H1
Caùc doøng trôï giuùp
function a = mean(v,n)
% Calculate average.
a = sum(v)/n;
function [avg,med] = newstats(u) % Primary function
% NEWSTATS Find mean and median with internal function m = median(v,n)
functions. % Calculate median.
n = length(u); w = sort(v);
avg = mean(u,n); if rem(n,2) == 1
med = median(u,n); Subfunction
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end
ÑK if
Leänh
Ví duï:
x = input('x = ');
if x<0
x = -x;
end;
disp('|x | = ');
disp(x);
• Daïng 2:
if (bieåu thöùc logic)
leänh 1
else
leänh 2
end
Leänh 1 thöïc hieän khi bieåu thöùc logic ñuùng vaø ngöôïc laïi khi bieåu thöùc logic
sai thì leänh 2 thöc hieän.
Löu ñoà:
Ví duï:
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 19
x = input('Nhaäp x:')
if x<-1
y = abs(x+1)
else
y = abs(x-1)
end
disp('x=')
disp(x)
disp('y=')
disp(y)
• Daïng 3:
if (bieåu thöùc logic 1)
leänh 1
elseif (bieåu thöùc logic 2)
leänh 2
else
leänh 3
end
ÔÛ daïng naøy leänh 1 thöïc hieän khi bieåu thöùc logic 1 thoûa maõn. Neáu bieåu
thöùc logic 1 khoâng ñuùng, chöông trình tieáp tuïc kieåm tra bieåu thöùc logic 2, neáu
ñuùng thöïc hieän leänh 2 neáu sai seõ thöïc hieän leänh 3.
Löu ñoà:
Ví duï:
if temperature > 100
disp(’Too hot - equipment malfunctioning.’)
elseif temperature > 90
disp(’Normal operating range.’)
elseif temperature > 50
disp(’Below desired operating range.’)
else
disp(’Too cold - turn off equipment.’)
end
Ví duï1:
MATLAB code:
Ví duï 2:
n = input('Enter n:');
Sn = 0;
for k = 1:1:n
Sn = Sn + 1/k;
end;
disp('Sn = ');disp(Sn);
Voøng laëp while:
while ( ñieàu kieän)
leänh
end
Ñoái vôùi voøng laëp while thì soá laàn laëp khoâng xaùc ñònh, soá laàn laëp phuï thuoäc
vaøo ñieàu kieän ñuùng hay sai. Trong khi ñieàu kieän coøn ñuùng thì voøng laëp vaãn coøn
tieáp tuïc vì vaäy trong phaàn leänh cuûa voøng laëp while luoân coù ñieàu kieän ñeå döøng
voøng laëp. Trong quaù trình xaây döïng vaø chaïy thöû chöông trình neáu rôi vaøo voøng
laëp voâ haïn thì baïn nhaán toå hôïp phím: Ctrl+(pause/brreak) ñeå keát thuùc chöông
trình.
Löu ñoà:
Ví duï 1:
MATLAB code:
Ví duï 2:
n = input('Enter n:');
Sn = 0; k = 0;
while k<= n
k = k + 1;
Sn = Sn + 1/k;
end
disp('Sn = '); disp(Sn);
Caáu truùc switch … case
switch (bieåu thöùc)
case ñieàu kieän_1
Leänh 1
case ñieàu kieän_2
Leänh 2
….
case ñieàu kieän_n
Leänh n
otherwise
Leänh (n+1)
end
Ví duï:
fprintf(' \n');
fprintf('Select a case:\n');
fprintf('==============\n');
fprintf(' 1 - pi\n');
fprintf(' 2 - e \n');
fprintf(' 3 - i \n');
fprintf('==============\n');
n = input('');
switch n
case 1
disp('Pi = ');disp(pi);
case 2
disp('e = ');disp(exp(1));
case 3
disp('i = ');disp(i);
otherwise
disp('Nothing to display');
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 24
end
Chöông II
Trong chöông naøy ta ñi giaûi (tìm nghieäm) cuûa heä phöông trình tuyeán tính coù daïng:
⎧ a11 x1 + a12 x2 + ... + a1N xN = b1
⎪ a x + a x + ... + a x = b
⎪ 21 1 22 2
⎨
2N N 2
(1.1)
⎪ .........
⎪⎩aM 1 x1 + aM 2 x2 + ... + aMN xN = bM
Heä phöông trình naøy coù theå ñöôïc vieát döôùi daïng qui öôùc baèng caùch duøng kí hieäu ma
traän-vec tô AM × N x = b
⎡ a11 a12 ... a1N ⎤ ⎡ x1 ⎤ ⎡ b1 ⎤
⎢a a22 ⎥
... a2 N ⎥ ⎢ x2 ⎥⎥ ⎢b ⎥
Vôùi AM × N = ⎢ 21 , x= ⎢ , b=⎢ 2⎥
⎢ ... ... ... ... ⎥ ⎢ .. ⎥ ⎢ .. ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣⎢ aM 1 aM 2 ... aMN ⎦⎥ ⎣⎢ xN ⎦⎥ ⎣⎢bM ⎦⎥
Seõ coù ba tröôøng hôïp xaûy ra:
Tröôøng hôïp thöù nhaát: soá phöông trình (M) baèng vôùi soá aån soá (N), vì vaäy ma traän A
vuoâng do ñoù nghieäm cuûa heä phöông trình coù theå ñöôïc vieát x = A−1b trong tröôøng hôïp
ma traän A khoâng suy bieán.
Ta coù theå söû duïng Matlab:
Neáu ma traän A vuoâng nhöng suy bieán, töùc laø trong ma traän A coù moät vaøi haøng hoaëc coät
phuï thuoäc tuyeán tính vôùi nhöõng haøng hoaëc coät khaùc.
Khi ñoù haïng cuûa ma traän A nhoû hôn M. Neáu ta loaïi boû taát caû caùc doøng phuï thuoäc tuyeán
tính cho ñeán khi chæ coøn laïi nhöõng doøng ñoäc laäp tuyeán tính, luùc naøy M<N ta qua tröôøng
hôïp thöù hai.
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 26
Tröôøng hôïp thöù hai: soá phöông trình (M) nhoû hôn soá aån soá (N), trong tröôøng hôïp naøy heä
phöông trình khoâng coù nghieäm duy nhaát.
Tröôøng hôïp thöù ba: khi soá phöông trình (M) lôùn hôn soá aån soá (N)
I. GIAÛI HEÄ PHÖÔNG TRÌNH ÑAÏI SOÁ TUYEÁN TÍNH BAÈNG THÖ VIEÄN CUÛA
MATLAB
1. Thöïc hieän pheùp chia thoâng thöôøng
II. TÌM NGHIEÄM CUÛA HEÄ PHÖÔNG TRÌNH ÑAÏI SOÁ TUYEÁN TÍNH BAÈNG
PHÖÔNG PHAÙP SOÁ
1. Phöông phaùp khöû Gauss
Ñeå ñôn giaûn ta giaû söû ma traän heä soá A coù kích thöôùc 3x3 ta coù heä
a11 x1 + a12 x2 + a13 x3 = b1
a21 x1 + a22 x2 + a23 x3 = b2 (1.2)
a31 x1 + a32 x2 + a33 x3 = b3
Noäi dung cô baûn cuûa phöông phaùp khöû Gauss laø khöû daàn caùc aån soá ñeå ñöa heä (1.2) veà
heä tam giaùc treân töông ñöông.
⎡ a11 a12 a13 b1 ⎤ ⎤
⎢a ⎥⎥
⎢ 21 a22 a33 b3 ⎥ ⎥
⎢⎣ a31 a32 a33 b3 ⎥⎦ ⎥
⎥ Khöû thuaän
⇓ ⎥
⎥
⎡ a11 a12 a13 b1 ⎤ ⎥
⎢ '
a22 '
a23 b2' ⎥⎥ ⎥
⎢ ⎥
⎢⎣ ''
a33 b3'' ⎥⎦ ⎥⎦
⇓
x3 = b3'' / a33
''
⎤
⎥ Theá ngöôïc
x2 = ( c2' − a23
'
x3 ) / a22
'
⎥
⎥
x1 = ( c1 − a12 x2 − a13 x3 ) / a11 ⎥⎦
Ta coù coâng thöùc toång quaùt
k
( k −1 k −1
)
a (mn ) = a (mn ) − a (mk ) / a (kk ) a (kn ) for m, n = k + 1, k + 2,..., M
k −1 k −1
bm( ) = bm( )
− ( a( )b
k −1)
/ a (kk ) (
k −1 k −1 k −1)
for m = k + 1, k + 2,..., M
k
mk k
⎛ M
⎞ m −1
xm = ⎜ bmm −1 − ∑ amn m −1
xn ⎟ / amm
⎝ n = m +1 ⎠
Giaûi thuaät cuûa pheùp khöû Gauss:
for k = 1 : n-1
for i = k+1 : n
factor = aik / akk
for j = k+1 : n
Khöû thuaän aij = aij – factor * akj
end
bi = bi - factor * bk
end
end
Theá ngöôïc xn = bn / ann
for i = n-1 : 1
sum = 0
for j = i+1 : n
sum = sum + aij * xj
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 28
end
xi = (bi - sum)/aii
end
Chöông trình Matlab giaûi heä phöông trình ñaïi soá tuyeán tính baèng phöông phaùp khöû
Gauss
⎡ −3 2 −1⎤ ⎡ x1 ⎤ ⎡ −1⎤
⎢ 6 −6 7 ⎥ ⎢ x ⎥ = ⎢ −7 ⎥
⎢ ⎥⎢ 2⎥ ⎢ ⎥
⎢⎣ 3 −4 4 ⎥⎦ ⎢⎣ x3 ⎥⎦ ⎢⎣ −6 ⎥⎦
lôùn nhaát thöù hai vôùi haøng thöù hai ñeå truï lôùn nhaát naèm ñuùng ôû haøng hai, coät hai cuûa sô ñoà
Gauss vaø quaù trình khöû x2 ñöôïc tieán haønh nhö muïc treân.
Cuoái cuøng thöïc hieän pheùp theá ngöôïc ñeå tìm nghieäm.
Giaûi thuaät cuûa pheùp khöû Gauss coù tìm truï lôùn nhaát:
for k = 1 : n-1
Kieåm tra tìm truï lôùn nhaát.
for i = k+1 : n
factor = aik / akk
for j = k+1 : n
Khöû thuaän
aij = aij – factor * akj
end
bi = bi - factor * bk
end
end
xn = bn / ann
for i = n-1 : 1
sum = 0
for j = i+1 : n
Theá ngöôïc
sum = sum + aij * xj
end
Xi = (bi - sum)/aii
end
Chöông trình Matlab giaûi heä phöông trình ñaïi soá tuyeán tính baèng phöông phaùp khöû
Gauss coù tìm truï lôùn nhaát
⎡ 0 1 1 ⎤ ⎡ x1 ⎤ ⎡ 2 ⎤
⎢ 2 −1 −1⎥ ⎢ x ⎥ = ⎢ 0 ⎥
⎢ ⎥⎢ 2⎥ ⎢ ⎥
⎢⎣ 1 1 −1⎥⎦ ⎢⎣ x3 ⎥⎦ ⎢⎣ 1 ⎥⎦
1 Cho k = 1
2 Neáu akk( ) = 0 tieán haønh pheùp ñoåi haøng sao cho
k −1
akk(
k −1)
≠ 0 , neáu ñieàu naøy khoâng xaûy ra ma traän
Chöông II
Trong thöïc haønh ta thöôøng gaëp nhöõng haøm soá y = f ( x) maø khoâng bieát bieåu thöùc
giaûi tích cuï theå f cuûa chuùng. Thoâng thöôøng, ta chæ bieát caùc giaù trò y0 , y1 ,..., yn cuûa haøm
soá taïi caùc ñieåm khaùc nhau x0 , x1 ,..., xn cuûa ñoaïn [ a, b ] . Caùc giaù trò naøy coù ñöôïc nhôø thí
nghieäm, ño ñaïc,…Tuy nhieân soá laàn laøm thí nghieäm hoaëc ño ñaït laø höõu haïn trong khi ñoù
nhieàu khi ta muoán xaùc ñònh giaù trò cuûa chuùng taïi caùc ñieåm khoâng truøng vôùi xi . Muoán
theá, ta tìm caùch xaây döïng moät ña thöùc Pn ( x) = a0 x n + a1 x n −1 + ... + an −1 x + an thoûa maõn
Pn ( xi ) = f ( xi ) = yi , i = 1 ÷ n
Noäi suy laø tìm moät haøm soá ñi qua taát caû caùc ñieåm döõ lieäu cho tröôùc. Ngoaïi suy laø
tìm haøm soá moâ taû toát nhaát taát caû nhöõng ñieåm döõ lieäu coù ñöôïc, haøm ngoaïi suy khoâng caàn
phaûi ñi qua caùc ñieåm döõ lieäu ñaõ cho.
I. SÖÛ DUÏNG HAØM THÖ VIEÄN MATLAB: interp1, interp2, interp3, spline,
polyfit
1. Noäi suy moät chieàu: interp1
yi = int erp1( X , Y , xi ) trò xi döïa vaøo pheùp noäi suy cuûa taäp döõ lieäu X, Y.
Vevtor X xaùc ñònh ñieåm taïi ñoù giaù trò cuûa haøm ñaõ
bieát.
Noäi suy döõ lieäu theo nhöõng phöông phaùp khaùc nhau:
• 'nearest' :
yi = int erp1( X , Y , xi , method ) • 'linear' : noäi suy tuyeán tính (maëc ñònh)
• 'spline': noäi suy ñöôøng cong baäc ba
• 'pchip', 'cubic' : noäi ñöôøng cong Hermit
y5 = interp1(x,y,x1,'cubic');
grid on
hold on
hinh=plot(x,y,'o',x1,y1,'b')
hinh=plot(x1,y2,'r',x1,y3,'g',x1,…
y4,'k',x1,y5,'m')
legend('data','linear','nearest',…
'spline','pchip','cubic');
l N ( x ) = y0
( x − x1 )( x − x2 ) ... ( x − xN ) + y ( x − x0 )( x − x2 ) ... ( x − xN )
( x0 − x1 )( x0 − x2 ) ... ( x0 − xN ) 1 ( x1 − x0 )( x1 − x2 ) ... ( x1 − xN )
+ ... + y N
( x − x0 )( x − x1 ) ... ( x − xN −1 )
( xN − x0 )( xN − x1 ) ... ( xN − xN −1 )
N
∏(x − x )k N
( x − xk )
lN ( x ) = ∑ ym LN ,m ( x ) , LN , m ( x ) = k ≠m
=∏
∏ ( xm − xk ) k ≠m ( m k )
N
x −x
k ≠m
n1 ( x0 ) = a0 + a1 ( x0 − x0 ) = y0
n1 ( x1 ) = a0 + a1 ( x1 − x0 ) = y1
y1 − a0 y −y
Giaûi heä ta ñöôïc a0 = y0 , a1 = = 1 0 = Df 0
x1 − x0 x1 − x0
Töø ña thöùc Newton baäc nhaát ta thieát laäp cho ña thöùc baäc hai
n2 ( x ) = n1 ( x ) + a2 ( x − x0 )( x − x1 ) = a0 + a1 ( x − x0 ) + a2 ( x − x0 )( x − x1 )
Ña thöùc baäc hai naøy ñi qua caùc ñieåm döõ lieäu {( x , y ) , ( x , y ) , ( x , y )} . Tuy nhieân do
0 0 1 1 2 2
thöïc hieän pheùp coäng vôùi ña thöùc baäc moät, do ñoù ta chæ caàn xeùt ñieàu kieän ña thöùc baäc hai
ñi qua ñieåm döõ lieäu {( x2 , y2 )} ñeå tìm giaù trò cuûa a2
n2 ( x2 ) = a0 + a1 ( x2 − x0 ) + a2 ( x2 − x0 )( x2 − x1 ) = y2
Giaûi phöông trình naøy ta tìm ñöôïc
y1 − y0
y2 − a0 − a1 ( x2 − x0 )
y 2 − y0 − ( x2 − x0 )
x1 − x0
a2 = =
( x2 − x0 )( x2 − x1 ) ( x2 − x0 )( x2 − x1 )
y1 − y0
y2 − y1 + y1 − y0 − ( x2 − x1 + x1 − x0 )
x1 − x0
=
( x2 − x0 )( x2 − x1 )
y2 − y1 y1 − y0
−
x2 − x1 x1 − x0 Df1 − Df 0
= = = D 2 f0
x2 − x0 x2 − x0
Töông töï ta tìm ñöôïc heä soá aN cuûa ña thöùc baäc N
D N −1 f1 − D N −1 f 0
aN = = D N f0
xN − x0
Caùc böôùc thöïc hieän naøy coù theå ñöôïc toùm taéc theo baûng sau
hai ñieåm döõ lieäu naøy y , y . Ta tính ñöôïc boán heä soá H 0 , H1 , H 2 , H 3
'
0
'
1
h ( x0 ) = H 0 + H1 x0 + H 2 x02 + H 3 x03 = y0
h ( x1 ) = H 0 + H1 x1 + H 2 x12 + H 3 x13 = y1
h' ( x0 ) = H1 + 2 H 2 x0 + 3H 3 x02 = y0'
h' ( x1 ) = H1 + 2 H 2 x1 + 3H 3 x12 = y1'
Thöïc hieän pheùp tính xaáp xæ ñaïo haøm taïi caùc ñieåm döõ lieäu {( x , y ) , ( x , y )}
0 0 1 1
h ( x0 + ε ) − h ( x0 ) y 2 − y0 h ( x1 ) − h ( x1 − ε ) y1 − y3
y0' = = , y1' = =
ε ε ε ε
Tìm ña thöùc Lagrange/Newton ñi qua boán ñieåm döõ lieäu
{( x0 , y0 ) , ( x2 = x0 + ε , y2 = y0 + y0' ε ) , ( x3 = x1 − ε , y3 = y1 − y1'ε ) , ( x1 , y1 ) }
Chöông trình Matlab noäi suy ña thöùc Hermit
Haøm noäi suy trong mieàn giôùi haïn naøy coù daïng
x −x x − xm −1
z ( x, yn −1 ) = m zm −1,n −1 + zm ,n −1
xm − xm −1 xm − xm −1
xm − x x − xm −1
z ( x , yn ) = zm −1,n + zm ,n
xm − xm −1 xm − xm −1
yn − y y − yn −1
z ( x, y ) = z ( x, yn −1 ) + z ( x , yn )
yn − yn −1 yn − yn −1
=
1
( xm − xm−1 )( yn − yn−1 ) m
{( x − x )( yn − y ) zm−1,n−1
+ ( x − xm −1 )( yn − y ) zm, n −1 + ( xm − x )( y − yn −1 ) zm −1,n
+ ( x − xm −1 )( y − yn −1 ) zm, n −1}
Vôùi: xm −1 ≤ x ≤ xm , yn −1 ≤ y ≤ yn
Chöông trình noäi suy hai chieàu
i =1
∂ρ
=0
∂α β = const
∂ρ
=0
∂β α = const
m m
S xxα + S x β = S xy S xx = ∑ xi xi S x = ∑ xi
Hay (*) Vôùi i =1 i =1
S xα + mβ = S y m m
S xy = ∑ xi y i S y = ∑ yi
i =1 i =1
α = (S x S y − mS xy )
1
d
β = (S x S xy − S xx S y )
1
d
d = S x2 − mS xx
N
⎡ m n+k ⎤ m
∑ ⎢∑ xi ⎥ an = ∑ xi yi ,
n = 0 ⎣ i =1 ⎦ i =1
k
k = 0,1,..., N
Daïng ma traän :
⎡ m ∑ xi ∑x 2
. . ∑x N
⎤⎛ a0 ⎞ ⎛ ∑ y i ⎞
⎥⎜ ⎟ ⎜ ⎟
i i
⎢
⎢ ∑ xi ∑ x i2 ∑x ∑x ⎥⎜ a1 ⎟ ⎜ ∑ x i y i ⎟
3 N +1
i . . i
⎢ . . . . . . ⎥⎜ . ⎟ ⎜ . ⎟
⎢ ⎥ ⎜ ⎟ = ⎜ ⎟
⎢ . . . . . . ⎥ ⎜ . ⎟ ⎜ . ⎟
⎢ . ⎜
⎥ . ⎟ ⎜ ⎟
. . . . . ⎜ ⎟ ⎜ . ⎟
⎢ ⎥⎜ ⎟
⎦⎥⎝ N ⎠ ⎝ ∑ i i ⎠
⎜ ⎟
⎣⎢∑ x i ∑ x i ∑ x iN + 2 ∑ x i2 N N
N N +1
. . a x y
Chöông trình Matlab xaây döïng ña thöùc baäc
Ñaët v = ln y, u = ln x , b = ln c1 , a = c 2 ⇒ v = au + b
c2 x
y = c1 xe
Ñaët v = ln( y / x ), b = ln c1 , a = c 2 ⇒ v = ax + b
Chöông trình Matlab tìm heä soá cuûa haøm soá thöïc nghieäm y = c1 x c2
ÔÛ ñaây caùc haøm cô sôû f1 ( x), f 2 ( x),..., f n ( x) ñaõ bieát, ñi tìm caùc heä soá ci , i = 1,2,..., n
Thaëng dö:
n
ri = y i − f ( xi ) = y i − ∑ c j f j ( x)
j =1
→ cj
2
min r 2
y1 = c1 f1 ( x1 ) + c2 f 2 ( x1 ) + c3 f 3 ( x1 )
y2 = c1 f1 ( x2 ) + c2 f 2 ( x2 ) + c3 f 3 ( x2 )
.
ym = c1 f1 ( xm ) + c2 f 2 ( xm ) + c3 f 3 ( xm )
⎛ ⎡ y1 ⎤ ⎞ ⎡ f1 ( x1 ) f 2 ( x1 ) f3 ( x1 ) ⎤
⎜⎢ ⎥⎟ ⎛ c1 ⎞ ⎢ f (x )
y ⎜ ⎟ f 2 ( x2 ) f 2 ( x2 ) ⎥⎥
y = ⎜ ⎢ 2 ⎥ ⎟, c = ⎜ c2 ⎟ , A=⎢ 1 2
⎜⎢ . ⎥⎟ ⎢ . . . ⎥
⎜⎜ ⎢ ⎥ ⎟⎟ ⎜c ⎟
⎝ 3⎠ ⎢ ⎥
⎝ ⎣⎢ ym ⎦⎥ ⎠ ⎣⎢ f1 ( xm ) f 2 ( xm ) f 3 ( xm ) ⎦⎥
Ta coù:
ρ= r = ( y − Ac ) ( y − Ac) = y T y − ( Ac) T y − y T ( Ac) + c T AT Ac
2 T
2
= y T y − 2 y T Ac + c T AT Ac
Cöïc tieåu hoaù ρ , ta coù:
∂ρ
= −2 AT y + 2 AT Ac = 0 ⇒ ( AT A)c = AT b ⇒ c
∂c
c1
Chöông trình Matlab tìm heä soá cuûa haøm toå hôïp f ( x ) = + c2 x
x
Chöông III
I. SÖÛ DUÏNG THÖ VIEÄN MATLAB ÑEÅ GIAÛI PHÖÔNG TRÌNH PHI TUYEÁN:
solve, roots, fzero
1. Söû duïng haøm solve
x = fzero(fun,x0) Tìm giaù trò cuûa x gaàn giaù trò x0 ñeå haøm fun
baèng khoâng.
Giaûi phöông trình f = x − 2 s − 5, x0 = 2
3
II. SÖÛ DUÏNG PHÖÔNG PHAÙP SOÁ ÑEÅ GIAÛI PHÖÔNG TRÌNH PHI TUYEÁN:
1. Phöông phaùp laëp quanh ñieåm coá ñònh
Xaùc ñònh giaù trò cuûa x taïi moãi böôùc laëp xk +1 = g ( xk )
Ñieàu kieän döøng voøng laëp xk +1 − xk ≤ ε
Giaûi thuaät:
Nghieäm ñeà nghò ban ñaàu x0 = ... vaø ñieàu kieän döøng tol = ...
for k = 1, 2,...
xk +1 = g ( xk )
if hoäi tuï, döøng
end
f ( xk + ∆x) = f ( xk ) + ∆x
df
+
(∆x ) d 2 f
2
+ ...
dx xk 2 dx 2 xk
f ( xk +1 ) ≈ f ( xk ) + ( xk +1 − xk ) f ' ( xk )
Tìm x ñeå f (x) = 0 ⇔ cho f ( xk +1 ) = 0 vaø giaûi tìm x k +1 theo phöông trình
f ( xk )
0 = f ( xk ) + ( xk +1 − xk ) f ' ( xk ) → xk +1 = xk −
f ' ( xk )
Giaûi thuaät:
Nghieäm ñeà nghò ban ñaàu x0 = ... vaø ñieàu kieän döøng tol = ...
for k = 1, 2,...
f (x )
xk +1 = xk − ' k
f ( xk )
if hoäi tuï, döøng
end
Chöông trình Matlab giaûi phöông trình phi tuyeán f ( x ) = x − cos( x) vôùi giaù trò nghieäm
ñeà nghò ban ñaàu x0 = 1 vaø sai soá cho pheùp tol = 10−4
xk +1 = xk − f ( xk )
( xk − xk −1 )
f ( xk ) − f ( xk −1 )
if hoäi tuï, döøng
end
Chöông trình Matlab giaûi phöông trình phi tuyeán f ( x ) = x − cos( x) vôùi giaù trò nghieäm
ñeà nghò ban ñaàu x0 = 0.5, x1 = 0.6 vaø sai soá cho pheùp tol = 10−4
∂f 2 ∂f 2
f 2 ( x1 , x2 ) ≅ f 2 ( x1k , x2 k ) + ( x1 − x1k ) + ( x2 − x2 k ) = 0
∂x1 ( x1k , x2 k )
∂x2 ( x1k , x2 k )
Giaûi thuaät:
Böôùc 0: Nghieäm ñeà nghò ban ñaàu x0 vaø ñieàu kieän döøng
tol = ...
Böôùc 1: k = 1
xk +1 = xk − J k−1 f ( xk )
Tìm giaù trò cuûa goùc baén θ 0 ñeå vò trí khi rocket chaïm ñaát caùch vò trí baén moät khoaûng
x = 40 m . Cho vaän toác baén rocket v0 = 20 m / s .
g
Vaán ñeà ôû ñaây laø giaûi phöông trình phi tuyeán ( tan θ 0 ) x − x 2 + 1.8 − y = 0
2v cos 2 θ 0
2
0
Baøi 2: Cho moâ hình daàm ñoàng chaát chòu löïc phaân boá tuyeán tính nhö hình veõ.
ω0
Phöông trình ñöôøng ñaøn hoài cuûa daàm y =
120 EIL
( − x5 + 2 L2 x3 − L4 x )
Xaùc ñònh vò trí taïi ñoù bieán daïng laø lôùn nhaát.
Cho L = 450 cm , E = 50.000 kN / cm 2 , I = 30.000 cm 4 vaø ω0 = 1.75 kN / cm .
Vò trí taïi ñoù bieán daïng lôùn nhaát phaûi thoûa ñieàu kieän dy / dx = 0 .
ω0
Vaán ñeà phaûi laøm ôû ñaây laø tìm x ñeå phöông trình
120 EIL
( −5 x 4
+ 6 L2 x 2 − L4 ) = 0
Chöông trình Matlab giaûi phöông trình phi tuyeán baèng phöông phaùp chia ñoâi.
Baøi 3: Khaûo saùt baøi toaùn ñoäng hoïc cô caáu boán khaâu baûn leà phaúng
l1.sϕ1 + l3 .sϕ3 − yD
Töø (2) nhaän ñöôïc : sϕ 2 = − (3)
l2
⇒ l1.cϕ1 + l22 − (l1.sϕ1 + l3 .sϕ3 − yD ) 2 + l3 .cϕ3 − xD = 0 (4)
Phöông trình (4) theå hieän moái quan heä ϕ 3 theo ϕ1 .
Phöông trình (4) theå hieän moái quan heä ϕ 2 theo ϕ1 .
Baøi toaùn vaän toác :
Ñaïo haøm (2) theo toïa ñoä suy roäng ϕ1 :
⎧ L1 .sϕ1 + L2' .sϕ 2 .ω 2 (ϕ ) + L3' .sϕ 3 .ω 3 (ϕ ) = 0 ⎫
⎨ ⎬ (5)
⎩ L1 .cϕ1 + L2' .cϕ 2 .ω 2 (ϕ ) + L3' .cϕ 3 .ω 3 (ϕ ) = 0⎭
dϕ 2 dϕ 3
Trong ñoù : ω 2 (ϕ ) = , ω 3 (ϕ ) =
dϕ 1 dϕ1
Giaûi phöông trình (5) seõ nhaän ñöôïc ω 2 (ϕ ) vaø ω 3 (ϕ ) .
⎧ω = ω 2 (ϕ ).ω1 ⎫
Vaän toác goác khaâu 2 vaø 3 laø : ⎨ 2 ⎬ (6)
⎩ω 3 = ω 3 (ϕ ).ω1 ⎭
Baøi 4: Cho moät daàm chòu löïc nhö hình veõ. Daàm chòu taùc duïng taûi troïng phaân boá ñeàu ω
ω
Ta coù: y ( x) =
24 EI
(x 4
− 2 Lx3 + L3 x )
Bieát y(x) = 0.005 m.Tìm chuyeån vò x cuûa daàm treân baèng caùc phöông phaùp döôùi ñaây :
⎡ ⎛r −h⎞ 2 ⎤
V = ⎢r 2 cos −1 ⎜ ⎟ − (r − h ) 2rh − h ⎥ L
⎣ ⎝ r ⎠ ⎦
Bieát : r = 2 m, L = 5 m, V = 8 m 3
Chöông IV
Daïng phoå bieán cuûa tích phaân soá cuûa moät haøm moät f ( x ) treân ñoaïn [ a b ] coù daïng
b N
Moät soá phöông phaùp tích phaân soá thöôøng duøng: tích phaân hình thang, tích phaân
Simpson, tích phaân Gauss.
I. TÍNH TÍCH PHAÂN BAÈNG THÖ VIEÄN MATLAB: int, trapz, quad, quad8,
dblquad
1. Tính tích phaân vôùi haøm int
int(x/(1+z^2),z) atan(z)*x
int(x*log(1+x),0,1) 1/4
X = 0:pi/100:pi; X = 0:pi/100:pi;
Y = sin(X); Y = sin(X);
Z = trapz(X,Y) Z = pi/100*trapz(Y)
f = 'sin(x)' f = 'sin(x)'
Tichphan = quad(f,0,pi) Tichphan = quad(f,0,pi,1e-4)
f = 'sin(x)' f = 'sin(x)'
Tichphan = quadl(f,0,pi) Tichphan = quadl(f,0,pi,1e-4)
Ñeå tính tích phaân cuûa haøm f ( x ) treân ñoaïn [ a b ] ta chia ñoaïn [ a b ] thaønh N ñoaïn
nhoû coù chieàu daøi baèng h = (b − a ) / N . Vì vaäy giaù trò cuûa caùc nuùt
{ x = a + kh, k = 0,1,..., N } . Tieán haønh noäi suy tuyeán tính giöõa caùc nuùt naøy ta ñöôïc tích
phaân cuûa f ( x ) treân ñoaïn [ a b ]
b N −1
∫ f ( x )dx ≅ ∑ ∫ f ( x )dx ≅
h
{( f0 + f1 ) + ( f1 + f 2 ) + ... + ( f N −2 + f N −1 ) + ( f N −1 + f N )}
xk +1
a k =0
xk 2
h ⎧ f ( a ) + f ( b ) N −1 ⎫
b
∫ f ( x )dx = ⎨ + ∑ f ( xk ) ⎬
a
2⎩ 2 k =1 ⎭
2
2 2
⎛ ⎛ x ⎞2 ⎞
Chöông trình Matlab tính tích phaân S = ∫ f ( x)dx = ∫ π ⎜1 + ⎜ ⎟ ⎟ dx baèng luaät hình
⎜ ⎝2⎠ ⎟
0 0 ⎝ ⎠
thang, vôùi soá khoaûng chia laø 16
Töông töï ñeå tính tích phaân cuûa haøm f ( x ) treân ñoaïn [ a b ] ta chia ñoaïn [ a b ] thaønh
N ñoaïn nhoû coù chieàu daøi baèng h = ( b − a ) / N . Vì vaäy giaù trò cuûa caùc nuùt
{ x = a + kh, k = 0,1,..., N } . Tieán haønh noäi suy ña thöùc baäc hai giöõa caùc nuùt naøy ta ñöôïc
tích phaân cuûa f ( x ) treân ñoaïn [ a b ]
b N / 2 −1
{( f0 + 4 f1 + f 2 ) + ( f 2 + 4 f3 + f 4 ) + ... + ( f N −2 + 4 f N −1 + f N )}
h
f ( x )dx ≅ ∑∫ f ( x )dx ≅
x2 m+1
∫
a m =0
x2 m 3
h⎧ N / 2 −1 N / 2 −1
⎫
b
∫ f ( x )dx = ⎨
3⎩
f ( a ) + f ( b ) + 4 ∑
m=0
f ( x2 m +1 ) + 2 ∑
m =1
f ( x2 m ) ⎬
⎭
a
2
2
⎛ ⎛ x ⎞2 ⎞
2
Chöông trình Matlab tính tích phaân S = ∫ f ( x)dx = ∫ π ⎜1 + ⎜ ⎟ ⎟ dx baèng luaät Simpson,
⎜ ⎝2⎠ ⎟
0 0 ⎝ ⎠
vôùi soá khoaûng chia laø 16
Neáu haøm f ( t ) laø ña thöùc coù baäc nhoû hôn hoaëc baèng ba thì ta coù I ( −1,1) = ∫ f (t ) dt
1
−1
coù theå ñöôïc xaáp xæ baèng I [t1 , t2 ] = ω1 f ( t1 ) + ω2 f ( t2 ) . Vaán ñeà ôû ñaây laø ñi tìm caùc troïng
soá ω1 , ω2 vaø caùc ñieåm löôùi t1 , t2 baèng caùch söû duïng ña thöùc xaáp xæ vôùi f ( t ) = 1 (baäc
khoâng), f ( t ) = t (baäc nhaát), f ( t ) = t 2 (baäc hai), f ( t ) = t 3 (baäc ba) ta ñöôïc
f ( t ) = 1;
1
w1 f (t1 ) + w2 f (t2 ) = w1 + w2 = ∫ 1dt = 2
−1
f ( t ) = t;
1
w1 f (t1 ) + w2 f (t2 ) = w1t1 + w2t2 = ∫ tdt = 0
−1
2
f (t ) = t 2 ;
1
w1 f (t1 ) + w2 f (t2 ) = w1t12 + w2t22 = ∫ t 2 dt =
−1 3
f (t ) = t 3;
1
w1 f (t1 ) + w2 f (t2 ) = w1t13 + w2t23 = ∫ t 3 dt = 0
−1
1
Giaûi heä naøy ta ñöôïc ω1 = ω2 = 1; t1 = −t2 = −
3
⎛ 1 ⎞ ⎛ 1 ⎞
Neân ta coù I [t1 , t2 ] = f ⎜ − ⎟+ f ⎜ ⎟
⎝ 3⎠ ⎝ 3⎠
Vì vaäy ta coù coâng thöùc toång quaùt tính tích phaân Gauss vôùi N ñieåm Gauss
N
I [t1 , t2 ,..., t N ] = ∑ ωN ,i f ( ti )
i =1
Trong coâng thöùc tích phaân Gauss, ngöôøi ta giaû söû raèng tích phaân cuûa moät haøm f(x) ñöôïc
laáy treân khoaûng − 1 ≤ x ≤ 1 . Ñeå tính tích phaân treân mieàn [ a b ] baát kyø ta tieán haønh ñoåi
a+b b−a
bieán baèng caùch ñaët x = + t
2 2
⎡a +b b − a ⎤ b−a
b 1 1
Ta ñöôïc ∫ f ( x) dx = ∫ f ⎢ + t ⎥ dt = ∫ f ( x ( t ) )dt .
a −1 ⎣ 2 2 ⎦ 2 −1
b−a N
I [ x1 , x2 ,..., xN ] =
( b − a ) ti + a + b
∑
2 i =1
ω N ,i f ( xi ) vôùi xi =
2
Baûng Gauss baøi toaùn 1 chieàu
-0.577350269189626 -1.0000000000000
2 3
0.577350269189626 1.0000000000000
-0.774596669241483 -0.555555555555556
3 0 0.888888888888889 5
0.774596669241483 0.555555555555556
-0.861136311594053 -0.347854845137454
-0.339981043584856 -0.652145154862546
4 7
0.339981043584856 0.652145154862546
0.861136311594053 0.347854845137454
-0.906179845938664 -0.236926885056189
-0.538469310105683 -0.478628670499366
5 0 0.568888888888889 9
0.538469310105683 0.478628670499366
0.906179845938664 0.236926885056189
-0.932469514203152 -0.171324492379170
-0.661209386466264 -0.360761573048139
-0.238619186083197 -0.467913934572691
6 11
0.238619186083197 0.467913934572691
0.661209386466264 0.360761573048139
0.932469514203152 0.171324492379170
2
2 2
⎛ ⎛ x ⎞2 ⎞
Chöông trình Matlab tính tích phaân S = ∫ f ( x)dx = ∫ π ⎜1 + ⎜ ⎟ ⎟ dx baèng luaät Gauss,
⎜ ⎝2⎠ ⎟
0 0 ⎝ ⎠
vôùi naêm ñieåm Gauss
Baøi 2: Tính dieän tích cuûa mieàn giôùi haïn bôûi caùc ñöôøng x = f ( y ) = 2 y + 3, x = g ( y ) = y 2
Baøi 3: Moät hoà bôi hình troøn ñöôøng kính 24 ft, chieàu cao cuûa hoà laø 5 ft, möïc nöôùc chöùa
trong hoà laø 4 ft. Tính coâng caàn thieát ñeå bôm taát caû nöôùc ra khoûi hoà. Cho tæ khoái cuûa nöôùc
laø δ = 62.5 lb / ft 3
Khoaûng caùch töø maët thoaùng ñeán bôø hoà laø 1 ft vaø khoaûng caùch töø ñaùy hoà ñeán bôø hoà laø 5
5
ft. Vì vaäy ta coù W = ∫ dW = ∫ 144δπ zdz
1
Baøi 4: Moät taûi naâng taùc duïng leân caùnh maùy bay ñöôïc moâ taû theo quy luaät
w ( x ) = 1000 x sin x lb / ft , caùnh maùy bay ñöôïc moâ hình nhö daàm bò ngaøm moät ñaàu nhö
hình veõ. Tính phaûn löïc, löïc caét, moment uoán phaùt sinh trong caùnh, veõ bieåu ñoà löïc caét vaø
moment uoán naøy.
Chöông V
Phöông trình vi phaân thöôøng caáp moät coù daïng y ' ( t ) + ay ( t ) = r vôùi y ( 0 ) = y0
I. SÖÛ DUÏNG HAØM CUÛA MATLAB ÑEÅ GIAÛI PHÖÔNG TRÌNH VI PHAÂN
THÖÔØNG: dsolve, solver
1. Giaûi phöông trình (heä phöông trình) vi phaân thöôøng baèng dsolve
r = dsolve('eq1,eq2,...', 'cond1,cond2,...',
Cuù phaùp
'v')
Giaûi phöông trình (heä phöông trình) vi
phaân thöôøng eq1, eq2,… vôùi bieán ñoäc laäp v
vaø ñieàu kieän bieân/ñieàu kieän ñaàu cond1,
cond2,…
Bieán ñoäc laäp maëc ñònh laø t
D kí hieäu cho ñaïo haøm ñoái vôùi bieán ñoäc
Chuù thích laäp.
Ñieàu kieän bieân/ñaàu ñöôïc nhaäp döôùi daïng
y(a) = b hoaëc Dy(a) = b vôùi y laø bieán phuï
thuoäc, a, b laø haèng soá.
Neáu soá ñieàu kieän nhoû hôn soá bieán phuï
thuoäc thì nghieäm seõ chöùa caùc haèng soá C
baát kyø.
Ví duï Keát quaû
x = cos(t)*C1+sin(t)*C2
dsolve('Dx = y', 'Dy = -x')
y = -sin(t)*C1+cos(t)*C2
Ví duï
x ( t ) + 2 x ( t ) = x ( t ) + 2 y ( t ) − e − t
⎪⎧
⎨
⎪⎩ y = 4 x ( t ) + 3 y ( t ) + 4e −t
2. Giaûi baøi toaùn giaù trò ñaàu cho heä phöông trình vi phaân thöôøng (ODEs) baèng
solver
Ôû ñaây solver töông öùng vôùi ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb
⎧ x = z y =x
caáp moät ⎨ ñöa veà daïng vector baèng caùch ñaët 1
⎩ z = A0 sin (ωt ) − Bz − Ω x y2 = z
2
⎧ y1 = y2
Cuoái cuøng ta ñöôïc ⎨
⎩ y 2 = A0 sin (ωt ) − By2 − Ω y1
2
II. GIAÛI PHÖÔNG TRÌNH VI PHAÂN THÖÔØNG BAÈNG PHÖÔNG PHAÙP SOÁ
1. Phöông phaùp Euler
Cho phöông trình vi phaân caáp moät y ' ( t ) + ay ( t ) = r vôùi y ( 0 ) = y0
Ñeå giaûi phöông trình vi phaân naøy baèng phöông phaùp Euler ta xaáp xæ ñaïo haøm baäc nhaát
y (t + h) − y (t )
y' (t ) = theá vaøo phöông trình treân ta ñöôïc
h
y (t + h) − y (t )
+ ay ( t ) = r
h
⇔ y ( t + h ) = (1 − ah ) y ( t ) + hr vôùi y ( 0 ) = y0
Vieát döôùi daïng toång quaùt yk +1 = yk + hf ( tk , yk ) vôùi y ( t0 ) = y0
Chöông trình Matlab giaûi phöông trình vi phaân y ' ( t ) + y ( t ) = 1 vôùi y ( 0 ) = 0 baèng
phöông phaùp Euler
y ( tk +1 ) = y ( tk ) + ∫ f ( t , y )dt vôùi y ( t0 ) = y0
tk
Kutta vôùi khai trieån ñeán ñaïo haøm baäc boán seõ ñem laïi ñoä chính xaùc cao hôn. Giaûi thuaät
h
cuûa phöông phaùp yk +1 = yk + ( f k1 + 2 f k 2 + 2 f k 3 + f k 4 )
6
f k 1 = f ( t k , yk )
f k 2 = f ( tk + h / 2, yk + f k 1h / 2 )
Vôùi
f k 3 = f ( tk + h / 2, yk + f k 2 h / 2 )
f k 4 = f ( tk + h, yk + f k 3 h )
Chöông trình Matlab giaûi phöông trình vi phaân y ' ( t ) + y ( t ) = 1 vôùi y ( 0 ) = 0 baèng
phöông phaùp Range-Kutta
Baøi 2: Moâ taû Gradient vaän toác vôùi phöông trình vi phaân y ( t ) = 1 − y ( t )