giao trinh co ban maplap
Trang 1øng dông matlab trong
chuyªn ngµnh
Phần I: Bổ túc về MATLAB
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 21a
1 : một số đặc điểm của ngôn ngữ lập trình matlab
1) Tên biến, tên hàm và câu giải tích
− Tên biến , tên hàm :
+ Phân biệt chữ Hoa và chữ Thường
+ Bắt đầu bằng chữ cái ( không được dùng hầu hết các dấu)
+ Nhiều nhất chỉ được 31 k tự
− Câu giải thích sau dấu ( % )
2) Câu lệnh, dòng lệnh
− Tên lệnh (từ khóa): viết chữ thường
− Các câu lệnh cách nhau bằng dấu chấm phẩy (;) nếu viết cùng một dòng
− Dùng dấu ba chấm ( ) để ngắt một phần câu lệnh xuống dòng tiếp theo
3) Soạn thảo văn bản chương trình: Tương tự như soạn thảo trong Word
Lưu ý : Tên file (hay tên tệp) cũng được quy định như tên biến
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 31 : một số đặc điểm của ngôn ngữ lập trình matlab
4) Lập trình trong cửa sổ lệnh Command Window
>> Viết dòng lênh 1 rồi ấn phím <Enter> để thực hiện lệnh
>> Viết dòng lênh 2 rồi ấn phím <Enter> để thực hiện lệnh
>> ………
− Chỉ thích hợp cho các bài toán nhỏ
Lưu ý:
+ Xóa màn hình bằng lệnh clc + Dùng các phím mũi tên ↑ ↓ hoặc < page Up/ Dowm> để dịch chuyển lên xuống
5) Lập trình trong cửa sổ M − file
− Không cần khai báo trước các biến và các hàm
( trừ trường hợp sử dụng thêm các chương trình con − Xem phần sau)
− Viết lần lượt từng dòng lệnh rồi ghi vào một file
+ Không dùng dấu cách và hầu hết các dấu
+ Nhiều nhất là 31 ký tự
− Chạy chương trình bằng lệnh ( Run trong Menu Debut) hoặc ấn F5 )
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
3
Trang 41 : một số đặc điểm của ngôn ngữ lập trình matlab
− Viết trong cửa sổ M−file
− Dòng đầu tiên khai báo chương trình con bằng từ khóa function
+ Nếu có nhiều biến ra:
function [out1, out2] = Tên_hàm ( các biến đầu vào)
+ Nếu chỉ có duy nhất một biến ra:
function out = Tên_hàm (Các biến đầu vào)
+ Nếu chỉ sử dụng như một file dữ liệu :
function Tên_hàm
− Viết từng dòng lệnh như chương trình chính
− Phân biệt biến toàn cục và biến địa phương
+ Biến toàn cục :
Có tác dụng cả trong chương trình chính và trong chương trình con
Phải khai báo các biến toàn cục bằng từ khóa global
global bien_1 bien_2 bien_3
(ở cả chương trình chính và trong chương trình con)
+ Biến địa phương : Chỉ có tác dụng trong chương trình con
− Ghi lại thành một file: Tên file phải trùng với tên hàm
− Cách gọi function vào chương trình chính:
Viết tại vị trí cần thiết trong chương trình chính: Tên_hàm( giá trị đầu vào )
6) Chương trình con ( file hàm): function file Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 52 : nhập dữ liệu và hiện thị kết quả
2.1.Nhập dữ liệu:
1) Khai báo trực tiếp trong câu lệnh:
− Gán trực tiếp một giá trị: x= a;
− Gán một khoảng giá trị: x= a : Dx : b; Biết trước bước biến thiên
x= linspace( a, b, n) Biết trước khoảng biến thiên
x= logspace( a, b, n) theo thang logarit
for x = a : Dx : b Tính theo vòng lặp
……… …
end
2) Lệnh input x = input (‘ Nhập giá trị x=’ )
3) Gọi vào từ một file dữ liệu
2.2 Các lệnh hiện thị kết quả:
1) Lênh disp (‘ chuỗi ký tự’) − hiện thị thông báo bằng chữ
disp ( biến) − hiện thị giá trị của biến hoặc hàm số
2) Lệnh fprintf (‘ chuỗi ký tự \ n ‘) − hiện thị dòng thông báo và xuống dòng
fprintf ( ‘ %3d %8.3f \ n ’, x1, x2) − hiện thị giá trị biến x1, x2
fprintf ( ‘ x1= %3d %12s \ n ’, x1, ch) − hiện thị kết hợp ký tự và số
Lưu ý : d ( số nguyên); f ( số thực); s ( xâu ký tự)
y=2*x ; − không hiện thị giá trị y
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
5
Trang 63 : c¸c phÐp to¸n th«ng dông
3.1 C¸c phÐp to¸n th«ng dông
1) C¸c to¸n tö:
C¸c phÐp to¸n sè häc: + − * / ^ ;
C¸c phÐp to¸n ma trËn vµ m¶ng: + − * / \ ; (.*) ; (.^) ; (./) ; (.\) ]
2) To¸n tö g¸n: =
3) C¸c hµm to¸n häc th«ng dông: Xem b¶ng 3.1
3.2 C¸c phÐp to¸n Logic
1) C¸c dÊu to¸n tö quan h : == ; ~= ; < ; <= ; > ; >= ệ
2) C¸c to¸n tö logic: and ( & ); or( | ); not( ~ ); xor
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 73 : các phép toán thông dụng
Lượng giác
Toán thông dụng
1 sin(x) Hàm sin 1 abs(x) | x | trị tuyệt đối
2 cos(x) Hàm cos 2 sqrt(x) Căn bậc 2
3 tan(x) Hàm tg 3 log(x) logrit tự nhiên lnx
4 asin(x) Hàm ngược của sin 4 log10(x) loggarit cơ số 10
5 acos(x) Hàm ngược của cos 5 exp(x) e x
6 atan(x) Hàm ngược của tg 6 sign(x) Hàm dấu
7 sinh(x) Hàm sin hy pe bolic 7 round(x) Làm tròn số về số nguyên
8 cosh(x) Hàm cos hy pe bolic 8 rem(x) Phần dư của phép chia
9 tanh(x) Hàm tang hy pe bolic 9 fix(x) Xấp xỉ không
10 asinh(x) Hàm ngược của sin hy pe bolic 10 floor(x) Xấp xỉ âm vô cùng
11 acosh(x) Hàm ngược của cos hy pe bolic 11 ceil(x) Xấp xỉ dương vô cùng
12 atanh(x) Hàm ngượccủa tang hypebolic 12 real(x) Tính phần thực của số phức
13 imag(x) Tính phần ảo của số phức
14 angle(x) Tính góc của số phức
15 abs(X) Tính biên độ số phức
…………
Bảng 3.1. Các hàm toán học thông dụng
Home
2 sinh
x
x e
=
2 cosh
x
=
x x
x x
e e
e
e
−
−
+
−
=
tanh
x x
x x
e e
e e anh −−
−
+
=
cot
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
7
Trang 84 : các vòng lặp và điều khiển
4.1 Các lệnh vòng lặp
1) Vòng lặp xác định : for … end
for i = n1 : Dn : n2
……
for j = m1 : Dm : m2 < Công việc >
end
………
end
Lưu ý :
− Nếu i, j dùng để làm chỉ số cho các biến, các hàm thì i, j phải là
các số nguyên dương khác 0 ( i> 0; j >0 )
− Có thể dùng bươc biến thiên âm ( D < 0 ) để thực hiện xếp thứ
tự giảm dần của dãy số liệu
2) Vòng lặp không xác định : While … end
while <Điều kiện so sánh>
end
3) Thoát khỏi vòng lặp bằng lệnh break, erro
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 94 : c¸c vßng lÆp vµ ®iÒu khiÓn
4.2 C¸c c©u lÖnh ®iÒu kiÖn
1) CÊu tróc lùa chän theo ®iÒu kiÖn if … else … end
if ®iÒu kiÖn 1
C«ng viÖc theo ®iÒu kiÖn 1
elseif ®iÒu kiÖn 2
C«ng viÖc theo ®iÒu kiÖn 2
elseif
………
else
C«ng viÖc kh«ng theo c¸c ®iÒu kiÖn trªn
end
2) CÊu tróc lùa chän theo gi¸ trÞ ®Çu vµo switch … case
Switch BiÓu_thøc_®Çu_vµo
case gi¸ trÞ 1
nhãm lÖnh 1
case gi¸ trÞ 2
nhãm lÖnh 2
……….
otherwise
nhãm lÖnh kh¸c
end
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
9
Trang 105 : mảng và ma trận
5.1 Mảng một chiều ( Vec tơ)
1) Vec tơ hàng : V = [ x1 , x 2 , , x i , , x n ] n phần tử
2) Véc tơ cột : C= [ x 1 ; x 2 ; ; x i ; ; x n ]
3) Đổi vec tơ hàng thành cột: C = V‘ ( Dùng dấu nháy đơn) 4) Đọc phần tử thứ i : y = V(i);
5) Đọc số phần tử : N = length (V) 6) Giá trị lớn nhất, nhỏ nhất max (V); min (V) 7) Tìm phần tử : find ( Điều kiện tìm)
k = find ( V > a) k là chỉ số các phần tử có giá trị V( k ) > a
k = find ( V == max(V)) Tìm chỉ số phần tử có giá trị lớn nhất 8) Các phép toán vec tơ:
- Cộng, trừ hai véc tơ cùng kích thước: V = V1 + V2 ; V = V1 ã V2
- Nhân, chia hai véc tơ cùng kích thước: V = V1.*V2 ; V = V1./V2
- Nâng lên lũy thừa: P = V.^k 9) Tạo một vec tơ
- Gán trực tiếp
V = a : dX : b hoặc V = [ a : dX : b ] Các phần tử cách đề nhau
V = [ X 1 X 2 X i X n ] Các phần tử rời rạc
V = [ V1 V2 P ] V1, V2, P là các vec tơ hàng
C = [ C1 ; C2 ; C3 ] C1, C2, C3 là các vec tơ cột
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 115 : mảng và ma trận
5.2 Các lệnh về Mảng và Ma trận
1) Nhập giá trị cho các phần tử của ma trân: A(i,j) = X 2) Xóa phần tử : A(i,j) = [ ] - Xóa phần tử A(i,j) A(: , j ) = [ ] − xóa di cột j của ma trận A
A(i , : ) = [ ] − xóa di dòng i của ma trận A
3) Đọc các phần tử của ma trân A(m,n)
C = A(i,j) ; C = A( :, j); C = A( i, :); C = A( i, [ n1 : n2]); C=A(i, [ 3 4 6] )
4) Tìm kích thước ma trân:
[m, n] = size(A) A là một ma trận ; m− số hàng ; n − số cột
5) Tìm phần tử fìnd ( Điều kiện so sánh) 6) Tìm giá trị lớn nhất và nhỏ nhất: max(A) ; min(A)
Chú ý : Dấu hai chấm ( : ) đại diện cho tất cả các hàng hoạc các cột
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
11
Trang 125 : mảng và ma trận
6) Các phép toán Mảng và Ma trận:
− Các phép toán về mảng
C= A + B ; Ci,j = Ai,j + Bi,j ; A, B phải cùng kích thước
C = A− B ; Ci,j = Ai,j − Bi,j ; A, B phải cùng kích thước
C= A.*B ; Ci,j = Ai,jBi,j ; A, B phải cùng kích thước
C= A./B ; Ci,j = Ai,j/Bi,j ; A, B phải cùng kích thước
C= A.\B ; Ci,j = Ai,j/Bi,j ; A, B trái cùng kích thước
C= A.^p ; Ci,j = (Ai,j)^p ; p − hằng số
− Các phép toán về ma trận
D= A + B; D= A − B; Cộng / trừ: A, B phải cùng kích thước
D = A*B ; Nhân ma trận: Số cột B = Số hàng A ;
X = A/B ; Chia phải , như giải Ptr ( X*A= B )
X = A\B ; Chia trái , như giải Ptr (A*X = B )
D = det (A) Tính định thức ma trận vuông :
D = A’ Ma trận chuyển vị :
D = inv (A) Ma trận nghịch đảo :
sum (A) Tổng các cột
sum (A,2) Tổng các hàng
ứng dụng : Giải hệ phương trình đại số
AX = B ; Hệ nghiệm là: x = A\B (Số ẩn = Số Ptr)
AX = B ; Hệ nghiệm là : x = inv(A’*A)*A’*B (Số ẩn <= Số Ptr)
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 136 : các lệnh về đa thức
Đa thức bậc n : y = anxn + an-1xn-1 + … + akxk + … + a2x2 + a1x + a0 ( 1 )
Véc tơ hàng hệ số: a = [ a n , a n-1 , … , a i , … , a 2 , a 1 , a 0 ] (2)
1) Nghiệm của đa thức: r = roots (a) r = [ x 1 ; x 2 ; … ; x i ; … ; x n ] Tìm đa thức từ hệ nghiệm y = poly (r)
2) Nhân đa thức : c = conv (a,b)
3) Cộng đa thức : d = a + b ; trong đó d i = a i + b i hoặc d = polyadd ( a, b)
4) Chia đa thức : [q, r] = deconv (a, b) ; r là phần dư
5) Đạo hàm đa thúc: h = polyder (a,x)
6) Tính giá trị đa thúc: y = polyva l (a,x)
7) Tìm hệ số hồi quy thực nghiệm: p = polyfit ( x, y, n)
x = [ x 1 x 2 … x i … x m ] m là số thí nghiệm
y = [ y 1 y 2 … y i … y m ] n là bậc củ a đa thức hồi quy y = f(x)
Chú ý: - Véc tơ hệ số phải sắp xếp theo thứ tự giảm dần từ a n đến a 0
Home
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
13
Trang 147 : các lệnh về hàm symbolic
Khai báo biến: x = sym ( ‘x’ ); y = sym (‘y’) hoặc syms x y k t syms x y k t : real
Home
collect(E) Thu gọn các hệ số
expand(E) Khai triển biểu thức
factor(E) Phân tích thành thừa số
simlify(E) Đơn giản (rút gọn) biểu thức
pretty(E) Hiện thi theo dạng toán học thong thường
[num den]=numden(E) Tử số (num) và mẫu số (den) của hàm hữu tỷ
sub(E, old, new) Thay thế biến số old → new
double(E) Tính giá trị hàm Symbolic
poly2sym(p) Chuyển vec tơ hế số p thành đa thức Symbolic
sym2poly(E) Chuyển biểu thức E thành vec tơ các hệ số
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 157 : các lệnh về hàm symbolic
Các hàm toán học trong symbolic Home
solve(E) Giải phương trình đại số, siêu việt
solve( E1 , E2) Giải hệ phương trình
int(E, a, b) Tích phân giới hạn trong khoảng [ a b ]
dsolve(Dy) Giải phương trình vi phân thường
dsolve(Dy, y0) Giải phương trình vi phân với điều kiện đầu
dsolve(Dx, Dy, x0, y0) Giải hệ phương trình vi phân cấp 1
fminbnd( ‘function’, x1, x2) Tìm cực tiểu hàm 1 biến trong khoảng [x1 x2]
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
15
Trang 168 : các lệnh Văn bản ( xâu ký tự )
Khai báo xâu ký tự : S = ‘ xâu ký tự ‘ ( để giữa hai dấu nháy)
S có thể là một vec tơ hàng, cột hoặc một mảng 2 chiều
Home
disp( xâu ký tự ) ‘ ’ Hiển thị xâu ký tự trên màn hình
fprintf( xâu ký tự ) ‘ ’ Viết dạng xâu ký tự ra file hoặc ra màn hình
int2str(X) Chuyển số nguyên x sang xâu ký tự
mat2str(A) Chuyển ma trận số A thành xâu ký tự các số
num2str(X) Chuyển số x thành xâu ký tự
str2num (S) Chuyển xâu ký tự sang số
strcat( S1, S2, ) … Nối các xâu thành véc tơ hàng
strvcat( S1, S2, ) … Nối các xâu thành vec tơ cột
length (S) Chiều dài xâu ký tự
size(M) Kích thước của một ma trận
Lưu ý: Có thể sử dụng một số tính chất của vec tơ, mảng nhiều chiều để tạo
ra một xâu ký tự mới từ các xâu ký tự thành phần:
Ví dụ: S = [ S1 S2 ‘ ABC’ S3 ]
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
Trang 179 : các lệnh Về đồ họa
Home
plot ( x, y) Vẽ một điểm; (x, y) là tọa độ một điểm
plot ( [ x1 x2] , [ y1 y2] ) Vẽ đoạn thẳng từ điểm (x1,y1) đến điểm (x2,y2)
plot (x,y, kiểu_đường,màu)‘ Vẽ một đường; x, y – hai vec tơ số
plot (x, y1, x, y2, )… Vẽ nhiều đường trên cùng hệ tọa độ
plot ( M) Vẽ một hoặc nhiều đường; M là một ma trận
plot3 ( x , y ,z) Đường cong không gian
[X Y] = meshgrid (x,y) Tạo ra một mạng số liệu [X, Y] từ các số liệu x, y
mesh (X, Y, Z ) Mặt cong trong không gian Z= f(X,Y)
contour(X,Y,Z) Đường đồng mức
ezplot( f(x) , x, y)‘ ’ Vẽ đồ thị với hàm Symbolic
fplot( f(x) , [ xmin xmax])‘ ’ Vẽ đồ thị với hàm Symbolic
polar ( goc, bán kính) Vẽ đồ thị tọa độ cực
subplot( m, n, p ) Vẽ nhiều đồ thị trên một cửa sổ (m, n số hàng/cột) p là thứ tự đồ thị
Loglog(x,y) Đồ thị có tỉ lệ trục dạng logarit
Semilogx(x,y) Chỉ có trục x dùng tỉ lệ logarit
Semilogy(x,y) Chỉ có trục y dùng tỉ lệ logarit
9.1 Các lệnh về vẽ đồ thị
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11
17
Trang 189 : các lệnh Về đồ họa
Home
figure( k ) Gán chỉ số cho cửa sổ đồ họa thứ k
hold on ; hold off Mở ( tắt) chế độ vẽ nhiều đồ thị trên một hệ tọa độ
grid on ; grid off Hiện thị ( ẩn ) lưới đồ thị
axis ([xmin xmax ymin ymax]) Gán giới hạn các trục đồ thị
xlabel( ‘ Nhãn trục x’) Viết nhãn trục x
ylabel( ‘ Nhãn trục y’); zlabel( ‘ Nhãn trục z’)
title ( ‘ Tiêu đề đồ thị )‘ Tiêu đề đồ thị
legend ( X1 , X2 , )‘ ‘ ‘ ’ … Ký hiệu các đường đồ thị
text (x, y, ‘ Xâu ký tự ’) Viết xâu ký tự tạ tọa độ (x, y)
gettext ( Xâu ký tự )‘ ‘ Hiện xâu ký tự tại vị trí nhấn chỏ chuột trên đồ thị
( hay sử dụng num2str để chuyển số thành chữ)
9 2 Trục tọa độ, Tiêu đề, Chú giải đồ thị
9 3 Hiệu chỉnh đồ thị
Trên cửa sổ đồ họa có nhiều lệnh cho phép trục tiếp hiệu chỉnh lại đồ thị:
2
1
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
11