Tải bản đầy đủ (.pdf) (87 trang)

Báo cáo môn học matlab ứng dụng thầy trần quang khánh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.4 MB, 87 trang )

Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -1-



LỜI NÓI ĐẦU

MATLAB là một trong những hệ thống được soạn thảo hết sức chu đáo,
mạch lạc với việc áp dụng nhiều thuật toán phong phú, đặc biệt như chính tên
của nó – “MATric LABoratory’’, thuật toán ma trận được coi là hạt nhân quan
trọng trong lập trình MATLAB. Cú pháp ngôn ngữ của chương trình MATLAB
được thiết lập tinh tế đén mức người sử dụng không có cảm giác là đang tiếp
xúc với các phép tính phức tạp của ma trận. Ma trận được áp dụng rộng rãi
trong các bài toán kĩ thuật phức tạp như hệ thống điện lực, tự động hóa,…Vì
vậy MAYLAB chính là phần mềm hết súc thuận tiện và hiệu quả đối với các
lĩnh vực này.
Là 1 hệ thống mở,MATLAB kết hợp rất nhiều phương pháp tính mà có thể
áp dụng thuận tiện cho bất kì người sử dụng nào. MATLAB có đặc điểm linh
hoạt và dễ thích nghi, vì vậy cho dù là người mới bắt đầu hay là 1 chuyên gia
sành sỏi, vẫn có thể sử dụng MATLAB một cách thoải mái và cuốn hút.
MATLAB rất ưu ái với người sử dụng,bạn có thể tạo ra chương trình chuyên
môn của mình mà MATLAB sẵn sang đáp ứng. Matlab cho phép tiếp cận và áp
dụng dễ dàng các hàm có sẵn để giải các bài toán cần thiết và đồng thời có thể
sang tạo ra các m.file mà khi được lưu giữ với thủ tục phù hợp, matlab coi như
là hàm của chính hệ thống, điều đó cho phép mở rộng khả năng vô hạn của
Matlab. Đó cũng chính là ưu điểm nổi bật của Matlab mà không chương trình
nào có được.
Em xin trân thành cảm thầy Trần Quang Khánh đã giúp chúng em tiếp cận
MATLAB để trang bị thêm cho mình một hành trang kiến thức trước khi bước
vào công việc của mình sau này.



Sinh viên: Đỗ Thị Lan Anh
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -2-



Phần I : Thực hành MATLAB cơ bản.

Chương 1: Cơ sở MATLAB
I. Cơ sở lý thuyết
Ngôn ngữ của hệ thống MATLAB rất phong phú, nó gần như áp dụng tất cả
các phương tiện lập trình đã biết, kể cả mô phỏng, hoạt hình, đồ họa…
MATLAB chứa khối lượng khổng lồ các phép tính, thuật giải và các hàm cho
phép giải rất nhiều các bài toán phức tạp như nghịch đảo ma trận, đạo hàm, vi
phân, tích phân…
Chương trình MATLAB nó cho phép vẽ tất cả các đồ thị với các dạng khác
nhau trong không gian 2D, 3D.

1.1) Số và phép toán sơ cấp
a) Các phép toán thông dụng thường dùng căn bản như sau:
Phép
toán
Cộng Trừ Nhân Chia
Chia
trái
Lũy
thừa
Khia

căn

hiệu
+ - * / \ ^ sqrt

b) Các phép toán về số phức như sau:
Khi một số S được biểu thị dưới dạng phức như cho trong bảng sau:
Tham số Cú pháp Tham số Cú pháp
Phần thực P = real(S) Môdul Sm = abs(S)
Phần ảo Q = imag(S) Góc pha Theta = angle(S)
Liên hợp phức Slh = conj(S)

c) Các biến và hàm trong MATLAB
Các hàm toán học
Lệnh Hàm Lệnh Hàm
abs(x) Giá trị tuyệt đối rem(x,y) Số dư của phép chia x/y
exp(x) Hàm mũ cơ số e round(x) Làm tròn số
imag(x) Phần ảo Ceil(x) Làm tròn lên
real(x) Phần thực floor(x) Làm tròn xuống
Phase(x) Góc pha của số phức sum(v) Tổng các phần tử vector

