You are on page 1of 7

BÀI TẬP THỰC HÀ H MATLAB CƠ BẢ

1. Làm quen Matlab


1.1 Tính bằng tay các biểu thức sau, rồi thử lại bằng Matlab:
a. 10 / 2 \ 5 – 3 + 2 * 4
b. 3 ^ 2 / 4
c. 3 ^ 2 ^ 2
f. 2 + round(6 / 9 + 3 * 2) / 2 – 3
g. 2 + floor(6 / 11) / 2 – 3
h. 2 + ceil(-6 / 9) – 3
k. fix(-4/9)+fix(3*(5/6))
1.2 Dự đoán kết quả xuất ra màn hình:
a. 2 ; 4
b. 2 / 4
c. 2 \ 4
d. 2 , 4
e. 2 : 4
1.3 Cho a =36 b =15. Tính bằng tay các biểu thức sau, rồi thử lại bằng Matlab
a. mod(a,b)
b. rem(a,b)
c. gcd(a,b)
d. lcm(a,b)
Thử lại với các cặp giá trị (a,b) khác.

2. Vector
2.1 Cho x = [3 1 5 7 9 2 6], dự đoán kết quả các dòng lệnh sau và thử lại bằng Matlab:
a. x(3)
b. x(1:7)
c. x(1:end)
d. x(1:end-1)
e. x(6:-2:1)
f. x([1 6 2 1 1])
g. sum(x)
2.2 Cho x = [2 5 1 6].
a. Cộng thêm 16 vào tất cả các phần tử.
b. Cộng thêm 3 vào các phần tử ở vị trí lẻ.
c. Lấy căn bậc 2 tất cả các phần tử.
d. Bình phương tất cả các phần tử.
2.3 Cho x, y lần lượt là các vector cột. x = [3 2 6 8]’, y = [4 1 3 5]’.
a. Lấy tổng các phần tử của x cộng thêm vào từng phần tử của y.
b. Luỹ thừa mỗi phần tử của x với số mũ tương ứng là các phần tử của y.
c. Chia các phần tử của y với các phần tử tương ứng của x.
d. Nhân các phần tử của x với các phần tử tương ứng của y, đặt trong vector z.
e. Tính tổng các phần tử của z, gán cho w.
f. Tính x.* y – w.
g.Tích vô hướng của x và y
Lưu ý: x’ là ma trận chuyển vị của x
1
3. Ma trận
3.1 Cho x = [1 4 8], y = [2 1 5] và A = [3 1 6 ; 5 2 7]. Xét xem dòng lệnh nào hợp lệ, dự đoán kết
quả, giải thích; rồi thử lại bằng Matlab :
a. x + y
b. x + A
c. x’ + y
d. A – [x’ y’]
e. [x ; y’]
f. [x ; y]
g. A – 3

3.2 Cho A = [2 7 9 7 ; 3 1 5 6 ; 8 1 2 5], dự đoán kết quả, giải thích; rồi thử lại bằng Matlab:
a. A’
b. A(:,[1 4])
c. A([2 3], [3 1])
d. A(:)
e. [A; A(end,:)]
f. A(1:3,:)
g. [A; A(1:2, :)]
h. sum(A)
i. sum(A’)
j. sum(A, 2)
k. [ [ A ; sum(A) ] [ sum(A,2) ; sum(A(:)) ] ]

3.3 Cho ma trận A = [2 4 1 ; 6 7 2 ; 3 5 9], viết lệnh Matlab để


a. Gán cho vector x là dòng thứ nhất của A.
b. Gán cho ma trận y là hai dòng còn lại (cuối) của A.
c. Tính tổng theo dòng ma trận A.
d. Tính tổng theo cột ma trận A.
e. Tìm phần tử lớn nhất và phần tử nhỏ nhất của ma trận.
f. Tính tổng các phần tử của A

3.4 Hãy tạo ra ma trận 4x4 có giá trị nguyên nằm trong khoảng [-10,10] , Sau đó:
a. Cộng mỗi phần tử của ma trận cho 15
b. Bình phương mỗi phần tử của ma trận
c. Cộng thêm 10 vào các phần tử ở dòng 1 và dòng 2
d. Cộng thêm 10 vào các phần tử ở cột 1 và cột 4
e. Tính nghịch đảo mọi phần tử
f. Lấy căn bậc hai mọi phần tử

4. Vẽ đồ thị
4.1 Vẽ đồ thị hàm số x, x3, ex và e^(x2) với 0 < x < 4 (dùng hàm linspace(0,4) để tạo các điểm x).

4.2 Vẽ đường thẳng nối các điểm (0,1); (4,3); (2,0) và (5,-2) lại với nhau.

4.3 Vẽ đồ thị hàm số ex (0 < x < 4) nhưng với đường đứt nét, màu đỏ và dấu (marker) là dấu +.
2
4.4 Vẽ đồ thị hàm số e^(x2) (0 < x < 4) nhưng với đường gạch chấm, màu xanh và dấu (marker)
là hình tam giác hướng lên trên. (Thử lại với các tham số khác (Màu sắc, kiểu đường, dấu))
x
4.5 Vẽ đồ thị hàm số f ( x ) = , - 5 ≤ x ≤ 5 với:
1 + x4
Kiểu đường là nét gạch chấm, độ rộng 2pt, màu đỏ thẫm.
Dấu (marker) là hình tròn, độ rộng 6pt, màu tô của dấu là xanh, màu đường viền là đen.

