Tải bản đầy đủ (.docx) (85 trang)

Báo cáo thực hành Matlab

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 (539.57 KB, 85 trang )

Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

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à một 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 ơn thầy TS.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: Phạm Thanh Huyền

SVTH: Phạm Thanh Huyền

1



Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

CHƯƠNG I
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
Khai căn
Ký 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
Sin(x)
Hàm sin
atan(x)
Hàm artg ±900
Cos(x)
Hàm cosin
atan2(x,y) Hàm artg ±1800
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)
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, F hàm tính toán.

SVTH: Phạm Thanh Huyền

2

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

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')
II. Bài thực hành :
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;
Sử dụng lệnh:
>> A=25.4+17*(34/4.2)-2.5
Kết quả là:
A=
160.52
b) cos(x)+sin(y); với x=5.3 , y=3.7;
Sử dụng lệnh:

>> B=cos(5.3)+sin(3.7)
Kết quả là:
B=
0.02
c) (sin(x))^2-(cos(y))^(1/2); với x= 12.4; y =22.4;
Sử dụng lệnh :
>> C=(sin(12.4))^2-(cos(22.4))^1/2
Kết quả là:
C=
0.49
d) e^2.5+tg(x); với x=21.7
Sử dụng lệnh:
>> D=exp(2.5)+tan(21.7)
Kết quả là:
D=
11.88
e) S=(2.7+3.2i)-(2+1.5i);
Sử dụng lệnh:
>> S=(2.7+3.2i)-(2+1.5i)
Kết quả là:

SVTH: Phạm Thanh Huyền

3

Lớp Đ3H1


Báo cáo thực hành Matlab


GVHD:TS.Trần Quang Khánh

S=
0.70
f) Hãy tính các giá trị của biểu thức, biểu thị các kết quả trên màn hình với n chữ
số sau dấu phẩy đông/tĩnh(đ/t) với dữ liệu lấy theo chữ cái họ, tên đệm và tên người
giải trong bảng 1.1.
Sử dụng lệnh:
>> a=0.56;b=0.77;c=0.96;d=2.33;
xi=[0.5,0.82,0.97,1.73,2.14,3.74];
yi=((cos(a^3+xi.^2)).^2-log(b)+d)./sqrt(c^2+2*xi.^2);
fprintf('yi=%10.8f dv\n',yi)
Kết quả là:
yi=2.86913393 dv
yi=2.01195451 dv
yi=1.66270363 dv
yi=1.36620091 dv
yi=0.81674812 dv
yi=0.48218906 dv

Bài 1.2
a)Thực hiện các thao tác cần thiết để hiển thị tên người giải trên màn hình.
Sử dụng lệnh:
disp('SVTH: Pham Thanh Huyen')
Kết quả là:
SVTH: Pham Thanh Huyen
b)Sử dụng các lệnh Matlab để xác định giá trị dòng điện chạy trong mạch

SVTH: Phạm Thanh Huyền


4

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

>> Ur=122.5;%V
Ux=117.5;%V
R=5.86;%Ω;
X=4.65;%Ω;
U=Ur+i*Ux
U=
1.2250e+002 +1.1750e+002i
>> Z=R+i*X
Z=
5.8600 + 4.6500i
>> I=U/Z
I=
22.5907 + 2.1251i
c)Biểu thị kết quả tính toán dòng điện dạng Imjα, với Im là modul và α là góc pha
Im=abs(I)
Im =
22.6905
anpha=angle(I)
anpha =
0.0938


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.
Chương trình Matlab như sau

SVTH: Phạm Thanh Huyền

5

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

>> P=55.81; Q=33.65; U=10; R=5.43;to=3560;
deltaP=(P^2+Q^2)*R/U^2;
deltaA=deltaP*to;
fprintf('deltaA=%12.2fkWh\n',deltaP*to)
deltaA= 820994.27kWh
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, Chuyển Z1 về dạng đại số
Sử dụng lệnh
z1=3.21*exp(15*i);

