You are on page 1of 81

Khoa xaây döïng vaø cô hoïc öùng duïng trang 1

Chöông I

MATLAB CÔ BAÛN

I. TOÅNG QUAN MOÂI TRÖÔØNG LAØM VIEÄC CUÛA MATLAB:


1. Khôûi ñoäng vaø thoaùt khoûi Matlab
™ Khôûi ñoäng Matlab:

• 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

3. Bieåu thöùc ( EXPRESSION)


Cuõng gioáng nhö haàu heát caùc ngoân ngöõ laäp trình khaùc, MATLAB cuõng
cung caáp nhöõng bieåu thöùc toaùn hoïc, nhöng khoâng gioáng caùc ngoân ngöõ laäp trình
khaùc, haàu heát caùc bieåu thöùc naøy ñeàu lieân quan ñeán ma traän.
™ Bieán soá ( variables)
™ Soá (Numbers)
™ Toaùn töû ( Operaters)
™ Haøm ( Functions)
3.1.Bieán ( Variables):
MATLAB khoâng yeâu caàu khai baùo kieåu vaø kích thöôùc cuûa bieán. Khi
MATLAB baét gaëp teân moät bieán môùi, noù seõ töï ñoäng taïo ra bieán vaø phaân phaùt giaù
trò vuøng nhôù cho bieán. Neáu bieán naøy ñaõ toàn taïi thì noù seõ löu giaù trò môùi vaø neáu
caàn thieát Matlab phaân phaùc giaù trò môùi cho bieán.

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 3

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ï:

3.2. Soá (Numbers):


MATLAB söû duïng caùc quy öôùc thaäp phaân. Söû duïng ghi chuù khoa hoïc (
scientific notation) e vaø soá aûo ( imaginary Numbers) ñeå bieåu dieån giaù trò soá.
Taát caû nhöõng con soá ñeàu ñöôïc löu kieåu ñònh daïng (format)
Duøng haøm format ñeå ñònh daïng kieåu soá:

Leänh söû duïng Keát quaû Ví duï: soá pi


format long 16 con soá sau daáu chaám 3.14159265358979
format long e 16 con soá coù daáu 3.141592653589793e+00
format short 5 con soá sau daáu chaám 3.1416
format short e 5 con soá coù daáu 3.1416e+00
format rat Tæ leä 355/113
format bank Thaäp phaân hai chöõ soá 3.14

Ví duï:

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 4

3.3. Toaùn töû:


Kí hieäu Moâ taû Ví duï
+ Coäng 2+3
- Tröø 2−3
* Nhaân 2*3
/ Chia 2/3
\ Chia traùi 3\ 2
^ Muõ 2^3
3.4. Haøm:
MATLAB cung caáp moät löôïng lôùn caùc haøm toaùn hoïc cô baûn bao goàm abs,
sqrt, exp, sin,… Trong MATLAB coù hai loaïi haøm:
• Caùc haøm build-in laø nhöõng haøm chuùng ta chæ ñöôïc söû duïng chöù
khoâng ñöôïc hieäu chænh.
• Caùc haøm M-file chuùng ta coù theå xem vaø hieäu chænh noäi dung cuûa
haøm.
Moät vaøi haøm ñaëc bieät, cho giaù trò laø haèng soá:
pi: 3.141759…
i,j: ñôn vò aûo i,j = − 1
eps: ñieåm chaám ñoäng coù quan heä ñeán ñoä chính xaùc, 2-52
realmin: Soá chaám ñoäng nhoû nhaát, 2-1022
realmax: Soá ñieåm chaám ñoäng lôùn nhaát, 21023
NaN: Not a number( Khoâng phaûi laø moät con soá)
Inf: Infinity( Soá voâ cuøng lôn, khoâng xaùc ñònh)
4. Nhaäp vaø xuaát döõ lieäu thoâng qua taäp tin
Matlab söû duïng hai daïng taäp tin döõ lieäu.
™ Daïng thöù nhaát mat-file laø taäp tin ñöôïc ñònh daïng kieåu nhò phaân, taäp tin loaïi
naøy coù phaàn môû roäng *.mat. Taäp tin loaïi naøy coù theå löu nhieàu hôn moät bieán
nhöng noù chæ ñöôïc sö duïng trong öùng duïng Matlab vaø khoâng chia seõ ñöôïc vôùi
nhöõng chöông trình khaùc.
™ Daïng thöù hai dat-file laø taäp tin ñöôïc ñònh daïng kieåu ASCII, taäp tin loaïi naøy
coù phaàn môû roäng *.mat. dat-file coù theå ñöôïc chia seõ vôùi caùc öùng duïng khaùc, tuy
nhieân noù chæ coù theå löu ñöôïc moät bieán duy nhaát.
Ñeå löu vaø taûi taäp tin ta söû duïng haøm save vaø load
Ví duï löu taäp tin döõ lieäu mat-file trong thö muïc hieän haønh vaø laáy döõ lieäu trôû laïi
töø mat-file

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 5

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û

5. Nhaäp vaø xuaát döõ lieäu baèng baøn phím


Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 6

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û

6.2.Taûi taäp tin *.txt


Chöông trình Keát quaû

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 7

II. CAÙC HAØM TOAÙN HOÏC


Coù raát nhieàu haøm chuaån ñöôïc xaây döïng trong Matlab ñeå hoå trôï vieäc tính toaùn cho ngöôøi
söû duïng.
Nhöõng haøm toaùn hoïc cô baûn trong Matlab
Haøm Moâ taû Ví duï
cos(x) Tính cos cuûa x cos(2)
sin(x) Tính sin cuûa x cos(10)
tan(x) Tính tang cuûa x sin(7)
acos(x) Tính acos cuûa x tan(2)
asin(x) Tính asin cuûa x acos(5)
atan(x) Tính atan cuûa x asin(4)
exp(x) e x
atan(6)
sqrt(x) x exp(5)
log(x) Laáy logarit cô soá e sqrt(8)
log10(x) Laáy logarit cô soá 10 log(4)
abs(x) Trò tuyeät ñoái cuûa x log10(10)
sign(x) Laáy daáu cuûa x sign([1 -1 5]) = [1 -1 1]
max(x) Laáy giaù trò lôùn nhaát max([1 -1 5]) = 5
min(x) Laáy giaù trò nhoû nhaát min([1 -1 5]) = -1
ceil(x) Laøm troøn veà döông voâ cuøng ceil([1.25, -4.54, 6.5, -7.1 ])
= [1, -4, 7, -7]
floor(x) Laøm troøn veà aâm voâ cuøng floor([1.25, -4.54, 6.5, -7.1 ])
= [1, -5, 6, -8]
round(x) Laøm troøn round([1.25, -4.54, 6.5, -7.1 ])
= [1, -5, 7, -7]
fix(x) Laøm troøn veà khoâng fix([1.25, -4.54, 6.5, -7.1 ])
= [1, -4, 6, -7]
sort (x) Saép xeáp töø nhoû ñeán lôùn sort ([1.25, -4.54, 6.5, -7.1 ])
= [-7.1, -4.54, 1.25, 6.5]
III. MA TRAÄN
Trong Matlab ma traän laø moät maûng chöõ nhaät caùc phaàn töû. Neáu ma traän coù
duy nhaát moät phaàn töû ta coù ma traän voâ höôùng, ma traän coù moät haøng hoaëc moät coät
ta coù veùc tô. Caùc pheùp toaùn treân ma traän ñöôïc thieát keá moät caùch töï nhieân vaø tieän
lôïi cho ngöôøi söû duïng.
1. Taïo ma traän
™ Baïn coù theå taïo ma traän theo nhieàu caùch khaùc nhau:
• Xaây döïng ma traän baèng vieäc nhaäp töøng phaàn töû moät
• Taûi moät file döõ lieäu töø beân ngoaøi
• Xaây döïng caùc ma traän nhôø caùc haøm build-in
• Taïo moät ma traän baèng haøm do ta taïo ra.
™ Moät vaøi nguyeân taéc cô baûn ñeå xaây döïng ma traän laø:
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 8

