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,
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:
Bài giảng Matlab ứng dụng - Chương 1_Matlab căn bản.pdf

