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

bài tập cơ bản của 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 (2.58 MB, 95 trang )

BÀI TẬP MATLAB
Sinh viên:PHAN VĂN TRUYỀN
CHƯƠNG 1 .GIỚI THIỆU MATLAB
Bài tập 1.2.2 thực hiện phép toán sqrt, exp, trên cửa sổ Command windows
>> sqrt(4)
ans =
2
>> exp(3)
ans =
20.0855
Bài tập 1.2.3 khai báo vecto có 5 phần tử bằng cách nhập trực tiếp
>> v=[1 2 3 4 5]
v =
1 2 3 4 5
Bài tập 1.2.4 khao báo một ma trận có 5 hàng , 4 cột bằng cách nhâp trực tiếp
> m=[1 2 3 4;5 6 7 8;9 10 11 12; 13 14 15 16; 17 18 19 20]
m =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
1
Bài tập 1.2.5 khai bào một véc tơ có 20 phần tử bằng toán tử
>> v=1:1:20 xuất phát =1 ; bước =1; đích 20
v =
Columns 1 through 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Columns 18 through 20
18 19 20
Bài tập 1.2.6 khai báo một véc tơ có 20 phần tử bằng lệnh linspace


>> v=linspace(1,20,20) xuất phát=1,đích 20, số lượng phần tử =20
v =
Columns 1 through 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Columns 18 through 20
18 19 20
Bài tập 1.2.7 sử dụng các lệnh ones, zeros,rand tạo ma trận
3 4
×
>> v=ones(3,4)
v =
1 1 1 1
1 1 1 1
1 1 1 1
>> zeros(3,4)
ans =
2
0 0 0 0
0 0 0 0
0 0 0 0
>> rands(3,4)
ans =
0.6294 0.8268 -0.4430 0.9298
0.8116 0.2647 0.0938 -0.6848
-0.7460 -0.8049 0.9150 0.9412
Bài 1.2.8 Truy xuất phần tử (1,2) trong ma trận vừa tạo
>> v=ones(3,4)
v =
1 1 1 1
1 1 1 1

1 1 1 1
>> v(1,2) truy suất hang 1 , côt 2
ans =
1
>> v=zeros(3,4)
v =
0 0 0 0
0 0 0 0
0 0 0 0
>> v(1,2)
3
ans =
0
>> v=rands(3,4)
v =
0.9143 -0.7162 0.5844 -0.9286
-0.0292 -0.1565 0.9190 0.6983
0.6006 0.8315 0.3115 0.8680
>> v(1,2)
ans =
-0.7162
Bài tập 1.2.9 khai báo một cáu trúc gồm có 3 biến . truy suất từng biến.
>> s1=struct('que','vinh phuc','ten','truyen','tuoi','22')
s1 =
que: 'vinh phuc'
ten: 'truyen'
tuoi: '22'
Truy suat từng biến
>> s1.que
ans =

vinh phuc
>> s1.ten
ans =
truyen
4
>> s1.tuoi
ans =
22
Bài tập 1.2.10 khai báo một cấu trúc vòng , truy suất các phần tử của cấu trúc .
>> s1=struct('ten','phan van truyen')
s1 =
ten: 'phan van truyen'
>> s2=struct('ngay','5','thang','4','nam','1993')
s2 =
ngay: '5'
thang: '4'
nam: '1993'
>> s1.sinhnhat=s2
s1 =
ten: 'phan van truyen'
sinhnhat: [1x1 struct]
>> s1.sinhnhat
ans =
ngay: '5'
thang: '4'
nam: '1993'
Truy suất từng biến
>> s1.ten
5
ans =

phan van truyen
>> s2.ngay
ans =
5
>> s2.thang
ans =
4
>> s2.nam
ans =
1993
Bài 1.2.11 khai báo một trường bất kỳ và truy suất các phần tử của trường
>> s1=struct('ten','nguyen van nam')
s1 =
ten: 'nguyen van nam'
>> s2=struct('ngay','21','thang','ba','nam','1999')
s2 =
ngay: '21'
thang: 'ba'
nam: '1999'
>> s1.sinhnhat=s2
s1 =
ten: 'nguyen van nam'
6
sinhnhat: [1x1 struct]
>> s1.sinhnhat
ans =
ngay: '21'
thang: 'ba'
nam: '1999'
>> c1=cell(2,3)