• 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

Ma traän soá phöùc

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 9

2. Chæ soá ma traän


Phaàn töû ôû doøng i coät j cuûa ma traän A ñöôïc kí hieäu A(i,j). Ví duï A(4,2) laø phaàn
töû ôû doøng boán, coät hai cuûa ma traän A.
Ma traän Gaùn Laáy giaù trò

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)

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 10

Phaàn töû haøng cuûa ma Phaàn töû coät cuûa ma


Ma traän
traän traän

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:

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 11

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.

clear all; clc


A1=[1 2;5 6], A2=[3 4;7 8], A3=[9 10 11 12;13 14 15 16],
A=[A1 A2;A3]

3. Caùc haøm lieân quan ñeán xöû lyù ma traän


Teân haøm Moâ taû

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 12

size Cho bieát kích thöôùt cuûa ma traän


median: Tính giaù trò trung bình cuûa ma traän
max Tìm phaàn töû lôùn nhaát trong ma traän
min Tìm phaàn töû nhoû nhaát trong ma traän
mean Tính giaù trò trung bình cuûa daõy
sum Tính toång cuûa moät ma traän
length Haøm traû veà chieàu daøi cuûa moät maûng
4. Moät soá haøm taïo nhanh ma traän
Teân haøm Moâ taû
eye(m,n) Taïo ma traän ñoàng nhaát coù kích thöôùc mxn
eye(n) Taïo ma traän vuoâng ñoàng nhaát coù kích
thöôùc nxn
zeros(m,n) Taïo ma traän coù kích thöôùc mxn vôùi taát caû
caùc phaàn töû baèng khoâng
ones(m,n) Taïo ma traän coù kích thöôùc mxn vôùi taát caû
caùc phaàn töû baèng moät
diag(A) Cheùo hoùa ma traän A
rand(m,n) Taïo ma traän ngaãu nhieân coù kích thöôùc
mxn
5. Caùc pheùp tính treân ma traän
Pheùp tính Chuù thích
+, - Coäng hoaëc tröø hai ma traän cuøng kích thöôùt
A*B Nhaân hai ma traän A vaø B
A/B Chia hai ma traän (chia phaûi) A vaø B
A\B Chia traùi hai ma traän B vaø A
A.*B Nhaân töøng phaàn töû cuûa hai ma traän A vaø B
A./B Chia töøng phaàn töû cuûa hai ma traän A vaø B
A.\B Chia töøng phaàn töû cuûa hai ma traän B vaø A
.^ Muõ cho töøng phaàn töû cuûa maûng

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û

MATLAB code Ñoà thò


X=0:0.01:2*pi;
Y1=sin(X);
Y2=cos(X);
figure('Name','Hinh Sine');
Subplot(2,1,1);
h=plot(X,Y1);
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 14

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ï:

%%% M-file: ex_3_1.m Thöïc hieän ôû doøng command line


theta=-pi:0.01:pi;
rho(1,:)=2*sin(5*theta).^2;
rho(2,:)=cos(10*theta).^3;
rho(3,:)=sin(theta).^2;
rho(4,:)=5*cos(3.5*theta).^3;

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:

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 15

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 16

Doøng H1
Caùc doøng trôï giuùp

Noäi dung cuûa haøm

Chuù thích trong MATLAB :


Nhö ñaõ ñeà caäp ôû treân, Doøng chuù thích laø doøng baét ñaàu vôùi daáu % . Doøng chuù
thích coù theå xuaát hieän baát cöù ñaâu trong *.m ( taäp tin cuûa MATLAB) vaø ta coù theå
ñaët ôû cuoái doøng leänh.
Ví duï:
%% Tinh tong cac phan tu
y=sum(x) % su dung ham sum
Haøm hoaït ñoäng nhö theá naøo:
Ngöôøi duøng coù theå goïi haøm ôû doøng nhaéc Matlab hay baát cöù nôi naøo trong
*.m ( taäp tin cuûa MATLAB) chaéc raèng caùc thoâng soá caàn thieát cho haøm ñuû laø ñöôïc
Khi gaëp moät teân môùi MATLAB :
1. Kieåm tra xem coù phaûi laø teân bieán hay khoâng.
2. Kieåm tra xem coù phaûi laø haøm con (subfunction) vaø haøm
rieâng ( private function( Haøm naèm trong thö muïc con cuûa thö
muïc hieän haønh goïi laø haøm rieâng)) hay khoâng.
3. Kieåm tra xem haøm naøy coù trong ñöôøng daån hieän haønh hay
khoâng.

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 17

Kieåm tra bieán vaøo vaø ra cuûa moät haøm:


Ta söû duïng hai haøm sau: nargin vaø nargout ñeå kieåm tra thoâng soá vaøo vaø ra
cuûa moät haøm.
Ví duï:
function c = testarg1(a,b)
if (nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = a + b;
end

Caùc pheùp toaùn logic:


Pheùp toaùn YÙ nghóa
& Vaø
| Hoaëc
~ Phuû ñònh
Baûng toaùn logic

Caùc haøm logic ( Logical function :


1. C = xor(A,B)
YÙ nghóa:

Toaùn töû quan heä:


Toaùn töû YÙ nghóa
< Nhoû hôn
<= Nhoû hôn hoaëc baèng
> Lôùn hôn
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 18

>= Lôùn hôn hoaëc baèng


== Baèng nhau
~= Khoâng baèng
Caùc caâu leänh ñieàu kieän:
• Daïng 1:
if (bieåu thöùc logic)
leänh
end
Leänh chæ thöïc hieän khi bieåu thöùc logic nhaän giaù trò ñuùng. Neáu bieåu thöùc logic
naøy khoâng thoaû maõn thì leänh khoâng ñöôïc thöïc hieän.
Löu ñoà:

Ñ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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 20

Voøng laëp for:


for index = start:increment:end
statements
end
start vaø end laàn löôït laø giaù trò baét ñaàu vaø keát thuùc cuûa index, increment laø
böôùc nhaûy, neáu khoâng caøi ñaët böôùc nhaûy thì MATLAB maëc ñònh increment =1,
moãi laàn laëp seõ keát thuùc khi gaëp töø khoùa end . Vieäc ñaàu tieân khi thöïc hieän voøng
laëp for laø MATLAB kieåm tra xem seõ laëp bao nhieâu laàn, sau ñoù môùi baét ñaàu thöïc
thi voøng laëp.
Löu ñoà:

Ví duï1:

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 21

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 22

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 öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 23

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 25

Chöông II

HEÄ PHÖÔNG TRÌNH TUYEÁN TÍNH

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

2. Phöông phaùp taùch LU

3. Söû duïng haøm solve

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 27

Ñ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 ⎥⎦

2. Phöông phaùp khöû Gauss coù tìm truï lôùn nhaát


Phöông phaùp khöû Gauss ôû treân seõ khoâng thöïc hieän ñöôïc neáu moät trong caùc truï
'
a11 , a22 ''
, a33 baèng khoâng, duø heä coù nghieäm duy nhaát. Ngoaøi ra neáu ñònh thöùc cuûa ma
traän heä soá khaùc khoâng, nhöng neáu moät vaøi phaàn töû truï veà trò tuyeät ñoái raát nhoû so vôùi
nhöõng phaàn töû coøn laïi trong cuøng haøng thì khi chia caùc phaàn töû aáy cho phaàn töû truï sai soá
laøm troøn seõ lôùn, do ñoù coù theå laøm giaûm nhieàu ñoä chính xaùc cuûa nghieäm tìm ñöôïc.
Ñeå khaéc phuïc nhöõng haïn cheá vöøa neâu, ngöôøi ta thöôøng duøng phöông phaùp Gauss coù tìm
truï lôùn nhaát ñeå tìm nghieäm. Noäi dung cuûa phöông phaùp nhö sau:
Khi khöû x1 trong sô ñoà Gauss, ngöôøi ta choïn soá lôùn nhaát veà trò tuyeät ñoái trong caùc soá
a11 , a21 , a31 laøm truï lôùn nhaát vaø goïi laø truï lôùn nhaát thöù nhaát. Sau ñoù ta hoaùn vò haøng
chöùa truï lôùn nhaát thöù nhaát vôùi haøng thöù nhaát ñeå truï lôùn nhaát naèm ñuùng ôû haøng moät, coät
moät cuûa sô ñoà Gauss vaø quaù trình khöû x1 ñöôïc tieán haønh nhö muïc treân.
Khi khöû x2 trong sô ñoà Gauss, ngöôøi ta choïn soá lôùn nhaát veà trò tuyeät ñoái trong caùc soá
'
a22 '
, a32 laøm truï lôùn nhaát vaø goïi laø truï lôùn nhaát thöù hai. Sau ñoù ta hoaùn vò haøng chöùa truï

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 29

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 ⎥⎦

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 30

3. Phöông phaùp taùch LU


Taùch LU cuûa moät ma traän khoâng suy bieán A nghóa laø bieåu dieãn ma traän A laø tích cuûa
ma traän tam giaùc döôùi vaø ma traän tam giaùc treân PA = LU
Thöïc hieän pheùp bieán ñoåi, ta xeùt ma traän khoâng suy bieán coù kích thöôùc 3x3
⎡ a11 a12 a13 ⎤ ⎡ 1 0 0 ⎤ ⎡u11 u12 u13 ⎤
⎢a ⎥ ⎢ ⎥⎢ ⎥
⎢ 21 a22 a23 ⎥ = ⎢l21 1 0 ⎥ ⎢ 0 u22 u23 ⎥
⎢⎣ a31 a32 a33 ⎥⎦ ⎢⎣l31 l32 1 ⎥⎦ ⎢⎣ 0 0 u33 ⎥⎦
⎡ a11 a12 a13 ⎤ ⎡ u11 u12 u13 ⎤
⎢a ⎥ ⎢ ⎥
⎢ 21 a22 a23 ⎥ = ⎢l21u11 l21u12 + u22 l21u13 + u23 ⎥
⎢⎣ a31 a32 a33 ⎥⎦ ⎢⎣l31u11 l31u12 + l32u22 l31u13 + l32u23 + u33 ⎥⎦
Ñoàng nhaát caùc phaàn töû doøng thöù nhaát cuûa hai veá ta coù
u1n = a1n , n = 1, 2,3
Ñoàng nhaát caùc phaàn töû doøng thöù hai cuûa hai veá ta coù
a21 = l21u11 , a22 = l21u12 + u22 , a23 = l21u13 + u23
Bieán ñoåi ta coù
l21 = a21 / u11 , u22 = a22 − l21u12 , u23 = a23 − l21u13
Ñoàng nhaát caùc phaàn töû doøng thöù ba cuûa hai veá ta coù
a31 = l31u11 , a32 = l31u12 + l32u22 , a33 = l31u13 + l32u23 + u33
Bieán ñoåi ta coù
l31 = a31 / u11 , l32 = ( a32 − l31u12 ) / u22 , u33 = ( a33 − l31u13 ) − l32u23
Quaù trình taùch LU coù theå ñöôïc toùm taéc nhö baûn sau

Böôùc Thöïc hieän


0 Khôûi taïo A( ) = A, or amn
( 0)
= amn for m, n = 1: N
0

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 31

suy bieán döøng laïi.


(k )
3 = akn( ) = ukn for n = k : N
k −1
akn
( ) ( )
/ akk(
k −1 k −1)
= amk = lmk for m = k + 1: N
k
amk
4 ( ) ( )
k −1 ( ) ( )
= amn − amk for m, n = k + 1: N
k k k
amn akn
5 Taêng k leân moät ñôn vò, neáu k < N-1 trôû laïi böôùc
1 ngöôïc laïi ñeán böôùc 6
6 Laáy phaàn döôùc cuûa ma traän A(N-1) laøm ma traän
L, phaàn treân laøm ma traän U
Sau khi taùch ñöôïc hai ma traän L,U ta tieán haønh böôùc theá tieán vaø luoài ñeå tìm nghieäm
⎧ Ly = b
Ax = b ⇔ LUx = b ⇔ ⎨
⎩Ux = y
Cho U,b Cho L,b
xn = bn / U nn x1 = b1 / L11
for i = n-1 : 1 for i = 2 : n
s = bi s = bi
for j = i+1 : n for j = 1 : i-1
s = s − U ij x j s = s − Lij x j
end end
xi = s / U ii xi = s / Lii
end 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 taùch LU
⎡ −2 1 2 ⎤ ⎡ x1 ⎤ ⎡ 9 ⎤
⎢ 0 3 −2 ⎥ ⎢ x ⎥ = ⎢ −1⎥
⎢ ⎥⎢ 2⎥ ⎢ ⎥
⎢⎣ 0 0 4 ⎥⎦ ⎢⎣ x3 ⎥⎦ ⎢⎣ 8 ⎥⎦

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 32

4. Phöông phaùp laëp Jacobi


 + b
Töø heä phöông trình Ax = b ta luoân bieán ñoåi ñöôïc xk +1 = Axk

⎡ 0 −a12 / a11 ... −a1N / a11 ⎤


⎢ −a / a ⎡ b1 / a11 ⎤
... − a2 N / a11 ⎥⎥  ⎢
, b = ⎢ b2 / a22 ⎥⎥
0
Vôùi: A N × N = ⎢ 21 22
⎢ ... ... ... ... ⎥
⎢ ⎥ ⎢⎣bN / aNN ⎥⎦
⎣⎢ − aN 1 / aNN −aN 2 / aNN 0 ⎦⎥
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 laëp
Jacobi
⎡3 2 ⎤ ⎡ x1 ⎤ ⎡ 1 ⎤
⎢1 2 ⎥ ⎢ x ⎥ = ⎢ −1⎥
⎣ ⎦⎣ 2⎦ ⎣ ⎦

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 33

5. Phöông phaùp laëp Gauss-Seidel


ÔÛ phöông phaùp laëp Gauss taïi moãi böôùc laëp caùc bieán ñöôïc caäp nhaät ôû cuøng thôøi ñieåm.
Trong phöông phaùp Gauss-Seidel söû duïng phöông phaùp söû lyù song song, taïi moãi böôùc
laëp giaù trò cuûa cuûa bieán ñöôïc caäp nhaät theo theo trình töï. Vì vaäy trong cuøng moät böôùc
laëp giaù trò cuûa moãi bieán ñöôïc tính ôû moãi thôøi ñieåm khaùc nhau.
x1,k +1 = − ( a12 / a11 ) x2,k + b1 / a11
x2,k +1 = − ( a21 / a22 ) x1,k +1 + b2 / a22
Ta coù coâng thöùc toång quaùt ñeå tính giaù trò caùc bieán
m −1 N
bm − ∑ amn xn( ∑
k +1)
amn xn(
k)

xm(
k +1)
= n =1 n = m +1
Vôùi m = 1 ÷ N
amm
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 laëp
Gauss-Seidel
⎡3 2 ⎤ ⎡ x1 ⎤ ⎡ 1 ⎤
⎢1 2 ⎥ ⎢ x ⎥ = ⎢ −1⎥
⎣ ⎦⎣ 2⎦ ⎣ ⎦

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 34

III. BAØI TAÄP AÙP DUÏNG


Baøi 1: Giaûi baøi toaùn chuyeån ñoäng cuûa Robot: cho Robot hai baäc töï do R_R. Taïi moãi
khôùp ñaët moät motor. Goïi θ1 vaø θ 2 laø goùc quay cuûa caùc khôùp töông öùng.

Toaïi ñoä cuoái cuûa caùnh tay Robot ñöôïc tính


x2 = L1 cos θ1 + L2 cos θ 2
Vôùi L1 , L2 laàn löôït laø chieàu daøi caùc khaâu.
y2 = L1 sin θ1 + L2 sin θ 2
Baøi toaùn ñaëc ra laø xaùc ñònh quy luaät ñieàu khieån motor ñeå caùnh tay Robot coù theå di
chuyeån töø vò trí naøy ñeán vò trí khaùc vôùi ñieàu kieän vaän toác vaø gia toác taïi ñieåm ñaàu vaø
ñieåm cuoái baèng khoâng.
Ña thöùc ñöôïc choïn ñeå ñieàu khieån motor
θ1 ( t ) = θ1 ( 0 ) + a1t 5 + a2t 4 + a3t 3 + a4t 2 + a5t
θ 2 ( t ) = θ 2 ( 0 ) + b1t 5 + b2t 4 + b3t 3 + b4t 2 + b5t
Vôùi θ1 ( 0 ) , θ 2 ( 0 ) laø goùc ban ñaàu taïi taïi t = 0 . Vector heä soá a = [ a1 a2 a3 a4 a5 ]
vaø b = [b1 b2 b3 b4 b5 ] ñöôïc xaùc ñònh töø ñieàu kieän chuyeån ñoäng.
Khi t = 0 , θ1 ( 0 ) vaø θ 2 ( 0 ) ñaõ bieát vaø t = t f , θ1 ( t f ) vaø θ ( t ) ñaõ bieát.
2 f

Theo ñieàu kieän chuyeån ñoäng ta coù


θ1 ( t = 0 ) = 5a1t 4 + 4a2t 3 + 3a3t 2 + 2a4t + a5 t =0
=0 ⇒ a5 = 0
θ1 ( t = 0 ) = 20a1t 3 + 12a2t 2 + 6a3t + 2a4 t =0 = 0 ⇒ a4 = 0
⎡ t 5f t 3f ⎤ ⎡ a1 ⎤ ⎡θ1 ( f ) − θ1 ( 0 ) ⎤
t 4f
⎢ ⎥ ⎢ ⎥
Cuoái cuøng ta coù heä ⎢ 5t 4f 4t 3f 3t 2f ⎥ ⎢⎢ a2 ⎥⎥ = ⎢ 0 ⎥
⎢ 20t 3f ⎥
12t f 6t f ⎦ ⎢⎣ a3 ⎥⎦ ⎣
2
⎢ 0 ⎥⎦

⎡ t 5f t 4f t 3f ⎤ ⎡ b1 ⎤ ⎡θ 2 ( f ) − θ 2 ( 0 ) ⎤
⎢ ⎥ ⎢ ⎥
Töông töï cho θ 2 ( t ) ⎢ 5t 4f 4t 3f 3t 2f ⎥ ⎢⎢b2 ⎥⎥ = ⎢ 0 ⎥
⎢ 20t 3f 12t 2f 6t f ⎥ ⎢⎣b3 ⎥⎦ ⎢ 0 ⎥⎦
⎣ ⎦ ⎣
Giaûi hai heä naøy ta tìm ñöôïc heä soá a = [ a1 a2 a3 a4 a5 ] vaø b = [b1 b2 b3 b4 b5 ]
Chöông trình Matlab

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 35

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 36

Chöông II

NOÄI SUY - NGOAÏI SUY

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

Cuù phaùp Giaûi thích leänh


Traû veà vector giaù trò yi töông öùng vôùi vector coù giaù

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

Chöông trình so saùnh caùc phöông


phaùp noäi suy moät chieàu
clear all;clc
x = 0:10;
y = sin(x);
x1 = 0:.25:10;
y1 = interp1(x,y,x1);
y2 = interp1(x,y,x1,'nearest');
y3 = interp1(x,y,x1,'spline');
y4 = interp1(x,y,x1,'pchip');

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 37

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');

2. Noäi suy moät chieàu ña thöùc baäc ba: spline


yi = spline ( X , Y , xi ) Traû veà vector giaù trò yi töông öùng vôùi vector coù giaù trò xi döïa vaøo
pheùp noäi suy ña thöùc baäc ba 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.

3. Noäi suy ña thöùc theo haøm: polyfit


p = polyfit ( x, y, n ) tìm heä soá cuûa ña thöùc baäc n thoûa caùc ñieåm döõ lieäu cho tröôùc. Keát
quaû p laø ma traän heä soá cuûa ña thöùc coù daïng p ( x ) = p1 x n + p2 x n −1 + ... + pn x + pn +1

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 38

4. Noäi suy hai chieàu: interp2


Laø phöông phaùp noäi suy giöõa caùc ñieåm döõ lieäu ñaõ coù, ñi tìm giaù trò cuûa haøm hai chieàu
f(x,y) döïa treân nhöõng ñieåm döõ lieäu ñöôïc cung caáp.

Cuù phaùp Giaûi thích leänh


Traû veà vector giaù trò zi töông öùng vôùi caëp vector
zi = int erp 2 ( X , Y , Z , xi , yi ) coù giaù trò ( xi , yi ) döïa vaøo pheùp noäi suy cuûa taäp döõ
lieäu X, Y, Z.
Noäi suy döõ lieäu hai chieàu theo nhöõng phöông phaùp
khaùc nhau:
zi = int erp 2 ( X , Y , Z , xi , yi , method ) • 'nearest' :
• 'linear' : noäi suy tuyeán tính (maëc ñònh)
• 'spline': noäi suy ñöôøng cong baäc ba
• 'cubic' : noäi ñöôøng cong Hermit

Chöông trình noäi suy hai chieàu

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 39

II. DUØNG PHÖÔNG PHAÙP SOÁ ÑEÅ NOÄI SUY ÑA THÖÙC


1. Phöông phaùp noäi suy Lagrange
Cho N+1 ñieåm döõ lieäu {( x0 , y0 ) , ( x1 , y1 ) ,..., ( xN , y N )} . Ta caàn tìm heä soá cuûa moät ña thöùc
baäc N ñi qua taát caû caùc ñieåm döõ lieäu naøy.
pN ( x ) = a0 + a1 x + a2 x 2 + ... + aN x N
Heä soá cuûa ña thöùc naøy coù theå tìm ñöôïc baèng caùch giaûi heä phöông trình ñaïi soá tuyeán tính
sau
a0 + a1 x0 + a2 x02 + ... + aN x0N = y0
a0 + a1 x1 + a2 x12 + ... + aN x1N = y1
...........................
a0 + a1 xN + a2 xN2 + ... + aN xNN = y N
Nhöng khi soá ñieåm döõ lieäu taêng leân laøm cho soá aån soá chöa bieát cuõng taêng leân. Luùc naøy
vieäc giaûi heä phöông trình treân laø khoù khaên. Ñoù laø lyù do taïi sao phaûi ñi tìm moät phöông
phaùp môùi ñeå tìm caùc heä soá {a 0 , a1 ,..., aN } . Moät trong nhöõng phöông phaùp hieäu quaû laø söû
duïng ña thöùc Lagrange.

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

Chöông trình noäi suy ña thöùc Lagrange

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 40

2. Noäi suy ña thöùc Newton


Ña thöùc Lagrange thöch söï hieäu quaû trong vieäc noäi giöuõa caùc ñieåm döõ lieäu. Tuy nhieân
neáu nhö soá ñieåm döõ lieäu thay ñoåi, ta phaûi baét ñaàu laïi taát caû vieäc tính toaùn. Ñeå khaéc
phuïc ñieàu naøy, ta söû duïng ña thöùc Newton. Ña thöùc Newton ñi qua N+1 ñieåm döõ lieäu
{( x0 , y0 ) , ( x1 , y1 ) ,..., ( xN , yN )} seõ coù daïng laø toång cuûa cuûa ña thöùc Newton baäc N-1 ñi
qua N ñieåm döõ lieäu {( x , y ) , ( x , y ) ,..., ( x
0 0 1 1 N −1 , y N −1 )}
nN ( x ) = a0 + a1 ( x − x0 ) + a2 ( x − x0 )( x − x1 ) + ...
= nN −1 ( x ) + aN ( x − x0 )( x − x1 ) ... ( x − xN −1 )
Ta ñi xaùc ñònh caùc heä soá {a 0 , a1 ,..., aN } nhö sau
Ñeå xaùc ñònh a0 vaø a1 ta xeùt ña thöùc: n1 ( x ) = n0 ( x ) + a1 ( x − x0 ) ña thöùc naøy ñi qua caùc
ñieåm döõ lieäu {( x , y ) , ( x , y )} neân ta coù heä
0 0 1 1

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 41

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

Chöông trình noäi suy ña thöùc Newton

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 42

3. Noäi suy Hermite


Trong moät soá tröôøng hôïp, ta caàn tìm ña thöùc khoâng nhöõng ñi qua caùc ñieåm döõ lieäu ñaõ
cho maø coøn coøn coù ñaïo haøm taïi caùc ñieåm döõ lieäu ñoù. Ña thöùc coù tính chaát nhö vaäy goïi
laø ña thöùc noäi suy Hermite hoaëc laø ña thöùc maät tieáp.
Ñeå ñôn giaûn ta xeùt ña thöùc baäc ba
h ( x ) = H 0 + H1 x + H 2 x 2 + H 3 x 3
Ña thöùc naøy ñi qua ñieåm döõ lieäu {( x , y ) , ( x , y )} vaø coù ñaïo haøm baäc nhaát xaùc ñònh taïi
0 0 1 1

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 43

4. Noäi suy hai chieàu


Tìm giaù trò cuûa haøm naèm trong mieàn giôùi haïn bôûi caùc ñieåm ( xm −1 , yn −1 ) , ( xm , yn )

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 44

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 45

III. XÖÛ LYÙ SOÁ LIEÄU THÖÏC NGHIEÄM


1. Luaät tuyeán tính
Cho caùc caëp döõ lieäu: (x i , y i ), i = 1,2,...., m tìm caùc heä soá α , β sao cho: f ( x ) = αx + β
Tìm thaëng dö ri = y i − f ( xi ) = y i − (αxi + β )
Cöïc tieåu hoùa thaëng dö theo tieâu chuaån bình phöông toái thieåu min ∑ ri 2
m
ρ = ∑ ri2 = ∑ [yi − (αxi + β )]2 , chính laø khoaûng caùch töø ñieåm döõ lieäu ñeán höôùng noäi suy.
i =1
m
Tìm α , β ñeå ρ = ∑ ri2 = ∑ [yi − (αxi + β )] ñaït cöïc tieåu.
2

i =1

Ñieàu naøy töông ñöông vôùi:

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 46

∂ρ
=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

Giaûi (*) ta tìm ñöôïc α , β :

α = (S x S y − mS xy )
1
d
β = (S x S xy − S xx S y )
1
d
d = S x2 − mS xx

2. Luaät ña thöùc baäc cao:


f ( x) = a 0 + a1 x + ..... + a n x n
• Thaëng dö : ri = yi − f ( xi ), i = 1,2,..., m
• Tìm a 0 , a1 ,....., a n ñeå ρ = ∑ ri2 ñaït cöïc tieåu. Ñieàu naøy töông ñöông vôùi :
∂ρ
= 0, n = 0,1,...., N
∂an

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 47

3. Luaät phi tuyeán


y = c1e c2 x → ln y = αx + β
y = c1 x c2 → ln y = α ln x + β
y = c1 xe c2 x → ln( y / x ) = αx + β
Ta thöïc hieän caùc bieán ñoåi ñeå ñöa luaät phi tuyeán veà luaät tuyeán tính
ƒ y = c1e c 2 x → ln y = ln c1 + c2 x
Ñaët v = ln y, b = ln c1 , a = c2 ⇒ v = ax + b
ƒ y = c1 x c2 → ln y = ln c1 + c 2 ln x
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 48

Ñ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

4. Luaät toå hôïp caùc haøm: f ( x ) = c1 f1 ( x ) + c 2 f 2 ( x ) + .... + c n f n ( x )


n
Hay f ( x) = ∑ ci f i ( x)
i =1

ÔÛ ñ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

Khai trieån coù daïng ma traän : ρ = r 2 , r = y − Ac


2

Chaúng haïn vôùi 3 haøm cô sôû: y = f ( x) = c1 f 1 ( x) + c 2 f 2 ( x) + c3 f 3 ( x)


vôùi m ñieåm döõ lieäu:

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 49

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 50

Chöông III

PHÖÔNG TRÌNH PHI TUYEÁN

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

Cuù phaùp Moâ taû


g = solve(eq) Giaûi phöông trình eq = 0 vôùi bieán maëc ñònh
ñöôïc tìm thaáy trong haøm findsym
g = solve(eq,var) Giaûi phöông trình eq = 0 vôùi bieán ñöôïc nhaäp
vaøo
Giaûi phöông trình eq = 10 x 2 + e x − 10

2. Söû duïng haøm roots: tìm nghieäm ña thöùc


Cuù phaùp Moâ taû
r = roots(c) Traû veà vector coät coù caùc phaàn töû laø nghieäm
cuûa ña thöùc c.
Vector haøng c chöùa heä soá cuûa moät ña thöùc.
Neáu c coù n+1 thaønh phaàn thì ña thöùc coù daïng
c1s n + c2 s n −1 + ... + cn s + cn +1
Giaûi phöông trình c = s 3 − 6 s 2 − 72 s − 27

3. Söû duïng haøm fzero

Cuù phaùp Moâ taû

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 51

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

Chöông trình Matlab giaûi phöông trình phi tuyeán f ( x ) = x − cos( x )

2. Phöông phaùp chia ñoâi


Phöông phaùp naøy ñöôïc söû duïng ñeå giaûi heä phöông trình phi tuyeán f ( x ) = 0 . Vieäc giaûi
chæ thöïc hieän ñöôïc khi ta bieát ñöôïc khoaûng [ a, b ] treân ñoù f ( x ) lieân tuïc vaø toàn taïi
nghieäm duy nhaát (ñieàu quan troïng ôû ñaây laø f ( a ) vaø f ( b ) ngöôïc daáu)
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 52

Trình töï thöïc hieän cuûa phöông phaùp


Cho tröôùc khoaûng chöùa nghieäm [ a, b ] , ñieàu kieän döøng tol
Böôùc 0: khôûi taïo böôùc laëp k = 0
a+b b−a
Böôùc 1: tính giaù trò trung bình xmid = , neáu f ( xmid ) = 0 or ≈ 0 döøng voøng
2 2
laëp.
Böôùc 2: neáu f ( a ) f ( xmid ) > 0 gaùn a = xmid ngöôïc laïi gaùn b = xmid trôû laïi böôùc 1
Chöông trình Matlab giaûi phöông trình phi tuyeán f ( x ) = x − cos( x ) trong khoaûng chöùa
nghieäm ñeà nghò [ −1, 2] vôùi sai soá cho pheùp tol = 10−4

3. Phöông phaùp ñieåm giaû (false position method)


Töông töï nhö phöông phaùp Bisection, phöông phaùp naøy cuõng yeâu caàu khoaûng chöùa
nghieäm [ a, b ] ban ñaàu. Tieán haønh xaáp xæ haøm f ( x ) treân [ a, b ] baèng ñöôøng thaúng noái
hai ñieåm {( a, f ( a ) ) , ( b, f ( b ) )} , nghieäm döï ñoaùn laø giao ñieåm cuûa ñöôøng thaúng naøy
vôùi truïc hoaønh
f (a) f (b ) af ( b ) − bf ( a )
x=a− (b − a ) = b − (b − a ) =
f ( a ) − f (b ) f (b ) − f ( a ) f ( a ) − f (b)
Chöông trình Matlab giaûi phöông trình phi tuyeán f ( x ) = x − cos( x ) trong khoaûng chöùa
nghieäm ñeà nghò [ −1, 2] vôùi sai soá cho pheùp tol = 10−4

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 53

4. Phöông phaùp Newton-Raphson (phöông phaùp tieáp tuyeán)


Cho haøm soá f ( x ) lieân tuïc vaø khaû vi
Khai trieån chuoãi Taylor haøm f(x) quanh ñieåm xk .

f ( xk + ∆x) = f ( xk ) + ∆x
df
+
(∆x ) d 2 f
2
+ ...
dx xk 2 dx 2 xk

thay ∆x = xk +1 − xk vaø neáu boû qua soá haïng baäc 2, ta coù:

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 54

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

5. Phöông phaùp daây cung


phöông phaùp naøy coù theå ñöôïc xem laø phöông phaùp chænh lyù cuûa phöông phaùp Newton.
Trong phöông phaùp daây cung ta ñi tính xaáp xæ ñaïo haøm baäc nhaát cuûa ña thöùc
f ( xk ) − f ( xk −1 )
f ' ( xk ) ≈
xk − xk −1
f (x ) ( xk − xk −1 )
Theá vaøo bieåu thöùc xk +1 = xk − ' k ta ñöôïc xk +1 = xk − f ( xk )
f ( xk ) f ( xk ) − f ( xk −1 )
Giaûi thuaät:
Nghieäm ñeà nghò ban ñaàu x0 , x1 vaø ñieàu kieän döøng tol = ...
for k = 1, 2,...

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 55

6. Phöông phaùp Newton giaûi heä phöông trình phi tuyeán


Heä phöông trình coù daïng: Ax = b , neáu A = A ( x ) hoaëc b = b ( x )
Giaû söû ta coù heä hai phöông trình:
f1 ( x1 , x2 ) = 0
f 2 ( x1 , x2 ) = 0
Khai trieån Taylor heä naøy ñeán ñaïo haøm baäc nhaát quanh ñieåm ( x1k , x2 k ) ta ñöôïc
∂f1 ∂f1
f1 ( x1 , x2 ) ≅ f1 ( x1k , x2 k ) + ( x1 − x1k ) + ( x2 − x2 k ) = 0
∂x1 ( x1k , x2 k )
∂x2 ( x1k , x2 k )

∂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 )

⎡ f1 ( x1 , x2 ) ⎤ ⎡ f1 ( x1k , x2 k ) ⎤ ⎡ ∂f1 / ∂x1 ∂f1 / ∂x2 ⎤ ⎡ x1 − x1k ⎤ ⎡ 0 ⎤


⎢ ⎥≅⎢ ⎥+⎢ ⎥ ⎢ x − x ⎥ = ⎢0⎥
⎣ f 2 ( x1 , x2 ) ⎦ ⎣ f 2 ( x1k , x2 k ) ⎦ ⎣ ∂f 2 / ∂x1 ∂f 2 / ∂x2 ⎦ ( x1k , x2 k ) ⎣ 2 2k ⎦ ⎣ ⎦
Tính giaù trò cuûa ( x1,k +1 , x2, k +1 ) taïi moãi böôùc laëp
−1
⎡ x1, k +1 ⎤ ⎡ x1k ⎤ ⎡ ∂f1 / ∂x1 ∂f1 / ∂x2 ⎤ ⎡ f1 ( x1k , x2 k ) ⎤
⎢x ⎥ = ⎢ ⎥−⎢ ⎥ ⎢ ⎥
⎣ 2,k +1 ⎦ ⎣ x2 k ⎦ ⎣∂f 2 / ∂x1 ∂f 2 / ∂x2 ⎦ ( x1k , x2 k ) ⎣ f 2 ( x1k , x2 k ) ⎦
xk +1 = xk − J k−1 f ( xk ) vôùi ma traän Jacobian J k ( m, n ) = [ ∂f m / ∂xn ] x
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 )

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 56