4.6 Vẽ hai hàm y = x 2 và y = s in3x trên cùng một đồ thị.

4.7 Vẽ đường tròn có tâm O(0,0) bán kính bằng 3 (dùng tham số t, x = cos(t), y = sin(t)). Định tọa
độ cho trục Ox và Oy là từ -6 đến 6. Tạo đường lưới trên hình vẽ và thử lại với các lệnh axis
normal/square/equal/tight.

4.8 Vẽ đồ thị hàm số y = cos(t) trong khoảng 0 < t < 2pi, chia lại các giá trị trên trục 0x cách đều
nhau một khoảng là pi/4. Ghi nhãn cho các giá trị tương ứng là 0, pi/4, pi/2, 3pi/4, …, 2pi. Chia
trục Oy thành 3 khoảng là -1, 0, 1.

2 + sin t −0.05t
4.9 Vẽ đồ thị hàm số x(t ) = e với 0 < t< 30. Ghi chú thích cho trục Ox là ‘t (thoi
t
2 − cos  
4
gian’), Oy là ‘Ham so x(t)’ và tựa đề cho đồ thị.

4.10 Vẽ đồ thị hàm số x(t ) = 2 + 3sin(π t + 10)e −0.35t , với -5< t < 5. Định giá trị cho trục Ox là từ -
20 đến 20 và Oy từ -6 đến 6. Ghi chú thích cho trục Oy là ‘x(t)’; trục Ox là ‘thoi gian t(giay)’; tựa
đề của đồ thị là ‘ham so x(t)’. Dùng lệnh text để viết phương trình của đồ thị trên một điểm của đồ
thị.

4.11 Vẽ đồ thị hàm số x3, ex và e^(x2) với 0 < x < 4 trong cùng một cửa sổ hình vẽ.

5 2 1 
4.12 Cho ma trận A = 8 7 3  . Vẽ đồ thị cột biểu diễn ma trận trên. Ghi chú thích.
9 8 6 

4.13 Trong một báo cáo thị trường đồ uống ở một khu vực của Tp HCM cho biết có 850 người
uống coca, 720 uống pepsi, và 600 uống nước tinh khiết, còn lại 320 sử dụng các loại khác. Hãy vẽ
biểu đồ quạt để minh họa số liệu trên.

5. BIỂU THỨC LOGIC


5.1 Cho x = [1 5 2 8 9 0 1] và y = [5 2 2 6 0 0 2], giải thích kết quả các dòng lệnh sau:
a. x > y
b. y < x
c. x == y
d. x <= y
e. y >= x
f. x | y
g. x & y
h. x & (-y)
3
i. (x > y) | (y < x)
j. (x > y) & (y < x)

5.2 Dự đoán kết quả những câu sau, giải thích và kiểm tra lại bằng Matlab :
a. 1 & -1
b. 13 & (-6)
c. 0 < -2|0
d. 0 <= 0.2 <= 0.4
e. 5 > 4 > 3
f. 2 > 3 & 1

5.3 Cho 2 vectơ a = [1 0 2] và b = [0 2 2], xác định giá trị các biểu thức sau. Kiểm tra lại bằng
Matlab :
a. a = b
b. a < b
c. a < b < a
d. a < b < b
e. a | ( a)
f. b & ( b)
g. a ( ( b))
h. a= b==a (Xác định giá trị cuối của a)
5.4 Cho x = 1:10 và y = [3 1 5 6 8 2 9 4 7 0], dự đoán kết quả, giải thích và thử lại bằng Matlab:
a. (x > 3) & (x < 8)
b. x(x > 5)
c. y(x <= 4)
d. x( (x < 2) | (x >= 8) )
e. y( (x < 2) | (x >= 8) )
f. x(y < 0)

Từ BT 5.4 này, ta đã có một kỹ thuật trích các giá trị của một vector theo chỉ số là một biểu
thức logic, hay nói gọn hơn là chỉ số logic.
1 −2 8 9 
5 6 0 25
5.5 Cho ma trận X =  , tìm:
1 −11 3 7 
 
 0 4 −3 2 
a. Những phần tử dương của ma trận.
b. Những phần tử âm của ma trận.
c. Tổng các phần tử lẻ của ma trận.
d. Giá trị lớn nhất các phần tử chẵn của ma trận.

4
e. Gán những phần tử bằng 0 thành 1.
5.6 Cho x = [3 15 9 12 -1 0 -12 9 6 1], viết lệnh thực hiện:
a. Chuyển các giá trị dương thành giá trị 0.
b. Chuyển các bội số của 3 thành số 3.
c. Nhân các giá trị chẵn cho 5.
d. Gán cho vector y các giá trị lớn hơn 10 của x.
e. Chuyển các giá trị nhỏ hơn trung bình cộng thành giá trị 0.