c1 =
[] [] []
[] [] []
>> c{1,1}='dau tien la mot dong chu'
c =
[1x24 char ] [ 100] [2x2 double]
[1x1 struct] 'nguyen van nam' '18-Dec-2014'
>> c{1,2}=100
c =
[1x24 char ] [ 100] [2x2 double]
[1x1 struct] 'nguyen van nam' '18-Dec-2014'
>> c{1,3}=[1,2;3,4]
c =
[1x24 char ] [ 100] [2x2 double]
[1x1 struct] 'nguyen van nam' '18-Dec-2014'
>> c{2,1}=s1
7
c =
[1x24 char ] [ 100] [2x2 double]
[1x1 struct] 'nguyen van nam' '18-Dec-2014'
>> c{2,2}=s1.ten
c =
[1x24 char ] [ 100] [2x2 double]
[1x1 struct] 'nguyen van nam' '18-Dec-2014'
>> c{2,3}=date
c =
[1x24 char ] [ 100] [2x2 double]
[1x1 struct] 'nguyen van nam' '18-Dec-2014'
Truy suất
>> c{2,1}.sinhnhat.nam

ans =
1999
>> c{2,1}.ten
ans =
nguyen van nam
8
Bài 1.2.12 lấy ví dụ về cách sử dụng cách lệnh size , length , who, whos
>> s1=[1,3,5]
s1 =
1 3 5
>> size(s1)
ans =
1 3
>> length(s1)
ans =
3
>> who
Your variables are:
9
ans s1
>> whos
Name Size Bytes Class Attributes
ans 1x1 8 double
s1 1x3 24 double
Bài 1.13: sử dụng lệnh diary lưu dữ liệu đã nhập/ xuất tại command windows dưới
dạng file
Bài 2:
Lý thuyết:
Đối thoại của matlab với người dùng
− Việc hỏi số liệu từ người dùng được thực hiện bởi lệnh:

>> ten_bien=input(string)
VD:
>> tuoi=input('ban bao nhieu tuoi?\n')
ban bao nhieu tuoi?
21
tuoi =
21
− Nếu hỏi lấy dữ liệu là một chuỗi kí tự thì dùng lệnh:
>> ten_bien=input(string,'s')
VD
>> ten=input('ban ten la gi?\n','s')
ban ten la gi?
Phan Truyen
ten =
Phan Truyen
10
Bài 2.1: viết:
− Câu lệnh hỏi yêu cầu nhập họ và tên
>> ho_ten=input('ho va ten day du cua ban la gi?\n','s')
ho va ten day du cua ban la gi?
Phan Van Truyen
ho_ten =
Phan Van Truyen
− Câu lệnh hỏi yêu cầu nhập ngày tháng năm sinh
>> birthday=input('nhap nay thang nam sinh cua ban?\n','s')
nhap nay thang nam sinh cua ban?
Ngay 5 thang 4 năm 1993
birthday =
ngay 5 thang 4 nam 1993
− Câu lệnh hỏi yêu cầu nhập số CMT

>> so_CMT=input('nhap so chung minh thu?\n')
nhap so chung minh thu?
135661535
so_CMT =
135661535
− Câu lệnh xuất thông tin nhận được ra theo định dạng: “bạn đã nhập vào: Tên:
…….Ngày tháng năm sinh:……, số CMT:… ”
Bài 2.2: thực hiện ví dụ phần “cất vào hoặc gọi dữ liệu từ file”trên máy tính.
>> v1=[1:1:10];
>> v2=[11:1:20];
>> m=[v1;v2]
m =
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
>> save file1
>> clear
>> load file1
11
>> who
Your variables are:
m v1 v2
CHƯƠNG 2 : CÁC PHÉP TOÁN CƠ BẢN
Bài 2.1: Các phép so sánh và phép tính logic
Các phép so sánh
*So sánh bằng
== hoặc eq( a,b)
Vd:
>> a=1;
>> b=2;
>> c=a==b;

>> d=a==b-1
d =
1
>> d=a==(b-1)
d =
1
*Khác : ~ = hoac ne(a,b)
*Bé hơn :< hoặc lt(a,b)
*Bé hơn hoặc bằng: <= hoặc le(a,b)
*Lớn hơn: > hoặc gt(a,b)
*Lớn hơn hoặc bằng: >= hoặc ge(a,b)
12
Bài 2.2 : Cho các ví dụ về cách sử dụng các phép so sánh .Mỗi phép so sánh cho
một ví dụ
Các phép tính logic
a,Các kí hiệu:
*Not-Hàm đảo: ~ hoặc not(a)
*AND-Hàm nhân & hoặc and(a,b)
*OR-Hàm cộng hoặc or(ab)
*XOR-Hàm không tương đương-Hàm cộng Modul-2 xor(a,b)
B,Bảng chân lý: (bảng biểu diễn kết quả của các phép tính logic)
>> a=[0;0;1;1];
>> b=[0;1;0;1];
>> bang_chan_ly=[a b a&b a/b xor(a,b) ~a ~(a&b) ~(a/b)]
bang_chan_ly =
0 0 0 0 0 0 0 0 1 1 1 1 1 1
0 1 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 1 0 0 1 0 1 1 0 1 1
1 1 1 0 1 0 0 0 0 0 1 0 1 1
Bài 2.3 : Kiểm tra lại bảng chân lý bằng phần mềm matlab