Tính giaù trò haøm f , neáu f ñuû beù thì döøng


Böôùc 2: taêng giaù trò k, trôû veà böôùc 1
Chöông trình Matlab giaûi heä phöông trình phi tuyeán
x12 + 4 x22 = 5
2 x12 − 2 x1 − 3 x2 = 2.5
Vôùi giaù trò nghieäm ñeà nghò ban ñaàu x0 = [0.8 0.2] vaø sai soá cho pheùp tol = 10−4
Heä phöông trình treân ñöôïc bieán ñoåi thaønh
f1 ( x1 , x2 ) = x12 + 4 x22 − 5
f 2 ( x1 , x2 ) = 2 x12 − 2 x1 − 3 x2 − 2.5

III. BAØI TAÄP ÖÙNG DUÏNG


Baøi 1: Moät rocket ñöôïc baén ñi töø ñoä cao y = 1.8 m maët ñaát vôùi vaän toác ban ñaàu v0 hôïp
vôùi phöông naèm ngang moät goùc θ 0 . Phöông trình quyõ ñaïo bay cuûa rocket ñöôïc tính theo
g
bieåu thöùc y = ( tan θ 0 ) x − 2 x 2 + 1.8
2v0 cos θ 0
2

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

Vôùi bieán caàn tìm θ 0 .