log(x) Logarit tự nhiên prod(v) Tích các phần tử vector
log10(x) Logarit cơ số 10 min(v) Phần tử vector bé nhất
sqtr(x) Căn bậc hai max)v) Phần tử vector lớn nhất
conv(x,x) Tích chập x của chính nó mean(v) Giá trị trung bình cộng
Các hàm lượng giác
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -3-



Sin(x) Hàm sin atan(x) Hàm artg ±90
0

Cos(x) Hàm cosin atan2(x,y) Hàm artg ±180
0

Tan(x) Hàm tg sinc(x) Hàm sin(Пx)/(Пx)
Asin(x) Hàm arsin acos(x) Hàm arcos
Sinh(x) Hàm sin hyperbol asinh(x) Hàm arsin hyperbol
Cosh(x) Hàm cosin hyperbol acosh(x) Hàm arccos yperbol

1.2 Các dạng xuất dữ liệu
Được thực hiện bởi lệnh :
fprintf('S=%v.uf d\n',F)
trong đó S là tham số ra, v là chữ số cực đại cố thể, u là chữ số sau dấu phẩy, f
hiện thị dấu phẩy tĩnh, (e hiện thị dấu phẩy động), d hiện thị đợn vị tính và F
hàm tính toán.

1.3 Văn bản trong MATLAB
Để xuất chuỗi ký tự nào đó ra màn hình thì ta sử dụng lệnh như sau:
disp('string')

BÀI TẬP THỰC HÀNH MATLAB
PHẦN I: MATLAP CƠ BẢN
Bài 1.1
Hãy sử dụng các lệnh của Matlab để thực hiện các phép tính sau:
a) 25.4+17*(34/4.2)-2.5;
b) cos(x)+sin(y); voi x=5.3 , y=1.2pi;
c) sin2(x)-cos1/2(y); voi x= 1.5*pi; y = 6.4;

d) e^2.5+tg(x); voi x=1.2*pi;
e) S=(2.7+j*3.2)-(2+j*1.5);
Giải:

a) >> 25.4+17*(34/4.2)-2.5

ans =
160.5190

b) >> x=5.3;y=1.2*pi;
cos(x)+sin(y)

ans =
-0.0334

c) >> x=1.5*pi;y=6.4;
sin(x)^2-cos(y)^1/2
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -4-



ans =
0.5034

d) >> x=1.2*pi;
exp(2.5)+tan(x)

ans =

12.9090

e) >> s=(2.7+j*3.2)-(2+j*1.5)

s =
0.7000 + 1.7000i

f) >> x=7.8;
>> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2)))
y=4.93e-001

>> x=5.9;
>> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2)))
y=4.90e-001
>> x=7.33;
>> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2)))
y=4.85e-001

>> x=6.77;
>> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2)))
y=5.09e-001

>> x=8.79;
>> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2)))
y=5.01e-001

>> x=10.3;
>> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2)))
y=4.91e-001
Nhận xét: Với việc sử dụng phần mềm MATLAB cho việc giải bài toán rất đơn

giản, thuận lợi và nhanh chóng cho ra kết quả, đồng thời nó cũng không yêu
cầu quá cao về trình độ của người sử nó.

Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -5-


Bài 1.2 Một mạch điện xoay chiều có các đại lượng điện áp U=U
r
+jU
x
(V) và
giá trị tổng trở Z=R+jX (om);(dữ liệu lấy trong bảng theo chữ cái họ tên và tên
đệm người giải)
a) Thực hiện phép các thao tác cần thiết để hiển thị tên người giải trên màn
hình.
b) Sử dụng các lệnh Matlab để xác định giá trị dòng điện chạy trong mạch
c) Biểu thị kết quả tính toán dòng điện dưới dạng Im

, với Im là modul và α là

a) >> disp('Do Lan Anh')
Do Lan Anh
b) >> U=116.2+j*110.4;
>> Z=6.54+j*7.22;
>> I=U/Z

I =
16.4071 - 1.2323i


c) >> modul=abs(I)

modul =
16.4533

>> phase=angle(I)

phase =
-0.0750

Bài 1.3 Điện áp định mức của mạng điện là U kV, điện thành phần trở tác dụng
là Ω, công suất truyền tải trên đường dây là S=P+j*Q. Hãy áp dụng các lệnh
Matlab để xác định tổn thất điện năng và áp dụng lệnh fprintf để biểu thị kết
quả trên màn hình với n chữ số sau dấu phẩy tĩnh/động(t/đ), biết thời gian tổn
thất công suất cực đại trong năm là τ h. Các dữ liệu tính toán lấy trong bảng 1.2
với họ tên người giải.