Bài 2.4 : Phép biến đổi Y/∆
Công thức biến đổi :
12 31
1
12 23 31
R R
R
R R R
=
+ +

1 2
1 1 2
3
R R
R R R
R
= + +
13
23 12
2
12 23 31
R R
R
R R R
=
+ +

2 3
23 2 3

1
R R
R R R
R
= + +

31 23
3
12 23 31
R R
R
R R R
=
+ +

3 1
31 31 1
2
R R
R R R
R
= + +

Yêu cầu:
-Cho trước R
1
= 0.05, R
2
=1.67, R
3

=0.18 Xác định các giá trị R
12
,

R
23
, R
31
-Từ các giá trị R
12
,R
23
,R
31
tìm được ,tinh toán lại các giá trị R
1
, R
2
,R
3
%nhap R1,R2,R3
R1=10
R2=5
R3=17
%Xac dinh R12,R23,R31
R12=R1+R2+R1*R2/R3
R23=R2+R3+R2*R3/R1
R31=R3+R1+R3*R1/R2
%Tinh toan lai R1,R2,R3
R_1=R12*R31/(R12+R23+R31)

R_2=R12*R23/(R12+R23+R31)
R_3=R23*R31/(R12+R23+R31)
R1 = 10
R2 = 5
R3 = 17
R12 = 17.9412
R23 = 30.5000
R31 = 61
R_1 = 10.0000
R_2 =5.0000
R_3 = 17
Bài 2.5: Dòng điện dung trong cáp ngầm
14
Yêu cầu :
Tính các giá trị điện dung C,dòng điện dung chạy trong sợi cáp ngầm , công suất
tổn hao do điện môi theo các giá trị cho trước .Các giá trị chp trước là:
ε =3
R=5
r=2
U=22000
f=50
cosφ=0.03
%nhap gia tri
e=3
R=5
r=2
U=22000
f=50
cosfi=0.03
%tinh cac gia tri

C=0.0242*e/log10(R/r)
I=2*pi*f*C*10^(-6)*U
deltaP=U*I*cosfi
e = 3
R = 5
r = 2
U = 22000
f = 50
cosfi = 0.0300
C = 0.1824
I =1.2609
deltaP = 832.2149
Bài 2.6: Giải mạch điện bằng phương pháp dùng số phức
( )
0
1
5 2 sin 40i wt= +

15
( )
0
2
10 2 sin 30i wt= −

Chuyển các giá trị dòng điện i1,i2 sang dạng phức
( ) ( )
( ) ( )
( )
0
0

0 0 0
1
0 30 0 0
2
8.15
3 1 2
0
3
40 5cos 40 5sin 40 3.83 3.21
10 30 10 10cos 30 10sin 30 8.66 5
3.83 8.66 3.21 5 12.49 1.79 12.61
12.61 2 sin w 8.15
j
j
I j j
I e j j
I I I j j e
i t


= = + = +
= − = = − + − = −
= + = + + − = − =
= −

Yêu cầu :
Chuyển dòng điện i1,i2 về dạng phức
Tính toán dòng điện i3
Chuyển dòng điện i3 về dạng đại số
%nhap gia tri