Chöông trình Matlab giaûi phöông trình phi tuyeán baèng phöông phaùp daây cung.

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 57

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.

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 58

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

Thoâng soá hình hoïc.


G G G G G G
AB = l1 , BC = l2 , CD = l3 , vaø toïa ñoä ñieåm D(xD,yD).
Thoâng soá ñoäng hoïc.
ϕ1 = ω1 .t , ω1 (t ) = const .
Baøi toaùn vò trí :
G G G G G
Chuoãi veùctô kheùp kín : l1 + l2 + l3 + yD + xD = 0 (1)
⎧l1.cϕ1 + l2 .cϕ2 + l3 .cϕ3 − xD = 0 ⎫
Chieáu (1) leân truïc x vaø y : ⎨ ⎬ (2)
⎩l1.sϕ1 + l2 .sϕ2 + l3 .sϕ3 − yD = 0 ⎭
Matlab öùng duïng trong kyõ thuaät
Khoa xaây döïng vaø cô hoïc öùng duïng trang 59

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 toaùn gia toác :


Ñaïo haøm (5) theo toïa ñoä suy roäng ϕ1 :
⎧⎪ L1 .cϕ1 + L2 .cϕ 2 .ω 22 (ϕ ) + L2 .sϕ 2 .ε 2 (ϕ ) + L3 .cϕ 3 .ω 32 (ϕ ) + L3 .sϕ 3 .ε 3 (ϕ ) = 0 ⎫⎪
⎨ ⎬ (7)
⎪⎩− L1 .sϕ1 − L2 .sϕ 2 .ω 22 (ϕ ) − L2 .cϕ 2 .ε 2 (ϕ ) − L3 .sϕ 3 .ω 32 (ϕ ) − L3 .cϕ 3 .ε 3 (ϕ ) = 0⎪⎭
dω 2 (ϕ ) dω 3 (ϕ )
Trong ñoù : ε 2 (ϕ ) = , ε 3 (ϕ ) =
dϕ 1 dϕ 1
Giaûi heä phöông trình (7) seõ nhaän ñöôïc ε 2 (ϕ ) vaø ε 3 (ϕ ) .
⎧⎪ε 2 = ε 2 (ϕ ).ω12 + ω 2 (ϕ ).ε 1