>> S=45.33+36.2i;
U=22000;
R=6.43;
t0=4120;
t=(0.124+t0*10^-4)^2*8760;
fprintf('A=%7.1e Wh\n',((abs(S))^2*R*t)/(U^2))
Kết quả :
A=1.1e-001 Wh
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -6-



Bài 1.4 Thực hiện phép tính toán (dữ liệu lấy theo số thứ tự ghi trong đầu bài
của người giải theo bảng 1.3):
a)Số Z1 cho dưới dạng đại số(hoặc dạng mũ), hay chuyển về dạng mũ(hoặc
dạng đại số), kiểm tra và ghi lại kết quả.
b) Số Z2 cho dưới dạng đại số(hoặc dạng mũ), hay chuyển về dạng mũ(hoặc
dạng đại số), kiểm tra và ghi lại kết quả.
c) Hãy tính giá trị của biểu thức và ghi lại kết quả dưới dạng mũ, đối
số(argument) biểu thị trong khoảng từ (-pi:pi):
Biểu thức:
C=(Z1+Z2)^4*Z3/Z4;

a) >> Z1=0.8-2i;
sm=abs(Z1)
theta=angle(Z1)

sm =
2.1541

theta =
-1.1903

b) >> Z2=3.08*exp(i*7*pi/12)

Z2 =
-0.7972 + 2.9751i

c) >> Z1=0.8-2i;
Z2=3.08*exp(i*7*pi/12)
Z3= 8.01*exp(2*i);

Z4= -5+sqrt(2)*i;
P=sqrt(Z1-Z2)*Z4/Z3
sm=abs(P);
theta=angle(P);
S1h=conj(P);
disp('sm theta S1h')
fprintf('%P'),disp([sm,theta,S1h]);

Z2 =
-0.7972 + 2.9751i

P =
1.4418 + 0.3465i
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -7-



sm theta S1h
1.4829 0.2359 1.4418 - 0.3465i
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -8-


Chương 2: Lập trình trên MATLAB

I. Cơ sở lý thuyết


2.1) Thủ tục xây dựng hàm
Hàm được bắt đầu bằng từ function , sau đó lần lượt là tham số đầu ra, dấu =
và tên hàm
function[tên tham số đầu ra] = tên hàm(tên biến đầu vào)
Các biến chỉ có tác dụng trong nội tại hàm khai báo. Tên của các biến được cách
nhau bởi dấu phẩy. Phần giải thích được ghi sau dấu %. Hàm này được lưu lại
vào trong m.file khi giải bài toán mà thiet lập nó sẵn tra chỉ cần gọi tên hàm ra
là được.

2.2) Inline objects
Có thể xây dựng hàm dưới dạng inline objects như sau:
f=inline('f(x) ', 'x')

2.4) Thủ tục vào xuất dữ liệu
a) Nhập dữ liệu bằng cách sử dụng từ lệnh: input
a=input('nhap gia tri a = ');
b=input('nhap gia tri b = ');
Khi chạy chương trình lần lượt thì dòng nhắc xuất hiện như sau:
nhap gia tri a =
nhap gia tri b =
lúc đó ta chỉ cần gõ dữ liệu vào vị trí tương ứng.
b) Lấy dữ liệu từ đồ thị sử dụng lệnh : ginput(n)
c) Xuất dữ liệu ta sử dụng lệnh (fprintf('S=%v.uf d\n',F)
hoặc sử dụng lệnh disp([…])
2.5) Điều khiển luồng- vòng lặp
a) Lệnh if đơn
Mỗi lệnh if được kết thúc bằng lệnh end.

Cú pháp:
if < biểu thức logic >

nhóm lệnh;
end
b)Lệnh if đúp

Cú pháp:
if < biểu thức logic 1>
nhóm lệnh 1;
if < biểu thức logic 2>
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -9-


nhóm lệnh 2;
end
nhóm lệnh 3;
end
nhóm lệnh 4;
c) Lệnh if – else
Cú pháp:
if < biểu thức logic 1>
nhóm lệnh 1;
else
nhóm lệnh 2;
end
d) Lệnh cấu trúc if…elseif…else
Cú pháp:
if < biểu thức logic 1>
nhóm lệnh 1;
elseif < biểu thức logic 2>

