Bài giảng Tin học ứng dụng - Học phần II - Matlab

MỤ C LỤ C

1. CHƯ Ơ NG I: MATLAB CĂ N BẢ N . . . 4

1.1. Matlab – ngôn ng ữ củ a t ính t oán kỹ thuậ t . . 4

1.2. Khả n ă ng và nhữ n g ứ ng dụ ng củ a Mat la b . . 4

1.3. Đ ặ c đ iể m củ a Mat lab . . . 6

1.4. Cài đ ặ t và khở i đ ộ ng Ma t la b 7.0. . . 7

1.5. Quả n lý không gia n l àm việ c c ủ a Mat lab. . 8

1.6. Ghi & phụ c hồ i dữ l iệ u. . . 11

1.7. Sử dụ ng He lp . . . . 12

1.8. History & Editing. . . 13

2. CHƯ Ơ NG II: TÍNH TOÁN TRONG MATLAB . . 15

2.1. Matlab - mộ t m á y t í nh c á nhân . . . 15

2.2. Biế n t r o n g Mat la b . . . 16

2.3. Các ki ể u dữ l iệ u - Đ ị nh dạ n g kế t quả . . 17

2.4. Các ki ể u dữ l iệ u số & số phứ c . . . 18

2.5. Các ký tự , Chuỗ i và Vă n b ả n. . . 19

2.6. Các hằ ng số dự n g s ẵ n. . . 20

2.7. Các hàm dự ng sẵ n . . . 20

2.8. Các phép toán quan h ệ . . . 23

2.9. Các phép toán logic. . . 24

2.10. Kế t hợ p nhiề u lệ nh t rên m ộ t dòng; Ẩ n kế t quả t ính. . . 26

3. CHƯ Ơ NG III: VECTƠ. . . 27

3.1. Gi ớ i t hiệ u . . . . 27

3.2. Véctơ hàng. . . . 28

3.3. Vectơ cộ t . . . . 29

3.4. Toán tử ha i chấ m ( : ) . . . 29

3.5. Làm việ c v ớ i vec tơ & ma trậ n (mả ng) . . 30

3.6. Xử lý dữ l iệ u vớ i cá c hàm dự ng sẵ n c h o v e ct ơ & ma trậ n. 32

4. CHƯ Ơ NG IV: MA TRẬ N Đ Ạ I SỐ & TUYẾ N TÍNH. . 34

4.1. Đ ị nh nghĩ a và khở i t ạ o ma t rậ n . . . 34

4.2. Mộ t s ố ma t rậ n đ ặ c biệ t . . . 34

4.3. Các phép toán v ớ i từ n g p h ầ n tử trong ma trậ n . . 35

4.4. Các phép toán v ớ i ma t rậ n . . . 35

4.5. Gi ả i phư ơ ng tr ình đ ạ i số . . . 35

4.6. Gi ả i hệ phư ơ ng tr ình đ ạ i số t uyế n t ính. . 35

4.7. Tìm nghiệ m củ a đ a thứ c . . . 35

4.8. Gi ả i phư ơ ng tr ình phi tuy ế n . . . 35

4.9. Gi ả i phư ơ ng tr ình vi phân . . . 35

4.10. Các l ệ nh hữ u íc h khác . . . 35

Bài giả ng Ti n Ứ ng dụ n g 2 – Matlab 7

- 3 -5. CHƯ Ơ NG V: SCRIPTS VÀ FUNCTIONS (M-FILES). . 37

5.1. Gi ớ i t hiệ u M-file . . . 37

5.2. Biên soạ n và thự c thi M-file . . . 37

5.3. Chú thích (comments). . . 38

5.4. Các hàm m-file (function m- files) . . . 39

5.5 . Câu l ệ nh rẽ nhánh (i f và switch) . . 41

5.6. Vòng l ặ p (f o r và while) . . . 42

5.7. Đ ọ c dữ l iệ u từ fi le và ghi ra file. . . 43

6. CHƯ Ơ NG VI: Đ Ồ THỊ DẠ NG Đ Ư Ờ NG . . 44

6.1. Biể u diễ n đ ư ờ n g quá t rình . . . 44