Gia toác cuûa khaâu 2 vaø 3 laø : ⎪⎩ε 3 = ε 3 (ϕ ).ω12 + ω 3 (ϕ ).ε 1

Chöông trình Matlab

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 60

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 61

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 ω

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 62

ω
Ta coù: y ( x) =
24 EI
(x 4
− 2 Lx3 + L3 x )

Vôùi : ω = 60.000 N / m , L = 6 m , E = 200 GPa ; I = 30.000 cm 4

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 :

Duøng phöông phaùp chia ñoâi.


Duøng phöông phaùp Newton.
Duøng phöông phaùp daây cung.
Baøi 5: Xaùc ñònh chieàu cao h cuûa khoái chaát loûng trong oáng hình truï coù theå tích V ñöôïc
xaùc ñònh nhö sau:

⎡ ⎛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

Duøng phöông phaùp chia ñoâi.


Duøng phöông phaùp Newton.
Duøng phöông phaùp daây cung.

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 63

Chöông IV

TÍCH PHAÂN SOÁ

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

∫ f ( x )dx ≅ ∑ ωk f ( xk ) vôùi a = x0 < x1 < ... < x N = b


a k =0

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

Cuù phaùp Chuù thích


Traû veà tích phaân baát ñònh cuûa S ñoái vôùi
R = int(S) bieán Symbolic ñöôïc ñònh nghóa bôûi haøm
findsym
Traû veà tích phaân baát ñònh cuûa S ñoái vôùi
R = int(S,v)
bieán Symbolic voâ höôùng v
Traû veà tích phaân xaùc ñònh cuûa S ñoái vôùi
bieán symbolic trong mieàn [ a b ] , ôû ñaây
R = int(S,a,b)
a,b coù theå laø bieán symbolic hoaëc ñaïi
löôïng voâ höôùng
Traû veà tích phaân xaùc ñònh cuûa S ñoái vôùi
R = int(S,v,a,b) bieán v trong mieàn [ a b ]
Ví duï Keát quaû traû veà
int(-2*x/(1+x^2)^2) 1/(1+x^2)