nhóm lệnh 2;
elseif < biểu thức logic 3>
nhóm lệnh 3;
end
2.6) Vòng lặp while và for
a) Vòng lặp while cho phép thực hiện một nhóm lệnh với số lần không xác định
theo một điều kiện logic cho trước.
Cú pháp:
while < biểu thức logic >
nhóm lệnh;
end
b) Vòng lặp for cho phép thực hiện một nhóm lệnh với số lần xác định theo một
điều kiện logic cho trước.
Cú pháp:
for < biểu thức >
nhóm lệnh;
end
2.7) Thoát khỏi vòng lặp bằng lệnh break và continue

Cú pháp:
if < biểu thức logic >
break;
end
2.8) Hàm con
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -10-


Tên của hàm đầu tiên cần phải đặt trùng với tên tệp hàm và được coi là hàm

chính. Các hàm còn lại gọi là hàm con. Chỉ hàm chính mới có thể được gọi ra
để tính toán.
function[…]=hamchinh(…)
a=…;
b=…;
function[…]=hamcon(…)
a=…;
b=…;

Bài 2.1 a) Hãy lập trình giải bài toán 1.3, so sánh kết qảu với kết quả thông
thường và cho nhận xét về hai cách:

function[deltaA]=tonthat(P,Q,U,R,t0)
deltaP=(P^2+Q^2)*R/U^2;
t=(0.124+t0*10^-4)^2*8760;
disp('Ton that dien nang la:')
deltaA=deltaP*t
>> tonthat(45.33,36.2,22000,6.43,4120);
Nhận xét: Với phương pháp này ta có thể áp dụng cho nhiều bài toán với nhiều
số liệu khác nhau mà không cần làm lại từ đầu.
b) Hãy cho ví dụ với các số liệu của mạng điện thực tế và dùng hàm để xây
dựng để tính tổn thất điện năng trong mạch điện đã chọn.
các hàm inline objects được cất giữ trong Workplace, để tính giá trị của hàm ta
chỉ việc gọi tên hàm và gán giá trị của biến x.

Ví dụ:P=2;Q=3;R=4;U=5;t0=641;
Chương trình Matlab như sau:
>> dA=inline('((P^2+Q^2)/U^2)*R*t0','P','Q','U','R','t0')
B= dA(2,3,4,5,641);
fprintf('B=%7.4e W\t',B)


Bài 2.2 Hãy xây dựng hàm xác định điện trở của mạch gồm n nhánh song song
và áp dụng hàm vừa xây dựng để tính điện trở tương đương của mạch gồm 5
nhánh song song với các điện trở lấy theo chữ cái đầu của họ và tên người giải
trong bảng 2.1:với
R1=4,78; R2=5,35; R3=6,44 ; R4=4,56; R5=6,74

function Rtd=dientro
Rtd=0;
n=input('Nhap so mach nhanh song song: ');
for i=1:n
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -11-


R=input('Nhap gia tri dien tro: ');
if R~=0
Rtd=Rtd+1/R;
end
end
disp('Dien tro tuong duong')
Rtd=1/Rtd

>> dientro;
Nhap so mach nhanh song song: 5
Nhap gia tri dien tro: 4.78
Nhap gia tri dien tro: 5.35
Nhap gia tri dien tro: 6.44
Nhap gia tri dien tro: 4.56

Nhap gia tri dien tro: 6.74
Dien tro tuong duong

Rtd =
1.4641

Bài 2.3 Hãy hiển thị hàm f1(x), cho trong bảng 2.2 với chữ cái đầu của tên
người giải, xác định giá trị của hàm này với x=0.3

>> f=inline('1.5*x^4+3*x^2-2*x+5.7','x')

f =
Inline function:
f(x) = 1.5*x^4+3*x^2-2*x+5.7

>> f(0.3)

ans =
5.3822

Bài 2.4 Biểu thị hàm véc tơ F=[f2 f3], cho trong bảng 2.2 với chữ cái đầu của
họ và tên người giải, dưới dạng inline objects và xác định giá trị của hàm ứng
với x1 và x2.
>> f=inline('[x1^4+x2^3-2 2*x1^2*x2^2-x1*x2 x2^3-1 6*x1^2*x2-
x1*x2+log(x2)]','x1','x2')