5.7 Tạo vector x = randperm(35). Viết các lệnh để tính giá trị hàm sau sử dụng chỉ số logic:
y(x) = 2 nếu x<6
=x-4 nếu 6 <= x < 20
= 36 - x nếu 20 <= x <= 35
Thử lại kết quả bằng cách vẽ đồ thị hàm số này qua một số dòng lệnh.

6. CÂU LỆNH IF
Dự đoán kết quả và thử lại bằng Matlab:
6.1 if n > 1 a. n = 7 m = ?
m = n+1 b. n = 0 m = ?
else c. n = -10 m = ?
m=n–1
end

6.2 if z < 5 a. z = 1 w = ?
w = 2*z b. z = 9 w = ?
elseif z < 10 c. z = 60 w = ?
w=9-z d. z = 200 w = ?
elseif z < 100
w = sqrt(z)
else
w=z
end

6.3 if T < 30 a. T = 50 h = ?
h = 2*T + 1 b. T = 15 h = ?
elseif T < 10 c. T = 0 h = ?
h=T–2
else
h=0
end

6.4 if 0 < x < 10 a. x = -1 y = ?


y = 4*x b. x = 5 y = ?
elseif 10 < x < 40 c. x = 30 y = ?
y = 10*x d. x = 100 y = ?
else
y = 500
5
end

Viết các script để tính các hàm sau:


6.5 h(T) = T - 10 khi 0 < T < 100
= 0.45 T + 900 khi T > 100
Thử các trường hợp: a. T = 5.
b. T = 110.

6.6 f(x) = -1 nếu x < 0


=0 nếu x = 0
=1 nếu x > 0
So sánh với hàm sign của MATLAB.

6.7 t(y) = 200 khi y <= 10,000


= 200 + 0.1 (y - 10,000) khi 10,000 < y <= 20,000
= 1,200 + 0.15 (y - 20,000) khi 20,000 < y <= 50,000
= 5,700 + 0.25 (y - 50,000) khi 50,000 < y
Thử các trường hợp: a. y = 5,000
b. y = 17,000
c. y = 25,000
d. y = 75,000
7. VÒ G LẶP
7.1 Cho vector x = [1 8 3 9 0 1], dùng vòng lặp for viết các dòng lệnh để
a. Tính tổng tất cả các phần tử. (So sánh kết quả với lệnh sum.)
b. Viết hàm tính tổng dãy con từ 1 đến j. (So sánh kết quả với lệnh cumsum.)

n n!
7.2 Hãy viết hàm tính tổ hợp n chập r theo công thức sau   = .
 r  r !( n − r )!

7.3 Tạo ma trận M x N các số ngẫu nhiên (dùng lệnh rand). Chuyển các giá trị nhỏ hơn 0.2 thành
0, các giá trị lớn hơn hay bằng 0.2 thành 1.

7.4 Tạo một vec tơ ngẫu nhiên gồm 1.000.000 phần tử tính tổng bình phương các phần tử sử dụng
2 cách:
i) Dùng phép toán trên ma trận.
ii) Vòng lặp for.
Đo thời gian chạy giữa 2 cách bằng cách sử dụng cặp lệnh tic ... toc. Ví dụ, ta muốn đo thời gian
tính hàm x = sin(t) với thì dùng: tic x = sin(t) toc.

7.5 Tạo một vec tơ có giá trị nguyên gồm 100.000 phần tử trong khoảng [0,100], tìm tất cả những
phần tử chia hết cho 3 bằng 2 cách:
6
i) Dùng phép toán trên ma trận.
ii) Dùng for và if.
Đo thời gian chạy giữa 2 cách.

7.6 Cho x = [4 1 6] và y = [6 2 7], tính các mảng/vector/ma trận sau


a. aij = xiyj
b. bij = xi/yj
c. ci = xiyi, tính tổng các phần tử của c.
d. dij = xi/(2 + xi + yj)

7.7 Cho một vectơ bất kỳ, ví dụ x = [-4 0 5 -3 0 3 7 -1 6], viết script để đếm xem trong vec tơ có
bao nhiêu giá trị âm, bao nhiêu giá trị dương, và bao nhiêu giá trị bằng 0.

7.8 Viết script để tính trong một vector các số ngẫu nhiên (sử dụng lệnh rand):
a. Có bao nhiêu phần tử đứng trước một phần tử có giá trị nằm trong khoảng 0.8 đến 0.85.
b. Có bao nhiêu phần tử trong khoảng [0.01, 0.5] đứng trước giá trị trung bình của vector đó.
(Dự đoán kết quả trước khi thực thi lệnh.)

7.9 Viết một script yêu cầu nhập một nhiệt độ Fahrenheit rồi chuyển sang độ Celcius tương ứng.
Script vẫn chạy đến khi không nhập nhiệt độ nữa thì thôi. [Sử dụng hàm isempty.]

7.10 Giả sử ta đầu tư vào một quỹ tín dụng một số tiền ban đầu là a, số tiền sinh lời hàng năm là
10% số tiền vốn tích lũy. Hãy tính số năm khi mà lợi nhuận thu được gấp đôi tiền vốn ban đầu.

You might also like