You are on page 1of 22

BÀI TẬP MATLAB

MATLAB PROGRAMMING
3
e
Câu 1: Tính giá trị của biến y = +8 √ 10
14
>> exp(1)^3/14+8*sqrt(10)

ans =

26.7329

Câu 2: Nếu bạn nhập >>3 + 6 – 9 vào cửa sổ lệnh của MATLAB thì kết quả được gán vào biến nào?

Câu 3: Kiểm tra các biến sau có hợp lệ hay không với hàm có sẵn -isvarname
Alexander, 2Hola, +Number, Good Job, How are, Bg_3, Exam6,
Add*Or

Câu 4: Ta có công thức tính toán lực F = m*a. Tính giá trị F khi biết m = 10, F = 45.
Câu 5: >>Logica = islogical (5<6) && islogical (2>1). Kết quả trả về của câu lệnh sau là gì? Giải thích.

Sau khi chạy đoạn mã trên, biến “Logica” sẽ chứa giá trị 1 nếu như mệnh đề đúng và chứa giá trị 0 khi mệnh
đề sai, vì cả hai biểu thức “5 < 6” và “2 > 1” đều đúng nên cho ra giá trị là 1.

Câu 6: Cho hàm y = cos(2x), x = 0:pi/12:pi. Vẽ đồ thị biểu diễn véc-tơ y.

2 1 −3
Câu 7: Cho ma trận −3 0 5 . Biết B là hàng thứ hai của A và C là giá trị giao của hàng thứ 3 và cột
8 4 50
1,2. Chỉ ra giá trị của A và C
Câu 8: Cho x = 0<=x<=2pi. Vẽ y1 = sin2x; y2 = cos2x; y3=sin2x+cos2x trên cùng 1 đồ thị

Câu 9: Sử dụng thông số câu 8 vẽ đồ y1, y2 va y3 trên các trục đồ thị (axes) khác nhau dùng hàm subplot.

1.1. Function
Câu 1: Viết một MATLAB function tính phương trình sau: 0 = ax2 + bx + c

unction solutions = solve_quadratic_equation(a, b, c)


% Tính nghiem cua phuong tŕnh bac hai: ax^2 + bx + c = 0
a= input('a: ');
b= input('b: ');
c= input('c: ');

delta = b^2 - 4*a*c;

if delta > 0
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
solutions = [x1, x2];
elseif delta == 0
x = -b / (2*a);
solutions = x;
else
solutions = [];
end
disp('Các nghiem cua phuong tŕnh:');
disp(solutions);
end

Câu 2: Viết một MATLAB function tính giá trị 2 điện trở mắc song song. Biết công thức tính điện trở song
song như sau:

1 1 1
= +
R R1 R2
function R = tro_TD(R1, R2)
% Hàm tính giá tr? ?i?n tr? m?c song song
% ??u vào: R1 và R2 là giá tr? c?a hai ?i?n tr?
R1= input('R1: ');
R2= input('R2: ');
% ??u ra: tro_TD là giá tr? ?i?n tr? m?c song song
R= (R1 * R2) / (R1 + R2);
disp(['Giá tr? ?i?n tr? m?c song song là: ',
num2str(R)])
end

Câu 3: Viết chương trình cho phép nhập vào một ma trận m ×n bất kì. Kết quả xuất ra số phần tử trong
ma trận chia hết cho 5 và có giá trị lớn hơn hoặc bằng 5.

function count = dem_so_phan_tu(~)