f =
Inline function:
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh


Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -12-


f(x1,x2) = [x1^4+x2^3-2 2*x1^2*x2^2-x1*x2 x2^3-1 6*x1^2*x2-
x1*x2+log(x2)]

>> f(0.5,1.2)

ans =
-0.2095 0.1200 0.7280 1.3823

Bài 2.5 Hãy sử dụng vòng lặp while cho bài toán xác định giá trị lớn nhất của n
mà có tổng :S=1^3+2^3+…+n^3 nhỏ hơn 50.

>> S=0;n=0;
while S+n^3<250
n=n+1;
S=S+n^3;
end
disp('Gia tri cua n la: ');
n
Gia tri cua n la:

n =
5
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -13-



Chương 3: Ma trận trên MATLAB

I. Cơ sở lý thuyết
3.1) Biểu thị một mảng với các phần tử cách đều trong một khoảng xác
định
+ Lệnh linspace(a,b,n), trong đó a, b là các mốc giới hạn và n là số điểm cần
thiết lập.
+ Lệnh linspace(a,b) cho phép thiết lập vector dòng với 100 gía trị cách đều
trong khoảng giới hạn [a, b].
+ logspace(a ,b,n) cho phép thiết lập vector dòng với n giá trị cách đều nhau
trong tọa độ logarit giữa các deccades 10
a
và 10
b
.
+ logspace(a ,b) cho phép thiết lập vector dòng với 50 giá trị cách đều nhau
trong tọa độ logarit giữa các deccades 10
a
và 10
b
.
3.2) Thiết lập ma trận từ vector cho trước
Giả sử cho trước một vector cột v, ta có thể nhân đôi số phần tử của vector tạo
ra một ma trận .
Nhập lệnh như sau: U=v(:,[1 1])
Cho một vector dòng : U=v([1 1],:)
Nhân vector lên nhiều lần ta làm như sau: U=v(:,ones(n)); U=v(ones(n),:)

3.3) Thiết lập ma trận từ ma trận cho trước
+ repmat(A,m,n) - ma trận thiết lập là bản sao từ ma trận gốc.

+ reshape(A,m,n) - định dạng lại ma trận thiết lập .
3.4) Gọi lại các phần tử của ma trận
Muốn gọi lại phần tử nào đó của ma trận A ta nhập một số lệnh như sau: A(x,y)
A(j), A(1:n,k), A(x,:), A(:,y)…
3.5 Các ma trận
a) Ma trận rỗng
nhập lệnh như sau: X=[]
b) Ma trận không
nhập lệnh như sau: zeros(m,n)
c) Ma trận đơn vị
nhập lệnh như sau: ones(n) hoặc ones(m,n)
d) Ma trận các số nguyên
nhập lệnh như sau: magic(N) (N>0,trừ N=2)
e) Ma trận đường chéo
nhập lệnh như sau: eye(n)
f) Ma trận các số ngẫu nhiên
nhập lệnh như sau: randperm(n)
g) Ma trận hadamard
nhập lệnh như sau: hadamard(n)

Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -14-





II. Bài thực hành


Bài 3.1 a) Hãy thiết lập một ma trận A(coi là ma trận gốc) với các phần tử bất
kỳ và với số dòng bằng số kí tự của họ và số cột bằng số kí tự của tên người
giải.
b) Ma trận B có số cột gấp đôi số cột của ma trận gốc;
c) Hãy thiết lập ma trận C gồm các phần tử từ dòng thứ 1 dến dòng thứ 2 và từ
cột thứ 1 dến cột thứ 3 của ma trận gốc.
d)Hãy thiết lập ma trận D cùng kích thước như ma trận A
e) Hãy gọi lại các phần tử của ma trận gốc:

Giải:

a) >> A=[1 3 5;2 4 6;8 5 9;9 6 2;7 8 1]

A =
1 3 5
2 4 6
8 5 9
9 6 2
7 8 1

b) >> B=repmat(A,1,2)

B =
1 3 5 1 3 5
2 4 6 2 4 6
8 5 9 8 5 9
9 6 2 9 6 2
7 8 1 7 8 1