6.2. Lự a chọ n màu vẽ , nét vẽ . . . 46

6.3. Tạ o c ác c h ú t hích, c hú giả i t rên hình vẽ . . 48

6.4. Xóa đ ư ờ n g bi ể u đ ồ , lư u bi ể u đ ồ . . . 50

6.5. Đ ồ t hị Logar i t . . . 50

6.6. Dãy biể u đ ồ . . . . 52

7. CHƯ Ơ NG VII: Đ Ồ THỊ KHÔNG GIAN . . 55

7.1. Các dạ ng c ơ bả n . . . 55

7.2. Ch ỉ đ ị nh cá c vị t rí t r o n g kh ô n g g ian 2 chi ề u . . 58

7.3. Mặ t cắ t đ ị a hình . . . 58

7.4. Trư ờ ng v é ct ơ . . . . 59

8. PHẦ N BÀI TẬ P . . . . 61

Bài tậ p s ố 1: . . . . 61

Bài tậ p s ố 2 . . . . 62

Bài tậ p s ố 3 . . . . 62

Bài tậ p s ố 4: . . . . 63

LỜ I GIẢ I . . . . 63

Bài tậ p s ố 1: . . . . 63

Bài tậ p s ố 2: . . . . 64

Bài tậ p s ố 3: . . . . 64

Bài tậ p s ố 4: . . . . 64

9. TÀI LIỆ U THAM KHẢ O: . . . 66

pdf66 trang | Chuyên mục: MATLAB | Chia sẻ: dkS00TYs | Lượt xem: 2274 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Tin học ứng dụng - Học phần II - Matlab, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ửdụng lệnh
surf hoặc mesh:
figure; surf(x, y, z);
figure; mesh(x, y, z);
Sau đó hãy sửdụng công cụxoay hình bằng cách ấn nút Rotate 3D trên thanh
công cụ( ).
8 Hai lệnh trên có thểđược gộp lại thành một lệnh axis equa
9 Cách viết này có vẻkhác với câu lệnh thông thường, tuy nhiê
dưới dạng hàm. Chẳng hạn, hãy gõ thửlệnh zzz = plot(t,
clabel(contour(x,y,z)); ?
-3 -3 -3
-2.5 -2.5 -2.5
-2 -2 -2
-1.5 -1.5 -1.5
-1 -1 -1
-0.5 -0.5 -0.5
0 0 0 0
x (m)
y
(m
)
0 50 100 150 200
0
20
40
60
80
100
120
140
160
Hình 12:Đườngđồng mức biểu diễnđịa
hìnhđáy biển với mặt cắt theo Deanl tight
n theo MatLab, các lệnh vẽđều có thểviết
z). Mặt khác, có gì khác nếu ta gõ lệnh
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 58 -
7.2. Chỉ định các vị trí trong không gia
Khi thể hiện dữ liệu không gian bằng mảng m
chỉ ra những vị trí thỏa mãn một điều kiện nào
chúng bằng những điểm riêng.
Chẳng hạn, hãy chỉra các vịtrí có z < -3
trong ví dụtrên. Có hai bước nhưsau:
 Tìm các chỉsố(i,j) trong ma trận có giá
trịthỏa mãn z(i,j) < -3
 Chấm các điểm xác định bởi x(i,j), y(i,j)