int(x/(1+z^2),z) atan(z)*x

int(x*log(1+x),0,1) 1/4

int(2*x, sin(t), 1) 1-sin(t)^2

int([exp(t),exp(alpha*t)]) [exp(t), 1/alpha*exp(alpha*t)]


1π π
Tính tích phaân ba lôùp I = ∫ ∫ ∫ 4 xze − x y − z2
2
dxdydz
0 0 0

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 64

2. Tính tích phaân soá vôùi luaät hình thang: trapz

Cuù phaùp Chuù thích


Tính xaáp xæ tích phaân cuûa haøm Y theo
luaät hình thang vôùi khoaûng chia laø ñôn vò.
Z = trapz(Y) Neáu Y laø vector trapz(Y) laø tích phaân cuûa
Y, neáu Y laø ma traän trapz(Y) laø vector
haøng vôùi tích phaân treân moãi coät.
Tính tích phaân cuûa Y ñoái vôùi X duøng tích
Z = trapz(X,Y)
phaân hình thang.
π
Ñeå tính tích phaân ∫ sin( x)dx
0

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)

3. Tính tích phaân soá vôùi luaät Simpson: quad, quad8

Cuù phaùp Chuù thích


Tính xaáp xæ tích phaân cuûa haøm f trong
q = quad(f,a,b) mieàn [ a b ] vôùi sai soá 10-6
Tính xaáp xæ tích phaân cuûa haøm f trong
q = quad(f,a,b,tol) mieàn [ a b ] vôùi sai soá nhaäp vaøo
π
Ñeå tính tích phaân ∫ sin( x)dx
0

f = 'sin(x)' f = 'sin(x)'
Tichphan = quad(f,0,pi) Tichphan = quad(f,0,pi,1e-4)

4. Tính tích phaân soá vôùi luaät Lobatto: quadl

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 65

Cuù phaùp Chuù thích