c) >> C=A(1:2,1:3)


C =
1 3 5
2 4 6

d) >> D=rand(5,3)

Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -15-


D =
0.5828 0.2259 0.2091
0.4235 0.5798 0.3798
0.5155 0.7604 0.7833
0.3340 0.5298 0.6808
0.4329 0.6405 0.4611

e)>> a12=A(1,2)

a12 =
3

>> a3=A(:,3)

a3 =
5
6
9

2
1

>> a4=A(1,:)

a4 =
1 3 5

Bài 3.2 Thực hiện các phép tính:

a) >> A+D

ans =
1.5828 3.2259 5.2091
2.4235 4.5798 6.3798
8.5155 5.7604 9.7833
9.3340 6.5298 2.6808
7.4329 8.6405 1.4611

b) >> A*D'

ans =
2.3060 4.0620 6.7133 5.3276 4.6600
3.3238 5.4451 8.7725 6.8723 6.1945
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -16-


7.6737 9.7054 14.9759 11.4483 10.8157

7.0190 8.0499 10.7685 7.5462 8.6615
6.0962 7.9827 10.4748 7.2571 8.6157

c) >> D.\A

ans =
1.7159 13.2773 23.9155
4.7226 6.8988 15.7970
15.5186 6.5758 11.4894
26.9500 11.3245 2.9375
16.1698 12.4897 2.1687

d) >> A./D

ans =
1.7159 13.2773 23.9155
4.7226 6.8988 15.7970
15.5186 6.5758 11.4894
26.9500 11.3245 2.9375
16.1698 12.4897 2.1687
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -17-


Chương 4: Sử lý số liệu

I. Cơ sở lý thuyết

4.1) Xác định các phần tử cực đại và cực tiểu của mảng số liệu

+ max(A) – nếu A là vector, trả lại phần tử lớn nhất của A; hoặc A là ma trận
thì trả lại vector dòng chứa phần tử lớn nhất.
+ min(A) - nếu A là vector, trả lại phần tử nhỏ nhất của A; hoặc A là ma trận
thì trả lại vector dòng chứa phần tử nhỏ nhất.
+ max(A,B) – trả lại ma trận cùng kích thước như A và B với các phần tử tương
ứng lớn nhất của các ma trận này.
+ [C,I]=max(A) – trả lại giá trị cực đại của ma trận và chỉ số I của các phần tử
này.

4.2) Xác định giá trị trung bình, giá trị trung gian và độ lệch chuẩn
+ Mean(A) - nếu A là vector, trả lại giá trị trung bình số học của các phần tử
của mảng. Nếu A là ma trận, trả lại vector dòng có chứa các giá trị trung bình
của các phần tử của mỗi cột.
+ median(A) – trả lại giá trị trung gian
+ std(X) – trả lại độ lệch chuẩn của các phần tử mảng.
+ std(X,flag) – trả lại giá trị như lệnh std(X)

4.3) Sắp xếp các phần tử của mảng số liệu
+ Sort(A) - A là vector thì sắp xếp theo trình tự từ giá trị nhỏ nhất đến lớn.
+ [B, INDEX] =sort(A)
+ Sort(A,d) – trả lại ma trận sắp xếp theo cột(d=1), theo hàng phụ thuộc vào (d)
4.4) Xác định hệ số tương quan và phương sai
+ Hệ số tương quan:
Lệnh corrcoef(x,y) – tra lại ma trạn hệ số tương quan, các dòng là két quả của
các quan sát, các cột là kết qủa của các biến.
+ Phương sai
Lệnh cov(x) – trả lại phương sai

4.5) Hàm tương quan hồi quy
a) hàm hồi quy đơn

Nhập lệnh : polyfit(x,y,d)
b) Xác định giá trị hàm hồi quy
nhập lệnh: polyval(c,x)

4.6) hàm nội suy
Hàm nội suy đơn
nhập lệnh: interp1(x,y,xi)
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -18-



II. Bài thực hành

Bài 4.1 Cho ma trận A như bài toán 3.1, hãy xác định :
a) Giá trị cực đại của mỗi cột (C1);
b) Giá trị cực tiểu của mỗi cột (C2);
c) Giá trị cực đại của mỗi dòng (C3);
d) Giá trị cực tiểu của mỗi dòng (C4);
e) Giá trị cực đại của cột và chỉ số của chúng (C1, I);