Slh=conj(z1)
Kết quả là
Slh =
-2.4386 - 2.0874i
b, Chuyển Z2 về dạng số mũ
z2=4+3*i; z2m=abs(z2); thetaz2=angle(z2);
[z2m, thetaz2]
ans =
5.0000 0.6435
z2=4+3*i; z2m=abs(z2); thetaz2=angle(z2);
[z2m, thetaz2]
ans =
5.0000 0.6435
c,Tính giá trị của biểu thức
>> z3=sqrt(3)-4*i; z4=1.23*exp(111*i);
z=(z1-z2)^3*z3+z4
z=
-8.8600e+002 +8.0699e+002i
>> zm=abs(z)
zm =
1.1984e+003
>> theta=angle(z)
theta =
2.4028
- 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ó

CHƯƠNG II
SVTH: Phạm Thanh Huyền


6

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

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.3. 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.4. Đ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>
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>


SVTH: Phạm Thanh Huyền

7

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh
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.5. 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.6. 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.7. Hàm con:
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=…;
II. Bài thực hành
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.
Ta sử dụng hàm function
>> function[deltaA]=ttdn(P,Q,R,U,t);
deltaP=(P^2+Q^2)*R/U^2;
deltaA=deltaP*t;
Lưu vào trong m.file.gọi kết quả ta dùng lệnh:
>> [deltaA]=ttdn(55.81,33.65, 5.43,10,3560);
fprintf('deltaA=%12.2fkWh\n',deltaA)
Kết quả là:
deltaA= 820994.27kWh
Nhận xét:Ta thấy kết quả này giống kết quả bài 1.3, nhưng cách giải bằng như bài
toán 1.3 thì có ưu điểm hơn ở chỗ là khi ta giải bài toán chỉ cần xây dựng hàm một


SVTH: Phạm Thanh Huyền

8

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

lần, chỉ cần gõ tên của hàm và nhập các thống số của nó và thay đổi các thông số
rễ dàng hơn ngay trên cửa sổ chính thì cho kết quả ngay mà không cần phải gõ
từng lệnh một. Cách thứ 2 tuy lúc tạo hàm lâu hơn nhưng có thể áp dụng cho nhiều
bài toán hơn.
b)Ví dụ; Mạng điện có công suất P= 367kW, Q=123kVAr,U=110kV,R=20Ω
Tính tổn thất điện năng trong 3470 giờ.
Sử dụng matlab ta tính được nhanh chóng như sau;
>> [deltaP,deltaA]=ttdn(367,123,20,110,3470)
Kết quả là:
deltaA =
8.5929e+005
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.
R1=6,74; R2=5,42; R3=6,73; R4=4.67; R5=4.33
function Rtd=dttd(n,R)
t=1:n;

R=R(t);
T=[1./R(t)];
Q=sum(T);
Rtd=1/Q
Lưu hàm váo trong m.file.
Gọi kết quả ta dùng lệnh :
>> dttd(5,[6.74,5.42,6.73,4.67,4.33])
Rtd =
1.0793
ans =
1.0793
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.
Sử dụng lệnh inline
>> f1=inline('1.8*x^3+3*x^2-2*sqrt(x)+7','x')
f1 =
Inline function:
f1(x) = 1.8*x^3+3*x^2-2*sqrt(x)+7
>> f1(0.3)

SVTH: Phạm Thanh Huyền

9

Lớp Đ3H1


Báo cáo thực hành Matlab


GVHD:TS.Trần Quang Khánh

ans =
6.2232
Bài 2.4
Biểu thị hàm véc tơ F=f2,f3], cho trong bảng 2.2 dưới dạng inline objects và
xác định giá trị của hàm ứng với x1 và x2
f2=x1^5+x2^3-3;
f3=5*x1^2*x2-x1*x2+log(x2)
>> F2=inline(' [x1^5+x2^3-3 5*x1^2*x2-x1*x2+log(x2)]','x1','x2')
F2 =
Inline function:
F2(x1,x2) = [x1^5+x2^3-3 5*x1^2*x2-x1*x2+log(x2)]
>> y=F2(1.3,0.6)
y=
0.9289 3.7792
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 250.
>> S=1; n=1;
while S+n.^3<250
n=n+1;
S=S+n.^3;
end
disp('

n S ')

fprintf('%g'),disp([n S])
n S
5 225


CHƯƠNG III
MA TRẬN TRÊN MATLAB
SVTH: Phạm Thanh Huyền

10

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

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 10a và 10b.
− 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 10a và 10b.
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)
II. Bài thực hành:
Bài 3.1