I1=5;alpha1=40 %tri hieu dung va goc pha dong dien 1
I2=10;alpha2=-30 %tri hieu dung va goc pha dong dien 2
%tinh toan
\alpha1_rad=alpha1*pi/180 %chuyen goc pha qua don vi radian
alpha2_rad=alpha2*pi/180 %chuyen goc pha qua don vi radian
i1=I1*exp(i*alpha1_rad)%chuyen i1 qua so phuc
i2=I2*exp(i*alpha2_rad)%chuyen i2 qua so phuc
i3=i1+i2
I3=abs(i3) %tri hieu dung cua i3
alpha3_rad=angle(i3); %goc pha cua i3 ,rad
alpha3=alpha3_rad*180/pi %goc pha cua i3,do
alpha1 = 40
alpha2 = -30
alpha1_rad = 0.6981
alpha2_rad = -0.5236
i1 =3.8302 + 3.2139i
i2 = 8.6603 - 5.0000i
i3 =12.4905 - 1.7861i
I3 = 12.6175
16
alpha3 = -8.1378
Bài 2.7 : Giải mạch điện với các phép biến đổi nối tiếp song song
Tính toán tổng trở Z tương đương của mạch
Tình điện áp giữa 2 điểm AD
U=240;
Z1=1;
Z2=12;
Z3=6;
Z4=18;
Z5=6;

Z6=21;
Z7=1;
%Bien doi tam giac
Z_A=Z2*Z3/(Z2+Z3+Z4)
Z_B=Z2*Z4/(Z2+Z3+Z4)
Z_C=Z3*Z4/(Z2+Z3+Z4)
Z_OD=(Z_B+Z5)*(Z_C+Z6)/(Z_B+Z5+Z_C+Z6)
Z_AD=Z_OD+Z_A
Z=Z_AD+Z1+Z7
I=U/Z
U_AD=I*Z_AD
Z_A =2
Z_B = 6
Z_C =3
Z_OD = 8
Z_AD = 10
Z =12
I =20
U_AD =200
Z_A = 2
Z_B = 6
Z_C =3
Z_OD = 8
Z_AD = 10
Z = 12
17
I = 20
U_AD = 200
Bài 2.8 : Giải mạch điện phức tạp với số phức
Yêu cầu :

Tính toán tổng trở Z phức tương đương của mạch
Tính biểu thức dòng i1
%thong so dau vao
u=10*exp(-30*pi*i/180);
Z6=-5i;
Z5=3.5+6.7i;
Z4=1-2i;
Z3=1+2i;
Z2=2-4.6i;
Z1=0.5i;
%tinh tong tro Z
Z_56=Z5+Z6;
Z_456=Z4*Z_56/(Z4+Z_56);
Z_3456=Z3+Z_456;
Z_23456=Z2*Z_3456/(Z2+Z_3456);
Z=Z1+Z_23456
%tinh dong i1
i1=u/Z
I1_mod=abs(i1)
I1_angle=angle(i1)*180/pi
%tinh dong i2
u2=i1*Z_23456;
i2=u2/Z2;
I2_mod=abs(i2)
I2_angle=angle(i2)*180/pi
%tinh dong i4
i3=u2/Z_3456;
u4=i3*Z_456;
i4=u4/Z4;
I4_mod=abs(i4)

I4_angle=angle(i4)*180/pi
18
%tinh dong i6
i6=u4/Z_56;
I6_mod=abs(i6)
I6_angle=angle(i6)*180/pi
Z = 2.3309 + 0.1597i
i1 = 3.5518 - 2.3884i
I1_mod = 4.2802
I1_angle = -33.9188
I2_mod = 2.0101
I2_angle = 24.2757
I4_mod = 3.1454
I4_angle = -32.1385
I6_mod = 1.8076
I6_angle = -121.4799
Bài 2.9: Tính diện tích hình chữ nhật
%tinh dthcn
disp('tinh dien tich hinh chu nhat');
a=input('nhap a=');
b=input('nhap b=');
S=a*b
%fprintf('dien tich S=%2.5g\n',S);
disp('dien tich hinh chu nhat:');
disp(S)
tinh dien tich hinh chu nhat
nhap a=7
nhap b=8
S = 56
dien tich hinh chu nhat: 56

Bài 2.10: Giải phương trình bậc 2
%chuong trinh giai phuong trinh bac hai
disp('CHUONG TRINH GIAI PHUONG TRINH BAC HAI')
disp('nhap vao cac he so :')
a=input('nhap he so a=');
b=input('nhap he so b=');
c=input('nhap he so c=');
19
delta=b^2-4*a*c;
disp('cac nghiem so:');
x1=(-b+sqrt(delta))/(2*a)
x2=(-b-sqrt(delta))/(2*a)
CHUONG TRINH GIAI PHUONG TRINH BAC HAI
nhap vao cac he so :
nhap he so a=5
nhap he so b=6
nhap he so c=8
cac nghiem so:
x1 = -0.6000 + 1.1136i
x2 = -0.6000 - 1.1136i