lên mảng màu
ind = find(z < -3);
hold on;
plot(x(ind), y(ind), ... 'k.');
7.3. Mặt cắt địa hình
Trong nhiều trường hợp cần biểu diễn một mặ
Và tổng quát hơn, có thểlà phân bốđộsâu nư
biếnđặc trưng nào dọc theo một tuyến xácđịnh
Số liệu của mặt cắt được lấy từ 1 cột (hoặc 
Chẳng hạn, mặt cắt có x = 100 m (tương ứng v
ma trận z):
Hình 13: Biểu diễn mặt cắt Dean dưới dạng
mặt 3 chiều Hình 14: Biểu diễn mặt cắt Dean dưới dạng lưới
3 chiều
Hình 15: Đánh dấu trên mảng màu 2 chiềut cắt địa hình từbiểu đồhai chiều.
ớc, áp suất, độmặn, hay bất kì một
trên mặt bằng.
hàng) từ mảng 2 chiều tương ứng. 
ới cột thứ 11 (trong số 21 cột) trong n 2 chiều
àu, trong một số trường hợp ta phải 
đó. Cáchđơn giản nhất làđánh dấu 
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 59 -
ymc1 = y(11,:);
zmc1 = z(11,:);
plot(ymc1, zmc1, '*-');
xlabel('y (m)'); ylabel('z (m)');
7.4. Trường véctơ
Trong các bài toán kỹthuật thủyđộng lực thường yêu câu mô phỏng trường dòng
chảy. Biểu diễn dòng chảy trong không gian 2 chiều được hỗtrợrất tốt trong
MatLab bằng câu lệnh:
quiver(x, y, u, v)
trongđó x, y là hai ma trận chứa tọa độcủa tất cảcác điểm theo phương ngang
(thường được phát sinh bằng lệnh meshgrid); u và v là hai ma trận chứa thành
phần lưu tốc của tất cảcác điểm (u là lưu tốc theo phương x, v là lưu tốc theo
phương y).
Giảsửtrong thưmục hiện thời đã có file data_u.txt và data_v.txt, mỗi file chứa
một ma trận giá trịu và v. Khi đó, hai ma trận nàyđượcđọc nhưsau:
u = dlmread('data_u.txt');
v = dlmread('data_v.txt');
Giảsửu và vđãđọc có kích thước giống nhau = sốđiểm trên trục x × sốđiểm trên
trục y:
[sizex, sizey] = size(u);
Ta muốn biểu diễn lên hình với, chẳng hạn, Δx = 10 m và Δy = 5 m:
dx = 10; dy = 5;
[x, y] = meshgrid(0:dx:(sizex – 1)*dx, 0:dy:(sizey -1) * dy);
figure;
quiver(x, y, u, v);
xlabel('X(m)'); ylabel('Y(m)');
axis equal tight;
Bài giảng Tin Ứng dụng 2 – Matlab 7
0 20 40 60 80
0
10
20
30
40
50
X(m)
Y
(m
)
Hình 16: Biểu diễn trường vec-tơ- 60 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 61 -
8. PHẦN BÀI TẬP
Bài tập số1:
Tính toán sóng theo số liệu sau:
T = 8 s, H
o
= 2 m,α
o
= 30
o
.
•G嫕gi trị cho 3 biến T, Ho, alpha0.
•T嫕h Co.
•T嫕h L
o
•Mở 1 file disperse.m bằng cách gõ>> edit disperse
•Với file mới mở hãy gõ vào nội dung sau:function [L] = disperse(h, Lo) 
L = Lo;
err = Inf;
while err > 0.1;
Ltry = Lo * tanh(2*pi*h / L);
err = abs(Ltry - L);
L = Ltry;
end;
•Tađã thiết lập được hàm tính L từ các giá trị h và Lo cho trước
•Hãy thiết lập một vec-tơh chứa độ sâu khác nhau: 3 m, 3.2 m, ..., 4 m. Tính L tại 
cácđộ sâu cho bởi h.
•T嫕h C tương ứng với L
•Tính sin_alpha theo công thức
sinα= sinα
o
* C / Co(chú ý đơn vị độ !)
•T嫕h alpha (d嫕g lệnh asin)
•T嫕h Kr = sqrt(cosα
o
/ cosα)
•T嫕h Ksh theo c嫕g thức Ksh = 
•Tính H = Ho × Ksh × Kr
•Ghi lại c嫕 gi trị của H
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 62 -
•Viết kết quả ra file ketqua.txt
Bài tập số2
Quan hệ giữa vận chuyển bùn cát S và lưu tốc u có quan hệ dạng: S = aub.Để xác 
định các hệ số a và b người ta tiến hành thí nghiệm và thuđược kết quả sau:
u (m/s) 0.2 0.35 0.57 0.68 0.81 0.96 1.12
S
(m3/s.m)
0.0002 0.0018 0.0159 0.0282 0.0609 0.1258 0.2858
1) Hãy nhập các giá trị u và S vào hai vec-tơ, sauđó tính X và Y là logarit tương
ứng của u và S.
2) Vẽ đồ thị điểm của X và Y.
3) Hai hệ số a và b được xác định bằng cách dựa vào quan hệ: 
log S = log a + b log u, hay Y = b X + log a.
Sử dụng hàm polyvalđể tính b và log a trong phương trình trên nhưsau:
p = polyval(X, Y, 1)
Phần tử đầu của vec-tơp chính là b; phần tử thứ 2 của p bằng log a.
Hãy tính a.
4) Vẽ đồ thị đường thẳng: Y = b X + log a lên cùng hệ trục với các điểm chấm ở 
câu 2).
Bài tập số3
1) Một chuỗi số liệuđođạc vận tốc dòng chảy được phát sinh bởi:
t = 0:0.5:48;
N là dãy số ngẫu nhiên có chiều dài bằng length(t) 
u = 0.4 + 0.12 sin(2πt / 24) + 0.05 N
2) Tính ứng suất tiếp tại ven bờ, biết
C = 60 m0.5/s
τ = ρ g u2 / C2
Thiết lập subplot 3 hàng × 1 cột. Hai vùng trên vẽ hai đồ thị u ~ t, τ~ t.
3) Nếu bờ có thành phần đất sét với ứng suất tiếp tới hạn τc = 0.65 N/m2, hãy chỉ 
ra xem có bao nhiêu thời điểm xuất hiện τ>τc .
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 63 -
4) Công thức xói lở đường bờ được xác định bởi:
Hãy tính khoảng cách xói lở E.
E = 10 (τ–τc) nếu τ>τc
= 0 trường hợp còn lại
Vẽ E ~ t lên vùngđồ thị dưới cùng tạo bởi subplot.
Bài tập số4:
Cho véctơX = [10 20 30] và Y = [10 40 30].
1. Tính diện tích tam giác tạo bởi 3 đỉnh có tọa độ X(1)Y(1), X(2)Y(2), 
X(3)Y(3).
2. Tổng quát hơn, tính diện tích đa giác n cạnh (trên mặt phẳng 2 chiều) với tọa độ 
xi và yi của đỉnh thứ i cho bởi phần tử thứ i của véctơX và Y tương ứng (do đó X 
và Y là 2 véctơcó cùng chiều dài = n).
LỜI GIẢI
Bài tập số1:
Hướng dẫn: tạo một script file có tên baitap1.m, soạn thảo nội dung dưới đây, và
ghi lại. Sau đó chạy file này, ta sẽ thu được kết quả.
% baitap1
% Inputs: T, H0, alpha0
% Outputs: C0, L0, L
%-------------------------------------------------------------
clear all;
g=9.81;
T=8;
H0=2;
alpha0=30;
%-------------------------------------------------------------
L0=g*T^2/(2*pi)
C0 = L0/T;
h=[3:0.2:4]
% n=length(h);
% for i = 1:n
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 64 -
% L(i)=disperse(h(i), L0);
% end;
L = disperse(h,L0); % Wave length
C=L/T % Wave celerity
sin_alpha=sin(alpha0)/C0*C
alpha = asin(sin_alpha) % arcsin
Kr=sqrt(cos(alpha0)./cos(alpha)) % Refraction coefficient
k=2*pi./L % Wave number
Ksh=sqrt(1./tanh(k.*h)/(1+2*k.*h/sinh(2*k.*h))) % Shoaling coefficient
H=H0*Ksh.*Kr % Wave height
Bài tập số2:
Hướng dẫn: tạo một script file có tên baitap2.m, soạn thảo nội dung dưới đây, và
ghi lại. Sau đó chạy file này, ta sẽ thu được kết quả.
(Bài này làm theo các bước nhưtrên lớp: tính log(u), log(S), vẽ lên trục tọa độ 
thường (không vẽ lên trục loga vì ở đây ta đã tính giá trị của loga rồi), và xácđịnh 
các hệ số a, b của đường thẳng một cách gần đúng trênđồ thị).
Bài tập số3:
Hướng dẫn: tạo một script file có tên baitap3.m, soạn thảo nội dung dưới đây, và
ghi lại. Sau đó chạy file này, ta sẽ thu được kết quả.
clear all;
t=0:0.5:48
N=rand(1,length(t));
u=0.4+0.12*sin(2*pi*t/24)+0.05*N
plot(N);
hold on;
plot(u,'+');
C=60;
Rho = 1000;
g=9.81;
To = Rho*g/C^2*u.^2
plot(t,To)
hold on
grid on
Toc = 0.65
10 * (To - Toc) .* (To > Toc) + 0 .* (To <= Toc)
Bài tập số4:
Hướng dẫn: Lần lượt thực hiện các bước sau:
1. Tạo một script file có tên baitap4.m, soạn thảo nội dung dưới đây, và ghi lại. 
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 65 -
function Sdagiac = dientich(x,y);
% Tinh dien tich da giac
n = length (x);
m = length (y);
if m ~=n
'Error: 2 vecto X va Y can co chieu dai bang nhau!'
else
Sdagiac = 0;
for i = 1:(n-1)
Sdagiac = Sdagiac + 0.5*(y(i)+y(i+1))*(x(i+1)-x(i));
end
Sdagiac = Sdagiac + 0.5*(y(n)+y(1))*(x(1)-x(n));
end
2. Vừa rồi ta đã tạo ra một hàm mới trong Matlab, với tên là hàm dientich. Sử 
dụng hàm này ta có thể dễ dàng tính được diện tích đa giác nói chung và tam giác
nói riêng bằng cách gọi hàm từcửa sổ nhập lệnh
>> dientich(X,Y) 
Lưu ý rằng hàm tính diện tích ngầm định rằng 2 véc tơX, Y ở đây đã chứa số liệu 
cho trước về tọa độ các đỉnh của đa giác theo nhưquy ước. Hơn nữa, khi nhập tọa 
độ ta đánh số các đỉnh từ 1 đến n theo chiều kim đồng hồ.
*Để tính diện tích tam giác S với chiều dài 3 cạnh cho trước là a, b, c, bạn có thể 
thử thuật toán khác nhưsau:
))()(( cpbpappS 
với p=(a+b+c)/2 là một nửa chu vi.
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 66 -
9. TÀI LIỆU THAM KHẢO:
1. Matlab R14 - Helps & Demos, The Mathworks, Inc., 2004
2. David F. Griffths, An introduction to Matlab, Department of Mathematics-
The University of Dundee – Sweden, 1996
3. John M. Stockie, A Whirlwind Tour of MATLAB for Students of CS 3113,
Department of Mathematics and Statistics, University of New Brunswick -
Canada, 2003
4. Bill Mason, Introduction to Matlab, Northeastern University - College of
Computer and Information Science – USA, 2003.
5. Tobin A. Driscoll, Crash course in MATLAB, Department of Mathematical
Sciences - University of Delaware – USA, 2006
6. Nguyễn Hoàng Hải & Nguyễn Việt Anh, Lập trình Matlab và ứng dụng,
NXB Khoa học và Kỹ thuật – Hà Nội, 2005
7. Nguyễn Phùng Quang, Matlab & Simulink dành cho kỹ sưđiều khiển tự 
động, NXB Khoa học & Kỹ thuật – Hà Nội, 2006
8. Nguyễn Phương Thảo, Programming in Matlab, handouts, 2007
9. ĐH. Thủy Lợi, Matlab version 7.0 cơbản, Khóa tin học nâng cao cho cán 
bộ giảng dạy của dự án 95 bộ NN&PTNT, handouts, 2007
10. Knight A., Basics of MatLab® and beyond, CRC Press, 2000
11. Timothy A. Davis & Kermit Sigmon, Matlab® Primer, Chapman &
Hall/CRC
12. R. J. Braun, Beginning Matlab Exercises, Department of Mathematical
Sciences – University of Delaware – USA.

File đính kèm:

  • pdfBài giảng Tin học ứng dụng - Học phần II - Matlab.pdf
Tài liệu liên quan