SVTH: Phạm Thanh Huyền

11

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

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.
>> A=[1 2 4 3 8;2 2 3 1 5;3 1 2 6 3;2 4 5 2 1]
A=
1 2 4 3 8
2 2 3 1 5
3 1 2 6 3
2 4 5 2 1
b) Hãy thiết lập ma trận B có số cột gấp đôi ma trân gốc A
>> B=repmat(A,1,2)
B=
1 2 4 3 8 1 2 4 3 8
2 2 3 1 5 2 2 3 1 5
3 1 2 6 3 3 1 2 6 3
2 4 5 2 1 2 4 5 2 1
c) Ma trận C có các phần tử từ dòng 1 đến dòng 2, cột 1 đến cột 3 của ma trận gốc
>> C=A(1:2,1:2)
C=
1 2
2 2
d, Hãy thiết lập ma trận ngẫu nhiên D cùng kích thước như ma trận A;
>> D=rand(4,5)
D=
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
e) Hãy gọi các phần tử của ma trận gốc

0.4218

0.9157
0.7922
0.9595

+/tại dòng thứ 1, cột thứ 2
>> a12=A(1,2)
a12 =
2
+/ thuộc cột thứ 2
>> a2=A(:,2)
a2 =
2
2
1
4
+/ thuộc dòng thứ 1

SVTH: Phạm Thanh Huyền

12

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

>> a1=A(1,:)
a1 =

1 2 4 3 8
Bài 3.2 Thực hiện các phép tính
a, Cộng hai ma trận A và D
>> A1=A+D
A1 =
1.8147 2.6324 4.9575
2.9058 2.0975 3.9649
3.1270 1.2785 2.1576
2.9134 4.5469 5.9706

3.9572
1.4854
6.8003
2.1419

8.4218
5.9157
3.7922
1.9595

b,Nhân 2 ma trận A và D
>> B=A*D'
B=
12.1551
8.8327
11.9998
11.2825

13.7424
9.9654

10.4042
8.9127

10.0529 13.9911
6.0451 10.7716
8.1530 8.9580
4.5488 10.1105

c, Chia trái 2 ma trận A và D
>> C=A.\D
C=
0.8147
0.4529
0.0423
0.4567

0.3162
0.0488
0.2785
0.1367

0.2394
0.3216
0.0788
0.1941

0.3191
0.4854
0.1334
0.0709


0.0527
0.1831
0.2641
0.9595

d,Chia phải 2 ma trận A và D
>> D1=A./D
D1 =
1.2274 3.1628 4.1775 3.1342 18.9681
2.2080 20.5043 3.1092 2.0603 5.4601
23.6245 3.5907 12.6893 7.4974 3.7869

SVTH: Phạm Thanh Huyền

13

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

2.1897 7.3142 5.1515 14.0958 1.0422

CHƯƠNG 4
XỬ 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.

SVTH: Phạm Thanh Huyền

14

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

+ 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ệnhcov(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)
II. Bài thực hành:
Bài 4.1 Cho ma trận A (bài toán 3.1),hãy xác định:
a, Các giá trị cực đại của mỗi cột (C1)
>> C1=max(A)
C1 =
3 4 5 6

8

SVTH: Phạm Thanh Huyền

15

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh


b,Các giá trị cực tiểu của mỗi cột (C2)
>> C2=min(A)
C2 =
1 1 2 1

1

c, Các giá trị cực đại của mỗi dòng (C3)
>> C3=max(A,[],2)
C3 =
8
5
6
5
d, Các giá trị cực tiểu của mỗi dòng (C4)
>> C4=min(A,[],2)
C4 =
1
1
1
1
e) Các giá trị cực đại của cột và chỉ số của chúng (C1,I)
>> [C,I]=max(A)
C=
3 4 5 6
I=
3 4 4 3
Bài 4.2:


8
1

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: (P)
1Hã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: Xtb1, Xtb2, Y_tb.
>> x1=[3.54 8.75 14.64 17.63 20.42 26.22 29.01 31.05 38.05 42.12];
>> x2=[9.35 12.06 14.38 26.79 31.86 37.34 39.93 44.22 49.26 53.66];
>> y=[83.4 111.2 152.9 215.4 264 312.7 354.3 383.6 412.6 478.3];
>> Xtb1=mean(x1)
Xtb1 =
23.1430
>> Xtb2=mean(x2)
Xtb2 =

SVTH: Phạm Thanh Huyền

16

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

31.8850
>> Ytb=mean(y)
Ytb =

276.8400
1.2Phương sai của các đại lượng Cx1, Cx2, Cy:
>> CX1=cov(x1)
CX1 =
154.4778
>> CX2=cov(x2)
CX2 =
250.6571
>> CY=cov(y)
CY =
1.7984e+004
1.3Độ lệch chuẩn của các đại lượng x1, x2 và y.
>> xigmaX1=std(x1)
xigmaX1 =
12.4289
>> xigmaX2=std(x2)
xigmaX2 =
15.8322
>> ximagY=std(y)
ximagY =
134.1049
1.4 Độ lệch trung bình bình phương của các đại lượng x1, x2 và y.
>> dltbbp_X1=std(x1,1)% do lech trung binh binh phuong cua x1
dltbbp_X1 =
11.7911
>> dltbbp_X2=std(x2,1)
% do lech trung binh binh phuong cua x2
dltbbp_X2 =
15.0197
>> dltbbp_Y=std(y,1)

% do lech trung binh binh phuong cua
dltbbp_Y =
127.2231
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:

>> RX1_Y=corrcoef(x1,y) %he so tuong quan cua x1 va y
RX1_Y =
1.0000 0.9906
0.9906 1.0000
>> RX2_Y=corrcoef(x2,y)% he so tuong quan cua x2 va y
RX2_Y =
1.0000 0.9947
1.9947 1.0000

SVTH: Phạm Thanh Huyền

17

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

2.Hãy xây dựng hàm hồi quy thực nghiệm và đánh giá sai số của các hàm:
2.1Bậc hai: y=f(x1); y=f(x2).
>> c1=polyfit(x1,y,2)% he so cua ham hoi quy cua x1 voi y
c1 =
-0.0129 11.2799 24.4776

>> RX1_Y=corrcoef(x1,y)
%he so tuong quan cua x1 va y
RX1_Y =
1.0000 0.9906
0.9906 1.0000
>> c2=polyfit(x2,y,2)% he so cua ham hoi quy cua x2 voi y
c2 =
0.0358 6.2492 33.1505
>> RX2_Y=corrcoef(x2,y)
% he so tuong quan cua x2 va y
RX2_Y =
1.0000 0.9947
1.9947 1.0000
2.2Hàm tuyến tính: y=f(x1); y=f(x2).
>> c1=polyfit(x1,y,1)% he so cua ham hoi quy cua x1 voi y
c1 =
10.6879 29.4892
>> c2=polyfit(x2,y,1)
% he so cua ham hoi quy cua x2 voi y
c2 =
8.4255 8.1930
2.3Hàm hội quy bội: y=f(x1,x2)
>> y=[83.4 111.2 152.9 215.4 264 312.7 354.3 383.6 412.6 478.3]';
x1=[3.54 8.75 14.64 17.63 20.42 26.22 29.01 31.05 38.05 42.12]';
x2=[9.35 12.06 14.38 26.79 31.86 37.34 39.93 44.22 49.26 53.66]';
XX=[ones(size(x1)) x1 x2];
a=XX\y%he so hoi quy
Y=XX*a;
ssb=(Y-y).^2;
er=sqrt(sum(ssb)./size(x1))*100/mean(Y);%sai so tuong doi

ert=er(1)
a=
14.1752
4.2138
5.1794
ert =
3.2243
Bài 4.3
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ị x
x=[1:7]';

SVTH: Phạm Thanh Huyền

18

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

y=[x x.^2.3 x.^3.5 x.^4];
xi=[1.6,3.3,6.2];
yi=interp1(x,y,xi)
yi =
1.0e+003 *
0.0016 0.0034 0.0072 0.0100
0.0033 0.0160 0.0711 0.1335
0.0062 0.0669 0.6048 1.5170