% Hàm ??m s? ph?n t? chia h?t cho 5 và l?n h?n ho?c b?ng
5 trong ma tr?n
% ??u vào: matrix là ma tr?n ??u vào
% ??u ra: count là s? l??ng ph?n t? th?a măn
matrix = input('nh?p ma tr?n: ');
count = sum(mod(matrix(:), 5) == 0 & matrix(:) >= 5);
disp(['s? ph?n t? chia h?t cho 5 và >= 5 trong ma tr?n:
', num2str(count)])
end

Câu 2: Định nghĩa một hàm thực hiện việc lắc 2 viên xúc xắc. Hàm trả về giá trị của mỗi viên xúc xắc và in
ra kết quả “Bạn thật may mắn” nếu tổng giá trị 2 viên xúc xắc lớn hơn 10. (2đ)

function [xuc_xac_1, xuc_xac_2] = tung_xuc_xac()


% Hàm l?c 2 viên xúc x?c
% Tr? v? giá tr? c?a m?i viên xúc x?c và in ra k?t qu?
may m?n

xuc_xac_1 = randi([1, 6]);


xuc_xac_2 = randi([1, 6]);
tong_gia_tri_2_vien_xuc_xac = xuc_xac_1 + xuc_xac_2;

fprintf('V?n may c?a b?n: Viên xúc x?c 1: %d, Viên xúc
x?c 2: %d\n',xuc_xac_1, xuc_xac_2);

if tong_gia_tri_2_vien_xuc_xac > 10
disp('B?n th?t may m?n!');
end

Bài 4: Cho số lượng sinh viên bằng N , viết một chương trình MATLAB trả về, gia su sv dau neu diem >5:

1. Số lượng sinh viên đậu


2. Số lượng sinh viên rớt
3. Đồ thị tần suất theo thang điểm từ 0 – 10

function main
% Nhập số lượng sinh viên
N = input('Nhập số lượng sinh viên: ');

% Khởi tạo mảng chứa điểm của các sinh viên


diem = zeros(N, 1);

% Nhập điểm của từng sinh viên


for i = 1:N
diem(i) = input(['Nh?p ?i?m c?a sinh viên ',
num2str(i), ': ']);
end

% Số lượng sinh viên đậu và rớt


sv_dau = sum(diem > 5);
sv_rot = N - sv_dau;

fprintf('S? l??ng sinh viên ??u: %d\n', sv_dau);


fprintf('S? l??ng sinh viên r?t: %d\n', sv_rot);
% đò thị tần suất
histogram(diem, 11, 'Normalization', 'probability');
title('?? th? t?n su?t ?i?m');
xlabel('?i?m');
ylabel('T?n su?t');
xlim([0, 10]);
ylim([0, 1]);

% Hiển thị biểu đồ


grid on;

legend('Tần suất');
end
Bài 5: Mở rộng bài 2 bằng cách cho đầu vào là một ma trận A = (m, n). Trong đó, m là số hàng đại diện
cho số lớp học môn KTPM& ứng dụng, n là số cột đại diện điểm số sinh viên mỗi lớp. Giả sử mỗi lớp có
số sinh viên bằng nhau = n. Viết hàm MATLAB function trả về:

1. Số lượng sinh viên đc ậu của mỗi lớp


2. Số lượng sinh viên rớt của mỗi lớp
3. Đồ thị tần suất theo thang điểm 0 – 10 của mỗi lớp

function analyze_class_scores()
% Hàm phân tích điểm sinh viên cho từng lớp
% Nhập số lượng lớp và điểm cho từng sinh viên trong
mỗi lớp
% In ra số lượng sinh viên đậu, số lượng sinh viên
rớt,
% và vẽ đồ thị tần suất theo thang điểm từ 0 - 10 của
mỗi lớp.

num_classes = input('Nhập số lượng lớp học: ');


num_students_per_class = input('Nhập số lượng sinh
viên mỗi lớp: ');

for class_num = 1:num_classes


fprintf('Lớp %d:\n', class_num);

% Nhập điểm cho từng sinh viên trong lớp


class_scores = zeros(1, num_students_per_class);
for i = 1:num_students_per_class
class_scores(i) = input(['Nhập điểm của sinh
viên thứ ', num2str(i), ': ']);
end

pass_count = sum(class_scores > 5);


fail_count = num_students_per_class - pass_count;

disp(['Số lượng sinh viên đậu: ',


num2str(pass_count)]);
disp(['Số lượng sinh viên rớt: ',
num2str(fail_count)]);

subplot(num_classes, 1, class_num);
histogram(class_scores, 'BinEdges', 0.5:10.5,
'Normalization', 'probability');
title(['đồ thị tần suất lớp ',
num2str(class_num)]);
xlabel('điểm');
ylabel('Tần suất');
xlim([0, 11]);
end
end
Bài 6: Dung MATLAB đọc file BangDiem.csv và trả kết quả sau:

1. Số lượng lớp học


2. Lớp tốt nhất (Average Score lớn nhất)
3. Lớp tệ nhất
4. Số lớp đậu (Average Score > 5)
5. Số lớp rớt (Average Score < 5)

SIMULINK

Bài 1: Dùng simulink mô phỏng bài toán giải phương trình bậc 2.

a. Chỉ sử dụng các khối tính toán cơ bản (+-*/^)


a=input('nhap a');
b=input('nhap b');
c=input('nhap c');
simOut=sim('b1slx.slx');
b.Sử dụng khối M-function

function [x1,x2,delta] = fcn(a,b,c)


delta=(b^2)-(4*a*c);
if (delta>0)
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
elseif (delta==0)
x1=-b/(2*a);
x2=-b/(2*a);
else
x1=0;
x2=0;
delta=0;
end
- Từ đó xuất ra kết quả x1,x2,deltal
Bài 2: Dùng simulink mô phỏng bài toán tính số sinh viên đậu/ rớt. Lưu ý: sử dụng khối display để hiển
thị số sv đậu và số sv rớt, không vẽ biểu đồ tần suất.

while (true)
N=input('nhap so hoc sinh la:');
a=input('so hoc sinh dc diem 1 la:');
b=input('so hoc sinh dc diem 2 la:');
c=input('so hoc sinh dc diem 3 la:');
d=input('so hoc sinh dc diem 4 la:');
e=input('so hoc sinh dc diem 5 la:');
f=input('so hoc sinh dc diem 6 la:');
g=input('so hoc sinh dc diem 7 la:');
j=input('so hoc sinh dc diem 8 la:');
q=input('so hoc sinh dc diem 9 la:');
k=input('so hoc sinh dc diem 10 la:');
if ((a+b+c+d+e+f+g+j+q+k)>N)
disp('moi nhap lai:');
end
simOut=sim('untitled.slx');
svdau=e+f+g+j+q+k;
svrot=a+b+c+d;
end

function [dau,rot] = fcn(a,b,c,d,e,f,g,j,q,k)


dau=e+f+g+j+q+k;
rot=a+b+c+d;
end

Câu 3: Dùng Simulink mô phỏng lại quá trình săn mồi của chim ưng. Biết phương trình chuyển động của
quá trình này được mô tả bằng phương trình sau:

Trong đó,

A là diện tích cánh bằng 0.0123

Cd là hệ số cản bằng 0.1

g là gia tốc trọng trường bằng 9.81 (m/s2)

m là khối lượng bằng 1 (kg)

rho bằng 1.225


Câu 4: Thêm điều kiện đóng/ mở cánh của chim ưng vào câu 3. Biết chim ưng mở rộng cánh khi
cảm nhận được gần tiếp cận với mặt đất. Giả sử điều này xảy ra khi chim ưng cách mặt đất 15m.
Hành vi đó có thể miêu tả lại như sau:

If h >= 15:

Cd = Cd1=0.1, A = A1 = 0.0123

Else

Cd = Cd2=0.4, A = A2 = 0

end

Giả sử ban đầu chim ưng cách mặt đất 100m, vận tốc ban đầu -10 (m/s)

Nhận xét kết quả trên khối scope


function [cd,A] = fcn(h)
if (h>=15)
cd=0.1;
A=0.0123;

else
cd=0.4;
A=0;
End

You might also like