Bài giảng Matlab ứng dụng - Chương 1: Matlab căn bản

?Biến số ( variables)

?Số (Numbers)

?Toán tử ( Operaters)

?Hàm ( Functions)

- tối đa 19 ký tự có nghĩa

- phân biệt giữa chữ hoa và chữ thường.

- bắt đầu bằng một từ theo saulà từ hay số hoặc dấu (_).

- biến tòan cục (global) tác dụng trong tòan chương trình.

- biến cục bộ (local) tác dụng trong nội tại hàm (function)

- một số biến đặc biệt: pi, ans,

pdf37 trang | Chuyên mục: MATLAB | Chia sẻ: dkS00TYs | Lượt xem: 2846 | Lượt tải: 4download
Tóm tắt nội dung Bài giảng Matlab ứng dụng - Chương 1: Matlab căn bản, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
1 2 1
2 5 6
ƒMa trận phức.
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
>> size(C)
ans =
3 3
>> mean(B)
ans =
2.6667
>> sum(B)
ans =
16
>> min(C)
ans =
-4 2 1
>> sort(C)
ans =
-4 2 1
1 2 3
2 5 6
C =
-4 2 3
1 2 1
2 5 6
B =
1 5 6 -5 7 2
ƒ Hàm xử lý ma trận và vectơ (size, median, max, min, mean, sum, length,…) 
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
• II. Giải hệ phương trình tuyến tính và phi tuyến bằng hàm thư viện Matlab: solve
1. Hệ đại số tuyến tính A*x=b 
>>clear all
>>clc
>>A=[1 3 6;2 7 8;0 3 9];
>>b=[10;9;8];
>>x=inv(A)*b %(x=A\b)
x =
7.8571
-3.1905
1.9524
8930
9872
1063
321
321
321
=++
=++
=++
xxx
xxx
xxx
2. Hệ đại số tuyến tính A*x=b , solve
>>S=solve('x+3*y+6*z=10','2*x+7*y+8*z=9','3*y+9*z=8')
S = 
x: [1x1 sym]
y: [1x1 sym]
z: [1x1 sym]
>> eval([S.x S.y S.z])
ans =
7.8571 -3.1905 1.9524
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
3. Hệ đại số tuyến tính A*x=b, LU decomposition
>> clear all
>> clc
>> [L,U]=lu(A)
L =
0.5000 -0.1667 1.0000
1.0000 0 0
0 1.0000 0
U =
2.0000 7.0000 8.0000
0 3.0000 9.0000
0 0 3.5000
>> x=U\(L\b)
x =
7.8571
-3.1905
1.9524
>> x=inv(U)*inv(L)*b
x =
7.8571
-3.1905
1.9524
8930
9872
1063
321
321
321
=++
=++
=++
xxx
xxx
xxx
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
7. CÁC PHÉP TÓAN TRÊN ĐA THỨC
™ Tính giá trị đa thức 
> pol=[1,2,3,4]
pol =
1 2 3 4
> polyval(pol,-1)
ans =
2
™ Tìm nghiệm đa thức 
> pol=[1,2,3,4]
pol =
1 2 3 4
> roots(pol)
ans =
-1.6506+ 0.0000j
-0.1747+ 1.5469j
-0.1747- 1.5469j
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
™ Nhân và chia đa thức 
> f1=[1 7 12];
> f2=[1 0 9];
¾f3=conv(f1,f2)
f3= 1 7 21 63 108
4 3 2
3 7 21 63 108f s s s s= + + + +
Cho hai đa thức: 12721 ++= ssf 922 += sf
213 * fff =Hãy tính
Cho hai đa thức: 4 3 24 9 37 81 52f s s s s= + + + + 25 4 13f s s= + +
> f4=[1 9 37 81 52];
> f5=[1 4 13];
¾[f6 r]=deconv(f4,f5)
f6= 1 5 4
r= 0 0 0 0 0
6 4 5/f f f=Hãy tính
2
6 5 4f s s= + +
r là phần dư của phép chia
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
™ Phân rã đa thức 
Phân rã đa thức:
3
3 2
2 9 1( )
4 4
s sF s
s s s
+ += + + +
> a=[2 0 9 1];
> b=[1 1 4 4];
> [r,p,k]=residue(a,b)
™ Tính đạo hàm đa thức: polyder(p) 
>> p=[2 0 9 1];
>> polyder(p);
ans =
6 0 9
[b,a]=residue(r,p,k)
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
™ Phương pháp bình phương tối thiểu trong xử lý số liệu thực nghiệm 
> x=[1 3 10];
> y=[10 18 37];
> polyfit(x,y,1)
ans =
2.92537 8.01493
2.92537 8.01493y x= +
Biểu thức phân rã ?
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
8. Nội suy
™ Nội suy dữ liệu một chiều : interp1(x,y,xi)
> x= 0 : 10 ;
> y = sin(x);
> xi= 0 : .5 : 10;
> yi= interp1(x,y,xi);
™ Nội suy dữ liệu một chiều đa thức bậc ba : spline(x,y,xi)
> x= 0 : 10 ;
> y = sin(x);
> xi= 0 : .5 : 10;
> yi= spline(x,y,xi);
0 1 2 3 4 5 6 7 8 9 10-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7 8 9 10-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
™ Nội suy dữ liệu hai chiều : interp2(x,y,z,xi,yi)
> [x,y]= messhgrid(-3 : .25 : 3) ;
> z = peaks(x,y);
> [xi, yi]= messhgrid(-3 : .125 : 3) ;
> zi= interp2(x,y,z,xi,yi)
> hold on
> mesh(x,y,z), mesh(xi,yi,zi)
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
9. Giải phương trình, hệ phương trình vi phân thường
™Hàm : dsolve(eq1,eq2,…,cond1,cond2,…,v)
x = cos(t)*C1+sin(t)*C2
y = -sin(t)*C1+cos(t)*C2dsolve('Dx = y', 'Dy = -x')
cos(a*t) dsolve('D2y = -a^2*y',…
'y(0) = 1', 'Dy(pi/a) = 0')
exp(a*t)*b dsolve('Dy = a*y', 'y(0) = b')
-sin(-s+C1)dsolve('(Dy)^2 + y^2 = 1','s')
-1/2*cos(t)-1/2*sin(t)+exp(t)*C1dsolve('Df = f + sin(t)')
exp(a*t)*C1 dsolve('Dy = a*y')
Kết quảVí dụ
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
™Hàm : dsolve(eq1,eq2,…,cond1,cond2,…,v)
Ví du: giải phương trình vi phân cấp hai ( )81 16cos 7y y t+ =&&
( ) ( )'0 0, 0 0y y= =Với điều kiện đầu
>y= dsolve(‘D2y+81*y=16*cos(7*t)’,’y(0)=0’,’Dy(0)=0’,’t’) ;
> t = linspace(0,2*pi,400);
>y= subs(y,t) ;
> plot(t,y)
2 2.5 3 3.5 4 4.5 5 5.5 6 6.5-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
™Hàm : dsolve(eq1,eq2,…,cond1,cond2,…,v)
Với solver tương ứng với ode45, ode32, ode113, ode15s, ode23s, ode23t, ode23tb
odefun là hàm bên vế phải của phương trình 
tspan là khoảng lấy tích phân [t0 tf] để có được nghiệm tại 
những thời điểm xác định. tspan = [t0,t1,...,tf].
y0 là vector điều kiện đầu.
Chú thích
[T,Y] = solver(odefun,tspan,y0)Cú pháp
( )' ,y f t y=
Ví du: giải phương trình vi phân thường ( ) ( )' 1y t y t+ = ( )0 0y =với
> f=inline(‘1-y’,’t’,’y’)
> [t, y]= ode45(f, [0 2],0) ;
> plot(t,y) ;
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
™Hàm : dsolve(eq1,eq2,…,cond1,cond2,…,v)
Ví du: giải phương trình vi phân cấp hai ( ) ( ) ( ) ( )2 0 siny t By t y t A tω+ +Ω =&& &
Đưa phương trình vi phân cấp hai về hệ hai phương trình vi phân cấp một
( )
1 2
2
2 0 2 1sin
y y
y A t By yω
=⎧⎨ = − −Ω⎩
&
&
> y0=[1 0];
> tspan=[0 3.5];
> B=2.5; OME=150; ome=122; A0=1000;
> [t,y]=ode45(‘f’,tspan,y0,[],B,OME,A0,ome)
> subplot(2,1,1), plot(t,y(:,1))
> subplot(2,1,2), plot(t,y(:,2))
> %%%%%%%%%%%%%%%%%%%%%
> function dy=f(t,y,flag,B,OME,A0,ome)
> dy= zeros(2,1) ;
> dy(1)=y(2);
> dy(2)=-B*y(2)-OME*y(1)+A0*sin(ome*t) ;
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
8. Lập trình với Matlab
Là Scripts tuy nhiên có thêm đối số vào (input 
arguments) và đối số đầu ra (output argument). Tất cả
các biến hoạt động trong một Workspace riêng. Biến 
trong function chỉ là biến cục bộ.
-----------------------------------------------------------------
M-file: doido.m
function rad = doido(do)
rad=do*pi/180;
function
Là hình thức đơn giản nhất của M-file, nó không có
thông số vào và ra. Là tập hợp các lệnh và hàm của 
Matlab. Tất cả các biến tạo ra trong Scripts đều có thể
sử dụng sau khi Scripts kết thúc.
-----------------------------------------------------------------
M-file: vidu.m
x= 0:0.01:2*pi;
y=sin(x);
plot(x,y);
Scripts
Matlab cho phép lập trình theo hai hình thức: SCRIPTS và function
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
8. Lập trình với Matlab
Hình thức khai báo hàm
- Từ khoá function bắt buộc phải khai báo.
- Thông số đầu ra: nếu có nhiều giá trị trả về, các thông số này được đặt trong 
dấu “[ ]”. Nếu không có giá trị trả về ta có thể để trống hay để dấu [].
- Tên hàm
-Thông số đầu vào được khai báo trong dấu ()
- Biến toàn cục và địa phương
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
8. Cấu trúc điều kiện
™ Cấu trúc điều kiện: if
if (biểu thức logic)
nhóm lệnh
end
if (biểu thức logic)
nhóm lệnh 1
else
nhóm lệnh 2
end 
Không bâ èèng~=
Bằèng nhau==
Lớùn hơn hoặëc bằèng>=
Lớùn hơn>
Nhỏû hơn hoặëc bằèng<=
Nhỏû hơn<
ÝÙ nghĩaToáùn tửû
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
8. Cấu trúc điều kiện
™ Cấu trúc điều kiện: if…end
if (biểu thức logic)
nhóm lệnh 1
elseif
nhóm lệnh 2
else
nhóm lệnh 3
end 
h=(a-b)/n và xi = a+i*h tính tích phân của 
hàm f=cos(x)+sin(x) cho a=0,b=pi/3
Bài tập
Giải thuật
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
8. Cấu trúc điều kiện
™ Cấu trúc điều kiện: switch … case
switch (biểu thức điều kiện) 
case (giá trị 1 biểu thức)
nhóm lệnh 1
otherwise 
nhóm lệnh 2
end
Ví dụ: tạo một menu lựa chọn
chon = input(‘Nhap vao lua chon cua ban, chon= ’) 
Switch chon
case 1
disp(‘menu ve do thi ’);
case 2
disp(‘menu noi suy da thuc ’);
otherwise
disp(‘thoat khoi chuong trinh ’);
end
fprintf(' \n');
fprintf('Select a case:\n');
fprintf('==============\n');
fprintf(' 1 - pi\n');
fprintf(' 2 - e \n');
fprintf(' 3 - i \n');
fprintf('==============\n');
n = input('');
switch n
case 1
disp('Pi = ');disp(pi);
case 2
disp('e = ');disp(exp(1));
case 3
disp('i = ');disp(i);
otherwise
disp('Nothing to display');
end
Ví dụ: tạo một menu lựa chọn
Select a case:
==============
1 - pi
2 - e 
3 - i 
==============
1
Pi = 
3.1416
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
8. Cấu trúc lặp có điều kiện
™ Cấu trúc lặp có điều kiện: while
while (biểu thức điều kiện) 
nhóm lệnh 
end 
Ví dụ: yêu cầu nhập vào giá trị cho biến x. 
việc nhập chỉ kết thúc khi x có giá dương
a= input(‘Nhap vao gia tri a: ’) 
while a<=0
disp(‘a lon hon khong ’);
a= input(‘Nhap vao gia tri a: ’)
end 
Bài tập
Tính tổng của chuỗi: 
TS
N
g
u
y
ễ
n
H
o
à
i
S
ơ
n
MATLAB CĂN BĂ ÛÛN
9. Cấu trúc lặp
™ Cấu trúc lặp: for
for biến = biểu thức 
nhóm lệnh 
end 
Ví dụ: viết chương trình nhập vào mười giá trị cho biến A
for i = 1 : 10
tb=strcat(‘Nhap gia tri cho A(’,num2str(i),’) = ’);
A(i)= input(‘’)
end 
A
Bài tập
Viết hàm tính giá trị trung bình và độ lệch chuẩn của dữ liệu chứa trong vec tơ hàng
x=[ x1 x2 . . . xn ] được định nghĩa theo công thức sau

File đính kèm:

  • pdfBài giảng Matlab ứng dụng - Chương 1_Matlab căn bản.pdf