Bài 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ố với hàm gốc.
>> x=-1.5:1.5;
y=1.2.*x./(2.5+0.4.*x.^3);
xx=-1.5:0.2:1.5;
yy=1.2*xx/(2.5+0.4*xx.^3);
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
1.6590 1.6590 1.6590 1.6590

SVTH: Phạm Thanh Huyền

19

Lớp Đ3H1



Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

0.5

0

data
function
bac thang
tuyen tinh hoa
lap phuong mo phong
lap phuong

-0.5

-1

-1.5

-2
-1.5

-1

-0.5


0

0.5

1

1.5

CHƯƠNG V
ĐỒ 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.

SVTH: Phạm Thanh Huyền

20

Lớp Đ3H1



Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

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) Vẽ bằng lệnh Plot:
>> x=1.1:0.15:5.0;
y=sqrt(2+3*x).*log(1+3*x.^2);
>> plot(x,y)
grid;
xlabel('truc x'); ylabel('truc y');
title(' Ve ham so y=f(x) voi lenh plot')
Ve ham so y=f(x) voi lenh plot

18

16

14

truc y

12

10

8

6

4

2

1

1.5

2

2.5

3
truc x


3.5

4

4.5

b) Vẽ bằng lệnh fplot

SVTH: Phạm Thanh Huyền

21

Lớp Đ3H1

5


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh

>> fplot('sqrt(2+3*x)*log(1+3*x.^2)',[1.1 5],'.-g'),grid;
xlabel('truc x'); ylabel('truc y');
>> title(' Ve ham so y=f(x) voi lenh fplot')
>> text(-1,0.5,'y=f(x)')
Ve ham so y=f(x) voi lenh fplot
18
16
14


truc y

12
10
8
6
4
2

1.5

2

2.5

3
truc x

3.5

4

4.5

5

c)Vẽ bằng lệnh ezplot:
>> ezplot('sqrt(2+3*x)*log(1+3*x.^2)',[1.1,5.0,0,15])


SVTH: Phạm Thanh Huyền

22

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh
sqrt(2+3 x) log(1+3 x 2)

15

10

5

0

1.5

2

2.5

3
x

3.5


4

4.5

5

d) Vẽ đồ thị trên với kiểu đường đứt đỏ, điểm dấu hình tam giác màu đen:
>> x=1.1:0.15:5.0;
y=sqrt(2+3*x).*log(1+3*x.^2);
plot(x,y, 'r--',x,y,'k>')
xlabel('truc x'); ylabel('truc y');
title(' Ve ham so y=f(x) voi lenh plot')

SVTH: Phạm Thanh Huyền

23

Lớp Đ3H1


Báo cáo thực hành Matlab

GVHD:TS.Trần Quang Khánh
Ve ham so y=f(x) voi lenh plot

18
16
14


truc y

12
10
8
6
4
2

1

1.5

2

2.5

3
truc x

3.5

4

4.5

5

Bài 5.2
Vẽ đồ thị hàm sốy trong khoảng biến thiên của x(lấy dữ liệu theo họ)

y=2*x.^2+6*x.+5 trong (0:2)
a)Với trục tọa độ y chia theo tỷ lệ log cơ số 10
>> x=0:0.1:2*pi;
y=2.*x.^2+6.*x+5;
loglog(x,y)
grid;
xlabel('x,log10');ylabel('y,log10');
title('Do thi voi lenh y=loglog(x,y)')

SVTH: Phạm Thanh Huyền

24

Lớp Đ3H1


Báo cáo thực hành Matlab
3

GVHD:TS.Trần Quang Khánh
Do thi voi lenh y=loglog(x,y)

10

2

y,log10

10


1

10

0

10
-1
10

0

1

10
x,log10

10

b)Với trục y chia theo tỷ lệ cơ số 10
>> x=0:0.1:2*pi;
y=2.*x.^2+6.*x+5;
semilogx(x,y)
grid;
xlabel('x,log10');ylabel('y,logy');
title('Do thi voi lenh y=semilogx :Sinh vien – Pham Thanh Huyen-D3H1')

SVTH: Phạm Thanh Huyền

25


Lớp Đ3H1


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×