CHƯƠNG 3:SỬ DỤNG FILE.M
Bài 3.1:cho một ví dụ về chương trình sử dụng lệnh rẽ nhánh if
Rẽ nhánh và vòng lặp
Lệnh rẽ nhánh if và switch
a.if
>> d=2;
>> if d<5;ket_qua_thi='truot',elseif d<8;ket_qua_thi='do',else ket_qua_thi='do loai
gioi',end;
ket_qua_thi =

truot
b.switch
d=9
d =
20
9
>> switch d case{1 2 3 4}; ket_qua_thi='truot',case{5 6
7};ket_qua_thi='do',otherwise ket_qua_thi='do loai gioi',end;
ket_qua_thi =
do loai gioi
Bài 3.2 : Ví dụ về lệnh rẽ nhánh case
a.for lặp lại lệnh một số lần nhất định
for n=1:3,a=n,end;
a =
1
a =
2
a =
3
Bài 3.3: Ví dụ về vòng lặp sử dụng for
b.while
>> while n<4,a=n,n=n+1;end;
a =
1
a =
2
a =
21
3
Bài 3.4 : Ví dụ về vòng lặp sử dụng while

for m = 13:1:17,
for n=2:1:m-1,
if mod(m,n)~=0, continue,end
fprintf(' %2d khong phai la so nguyen to\n',m)
break
end
if n == m-1,
fprintf('!!%2d la so nguyen to\n',m)
end
end
!!13 la so nguyen to
14 khong phai la so nguyen to
15 khong phai la so nguyen to
16 khong phai la so nguyen to
!!17 la so nguyen to
Bài 3.5 : viết 1 scrip kiểm tra xem các số nguyên thuộc khoảng
33-57,số nào không
*Các hàm của matlab-function:
Function là một dạng đặc biệt của m-file , là một hàm của matlab do người dùng tự
tạo ra
*Cách tạo function:
File/New/M-file
Function[ra1,ra2,ra3]=ten_function(vao1,vao2,vao3)
Vd:
function[a,b,c]=function1(x,y,z)
a=x+y+z;
b=x-y-z;
c=x*y*z;
>> [a,b,c]=function1(2,4,8)
a =


22
14
b =

-10
c =
64
Bài 3.6: Viết 1 function tính chu vi và diện tích của hình tròn bán kính r
function[c,s]=function7(r,pi)
c=2*pi*r
s=pi*r^2
>> [c,s]=function7(8,pi)
c =
50.2655
s =
201.0619
c =
50.2655
s =
201.0619
Bài 3.7: Xác định điện áp ,dòng điện của tụ điện trong mạch DC
Yêu cầu : thành lập hàm .m file
-Nhập vào giá trị thời gian t
-Xác định các giá trị dòng điện ,điện áp ,công suất ứng với giá trị nhập vào của t
23
-Xuất kết quả ra cửa sổ lệnh
t=input('nhap thoi gian t:');
if(t<=2)
i=4;

u=2*t-5;
p=u*i;
elseif and(t>=2,t<=6)
i=t+2;
u=t^2/4+t-4;
p=u*i;
elseif and(t>=6,t<=14)
i=20-2*t
u=t^2/2+10*t-31
p=u*i;
else
i=-8
u=67-4*t
p=u*i;
end
disp('gia tri dong dien:')
disp(i)
disp('gia tri dien ap:')
disp(u)
disp('gia tri cong suat:')
disp(p)
nhap thoi gian t:8
i =

4
u =
81
24
gia tri dong dien:
4

gia tri dien ap:
81
gia tri cong suat:
324
Bài 3.8: Xác định số tiền điện theo điện năng tiêu thụ
disp('nhap doi tuong su dung')
disp('1:san xuat')
disp('2:sinh hoat')
doi_tuong=input('vui long chon 1 hoac 2:');
switch doi_tuong
case 1
disp('nhap dien nang tieu thu-kwh:')
A_binh thuong=input('gio binh thuong:');
A_thapdiem=input('gio thap diem:');
A_cao diem=input('gio cao diem:');
G=A_caodiem*1480+A_thapdiem*505+A_binhthuong*895;
case 2
A_input('nhap tong dien nang tieu thu:')
if(A<100)
G=A*550;
elseif and(A>=100,A,150)
G=100*550+(A-100)*900;
elseif and(A>=150,A<200)
G=100*550+50*900+(A-150)*1210;
elseif and(A>=200,A<300)
G=100*550+50*900+50*1210+(A-150)*1340;
else
end
G=100*550+50*900+50*1210+100*1340+(A-150)*1340;
end

otherwise;
clear doi_tuong
25

×