Tính xaáp xæ tích phaân cuûa haøm f trong
q = quadl(f,a,b) mieàn [ a b ] vôùi sai soá 10-6
Tính xaáp xæ tích phaân cuûa haøm f trong
q = quadl(f,a,b,tol) mieàn [ a b ] vôùi sai soá nhaäp vaøo
π
Ñeå tính tích phaân ∫ sin( x)dx
0

f = 'sin(x)' f = 'sin(x)'
Tichphan = quadl(f,0,pi) Tichphan = quadl(f,0,pi,1e-4)

5. Tính tích phaân boäi baèng phöông phaùp soá: dblquad

Cuù phaùp Chuù thích


Goïi haøm quad ñeå tính tích phaân boäi haøm
f ( x) trong mieàn
q = dblquad(fun,xmin,xmax,ymin,ymax)
xmin ≤ x ≤ xmax , ymin ≤ y ≤ ymax vôùi sai soá
-6
10
Tính xaáp xæ tích phaân cuûa haøm f vôùi sai soá
q = dblquad(fun,xmin,xmax,ymin,ymax,tol)
nhaäp vaøo
2π π
Ñeå tính tích phaân ∫π ∫ ( y sin( x) + x cos( y) ) dxdy
0

clear all; clc function main


f=inline('y*sin(x)+x*cos(y)'); clear all; clc
Q = dblquad(f, pi, 2*pi, 0, pi) Q = dblquad(@integrnd, pi, 2*pi, 0, pi)
% %%%%%%%%%%%%%%%%%%%
function z = integrnd(x, y)
z = y*sin(x)+x*cos(y);

II. DUØNG PHÖÔNG PHAÙP SOÁ ÑEÅ TÍNH TÍCH PHAÂN


1. Tích phaân hình thang

Ñ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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 66

{ 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

2. Tích phaân Simpson

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 67

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

3. Tích phaân Gauss


YÙ töôûng chính cuûa caùc coâng thöùc tích phaân soá laø ngöôøi ta thay theá haøm döôùi daáu tích
phaân baèng caùc haøm xaáp xæ noäi suy. Thaät vaäy, ôû ñaây Gauss bieåu dieãn tích phaân döôùi
1
daïng: I = ∫ f ( x) dx ≈ w1 f ( x1 ) + w2 f ( x 2 ) + " + wn f ( x n ) .
−1

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 68

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

Soá ñieåm Vò trí Troïng soá baäc


1 0 2.00000000000000 1

-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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 69

III. BAØI TAÄP ÖÙNG DUÏNG


Baøi 1: Tính troïng taâm cuûa mieàn giôùi haïn bôûi truïc x, truïc y vaø moät phaàn tö ellipse

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 70

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 71

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

Dieän tích ñaùy hoà A = π r 2 = π 122 = 144π


Vi phaân chieàu cao dz cuûa möïc nöôùc coù theå tích, troïng löôïng laø
dV = Adz = 144π dz; dF = δ dV = δ 144π dz
Coâng caàn thieát ñeå bôm löôïng nöôùc naøy leân ñoä cao z laø dW = z dF = 144δπ zdz

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 72

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 trình Matlab

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 73

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 74

Chöông V

PHÖÔNG TRÌNH VI PHAÂN THÖÔØNG

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û

dsolve('Dy = a*y') exp(a*t)*C1

dsolve('Df = f + sin(t)') -1/2*cos(t)-1/2*sin(t)+exp(t)*C1

dsolve('(Dy)^2 + y^2 = 1','s') -sin(-s+C1)

dsolve('Dy = a*y', 'y(0) = b') exp(a*t)*b

dsolve('D2y = -a^2*y',… cos(a*t)


'y(0) = 1', 'Dy(pi/a) = 0')

x = cos(t)*C1+sin(t)*C2
dsolve('Dx = y', 'Dy = -x')
y = -sin(t)*C1+cos(t)*C2

Ví duï

y + 81y = 16 cos ( 7t ) vôùi ñieàu


Giaûi phöông trình vi phaân thöôøng caáp hai 

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 75

kieän ñaàu y ( 0 ) = 0, y ' ( 0 ) = 0

Giaûi heä phöông trình vi phaân thöôøng

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

Cuù phaùp [T,Y] = solver(odefun,tspan,y0)


odefun laø haøm beân veá phaûi cuûa phöông trình y ' = f ( t , y )
Chuù thích tspan laø khoaûng laáy tích phaân [t0 tf] ñeå coù ñöôïc nghieäm taïi
nhöõng thôøi ñieåm xaùc ñònh. tspan = [t0,t1,...,tf].

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 76

y0 laø vector ñieàu kieän ñaàu.


Giaûi phöông trình vi phaân thöôøng y ' ( t ) + y ( t ) = 1 vôùi y ( 0 ) = 0

y ( t ) + By ( t ) + Ω 2 y ( t ) = A0 sin (ωt )


Giaûi phöông trình vi phaân thöôøng caáp hai 
Ñaët z = x ñöa phöông trình vi phaân caáp hai thaønh heä hai phöông trình vi phaân

⎧ 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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 77

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

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 78

2. Phöông phaùp Heun: phöông phaùp hình thang


Töø phöông trình vi phaân caáp moät y ' ( t ) = f ( t , y ) tích phaân caû hai veá cuûa phöông trình
tk +1
tk +1
naøy ta ñöôïc y ( t ) t = y ( tk +1 ) − y ( tk ) = ∫ f ( t , y )dt
k
tk
tk +1

y ( tk +1 ) = y ( tk ) + ∫ f ( t , y )dt vôùi y ( t0 ) = y0
tk

Söû duïng tích phaân hình thang ta coù yk +1 = yk +


h
2
{ f ( tk , yk ) + f ( tk +1 , yk +1 )}
Laáy xaáp xæ yk +1 ≅ yk + hf ( tk , yk )
h
Cuoái cuøng ta ñöôïc yk +1 = yk +
2
{
f ( tk , yk ) + f ( tk +1 , yk + hf ( tk , yk ) ) }
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 Heun

3. Phöông phaùp Runge-Kutta


Maëc duø phöông phaùp Heun coù caûi tieáng hôn so vôùi phöông phaùp Euler, tuy nhieân vaãn
chöa ñuû chính xaùc ñeå giaûi caùc baøi toaùn trong thöïc teá kyõ thuaät. Phöông phaùp Range-

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 79

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

III. BAØI TAÄP AÙP DUÏNG


Baøi 1: Cho maïch ñieän RC nhö hình veõ. Ñieän trôû R = 10Ω , ñieän dung cuûa tuï ñieän
C = 0.2 F ñöôïc maét vôùi nguoàn coù suaát ñieän ñoäng . Xaùc ñònh quy luaät bieán ñoåi cuûa doøng
ñieän qua tuï theo thôøi gian vôùi ñieàu kieän ñaàu q ( 0 ) = q0 = {−1, − 0.75, − 0.5, 0.5, 0.75, 1}
trong khoaûng thôøi gian 0 ≤ t ≤ 15

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 80

Baøi 2: Moâ taû Gradient vaän toác vôùi phöông trình vi phaân y ( t ) = 1 − y ( t )

Matlab öùng duïng trong kyõ thuaät


Khoa xaây döïng vaø cô hoïc öùng duïng trang 81

Matlab öùng duïng trong kyõ thuaät

You might also like