>> C1=max(A)
C2=min(A)
C3=max(A,[],2)
C4=min(A,[],2)
[C1,I]=max(A)

C1 =
9 8 9



C2 =
1 3 1

C3 =
5
6
9
9
8

C4 =
1
2
5
2
1

C1 =
9 8 9

I =
4 5 3
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -19-




Bài 4.2 Số liệu thống kê về các đại lượng x và y cho trong bảng 4.1, lấy theo
chữ cái đầu của tên người giải:
1) Hãy sử dụng các hàm trong Matlab để xác định các đại lượng:
1.1) giá trị trung bình của các đại lượng x1,x2 và y: X
tb1
,X
tb2
,Y_tb;

1.2) Phương sai của các đại lượng Cx1, Cx2, Cy:
1.3) Độ lệch chuẩn của các đại lượng x1, x2 và y.
1.4 ) Độ lệch trung bình bình phương của các đại lượng x1, x2 và y.
1.5) Hệ số tương quan của các giá trị quan sát giữa các đại lượng Rx1_y,
Rx2_y:
2) Hãy xây dựng hàm hồi quy thực nghiemj và đánh giá sai số của các hàm:
2.1) Bậc hai: y=f(x1); y=f(x2).
2.2) Hàm tuyến tính: y=f(x1); y=f(x2).
2.3) Hàm hội quy bội: y=f(x1,x2)
Giải:
1.1)
>> y=[58.9 78.5 107.9 152.1 186.4 220.8 250.2 270.9 290.2 302.4];
x1=[2.57 6.25 10.35 12.44 14.43 18.53 20.57 21.96 23.06 24.5];
x2=[6.66 8.54 10.14 18.93 22.43 26.35 28.26 31.27 34.22 36.78];
>> Xtb1=mean(x1)

Xtb1 =
15.4660

>> Xtb2=mean(x2)


Xtb2 =
22.3580

>> Y_tb=mean(y)

Y_tb =
191.8300

1.2)
>> Cx1=cov(x1)

Cx1 =
56.0598

>> Cx2=cov(x2)

Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -20-


Cx2 =
119.6994

>> Cy=cov(y)

Cy =
7.9519e+003

1.3)

>> Xigmax1=std(x1,0)

Xigmax1 =
7.4873

>> Xigmax2=std(x2,0)

Xigmax2 =
10.9407

>> Xigmay=std(y,0)

Xigmay =
89.1734

1.4)
>> xigmax1=std(x1,1)

xigmax1 =
7.1031
>> xigmax2=std(x2,1)

xigmax2 =
10.3793
>> xigmay=std(y,1)

xigmay =
84.5973

1.5)

>> R1=corrcoef(x1,y);R2=corrcoef(x2,y);
sqrt(diag(cov(x1)))

Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -21-


ans =
7.4873
c1 =

-0.0145 10.9507 24.7736

c2 =

0.0175 7.1715 26.0965

c3 =

10.2121 31.6431

c4 =

8.3192 11.8495

xx =

Columns 1 through 11


1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 5.0200

Columns 12 through 22

10.2400 14.2300 19.9400 24.5300 29.7300 34.9500 38.9600 41.1600
45.5400 10.3600 13.3400

Columns 23 through 30

15.8300 29.5600 35.0700 41.1800 44.0600 48.7500 52.0500 58.0300


Bài 4.3 Hãy xác định các giá trị hàm nội suy của ma trận y ứng với các giá trị
của x(dữ liệu lấy theo chữ cái đầu của tên người giải trong bảng 4.2):

Xác định giá trị nội suy
>> x=[2:7]';
y=[x,x.^1.5,x.^2.8,x.^4];
xi=[2.5,3.5,6.2];
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -22-


yi=interp1(x,y,xi)

yi =
1.0e+003 *


0.0025 0.0040 0.0143 0.0485
0.0035 0.0066 0.0351 0.1685
0.0062 0.0155 0.1672 1.5170

Bai 4.4 Xây dựng hàm y trong khoảng biến thiên x(theo bảng 4.2) và các hàm
nội suy: bậc thang, tuyến tính hóa, lập phương mô phỏng và hàm lập phương và
đánh giá sai số so với hàm gốc.
y=2.02./(1.25+0.45*x.^1.8);
x=-1:1
Giải: Ta viết phương trình matlab:

>> x=-1:1;
y=(1.5)./(1+2.2*x.^2);
xx=-1:0.1:1;
yy=(1.5)./(1+2.2*xx.^2);
yn=interp1(x,y,xx,'nearest');
y1=interp1(x,y,xx,'linear');
yc=interp1(x,y,xx,'cubic');
ys=interp1(x,y,xx,'spline');
plot(x,y,'o',xx,yy,xx,yn,xx,y1,xx,yc,xx,ys)
grid;
legend('data',
'function',
'bac thang',
'tuyen tinh hoa',
'lap phuong mo phong',
'lap phuong',2);
sbt=max(abs(yn-yy));
stt=max(abs(y1-yy));
slpm=max(abs(yc-yy));

slp=max(abs(ys-yy));
disp(' sbt stt slpm slp')
fprintf('%g'),disp([sbt,stt,slpm,slp])
sbt stt slpm slp
0.5323 0.0849 0.2917 0.2917
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -23-



Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh

Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -24-


Chương 5: Đồ họa

I. Cơ sở lý thuyết
5.1) Vẽ đồi thị 2D với một số lệnh thông dụng như sau:
a) lệnh plot(x,f(x))
b) lệnh fplot('f(x) ',[x1,x2])
c) lệnh ezplot('f(x) ',x1,x2)
xlabel –nhãn trục x; ylabel – nhãn trục y; title – đặt tên tiêu đề cho đồ thị.

5.2) Đồ thị với trục tọa độ loga và bán loga
Các lệnh: loglog(x,y) – chia hai trục tọa độ khác nhau.
semilogx(x,y) – chia không đều cho trục x.
semilogy(x,y) – chia không đều cho trục y.


5.3) Vẽ đồ thị trong tọa độ cực và đồ thị bậc thang
a) Đồ thị trong tọa độ cực.
Lệnh polar(p,d) – p do bằng radian, d là hàm củabiến p.
b) Đồ thị bậc thang.
Lệnh stairs(x,y)

5.4) Đồ thị ba chiều 3D
a) Lệnh tạo lưới bề mặt và tạo lưới biên dạng.
Lệnh meshgrid – tạo lưới bề mặt.
Thực hiện như sau: [X,Y]=meshgrid(u,v) – X,Y là các ma trận ; u,v là các
vector.
b) Vẽ đồ thị mặt tô màu
Lệnh surf(X,Y,Z) hoặc có thể tăng tính tự nhiên bằng cách sử dụng lệnh
surf1(X,Y,Z)

II. Bài thực hành

Bài 5.1 Vẽ đồ thị hàm số y trong khoảng biến thiên x=a dến b bới bước tính
h(lấy theo chữ cái đầu của tên người giải trong bảng 5.1)bằng lệnh:
a)plot;
b)fplot;
c) ezplot;
d) Vẽ đồ thị với kiểu đường nét liền đỏ, điểm dấu hoa thị màu đen:
y=x.^2/(1+0.25*sqrt(x)); a=1.1; b=4,0; h=0.1; (chấm chấm/ đen); điểm(Δ)
a)
>> x=1.1:0.1:4;
y=x.^2/(1+0.25*sqrt(x)) ;
plot(x,y,'r-',x,y,'+')
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh


Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -25-


grid;
xlabel('truc x'); ylabel('truc y');
title(' Ve ham so y=f(x) voi lenh plot')

b)
fplot('y', 1.1:0.1:4);
c)
ezplot('y',1.5,4),grid;
>> ezplot('y',1.5,4),grid
xlabel('x');ylabel(' y=x.^2/(1+0.25*sqrt(x))');
title('lenh ezplot')
d)
plot(x,y,'r-',x,y,'ks')
Bài 5.2 Vẽ đồ thị hàm số y trong khoảng biến thiên của x (xem dữ liệu bảng 5.2.
Dữ liệu được lấy ứng với chữ cái đầu theo họ của người giải):
x=0:100;
y=50+exp(3*x);
a) Với các trục tọa độ chia theo tỷ lệ log cơ số 10;
b) Với các trục x chia theo tỷ lệ log cơ số 10;
c) Với các trục y chia theo tỷ lệ log cơ số 10;
Giải:
a)
>> x=0:2*pi;

×