Hà Nội-2011
Tìm hiểu về Matlab
I.Giới thiệu chung về matlab
1.Lịch sử ra đờivà các ứng dụng của matlab
hÖ thèng file
II.Một số bài toán trong matlab
1.Một số phép toán cơ bản.
Matlab có thể thực hiện một số phép toán cơ bản.
Kí tự Ý nghĩa Lệnh Matlab
+ Cộng a+b a+b
- Trừ a-b a-b
* Nhân ab a*b
/ Chia phải a:b a/b
\ Chia trái b:a a\b
^ Mũ a^b a^2
Các biến trong matlab
Giống như các ngôn nhữ lập trình khác Matlab cũng có quy định chung về biến:
Ví dụ :Muốn viết 2+3 thì ta đánh dòng lệnh: >>2+3
Các phép toán được ưu tiên thực hiện từ trái qua phải
Các biến đặc biệt Giá trị
Ans Tên biến mặc định dùng để trả về kết quả
pi=3.1415….
Eps Số nhỏ nhất,như vậy cộng với 1 để được số lớn hơn 1
Flops Số của phép toán số thực
Inf Để chỉ số vô cùng kết quả của 1/0
NaN hoặc nan Dùng để chỉ số không xác định như kết quả của 0/0
i( và ) j i=j=
Nargin Số các đối số vào hàm sử dụng
Narout Số các đối số ra
Realmin Số nhỏ nhất có thể của số thực
Realmax Số lớn nhất có thể của số thực
Bạn có thể có thể tạo một biến của Matlab,và bạn có thể gán lại giá trị cho một hoặc nhiều biến
Ví dụ :
>>erases=4;
>>pads=6;
>>tape=2
>>iterms=erases+pads+tape
Iterms=
12
>>erases=6
erases=
6
Các lệnh được kết thúc bằng dấu chấm phẩy,Matlab sẽ không thể hiện kết quả trên màn hình,ngược lại không có dấu phẩy Matlab sẽ hiển kết
quả.
2.Các phép toán với ma trận và vec tơ
Để tạo một vec tơ,ta chỉ cần liệt kê các phần tử của vec tơ trong cặp dấu ngoặc vuông [… ].Giữa các phần tử ngăn cách nhau bởi dấu phẩy hoặc
dấu cách (space).
Ví dụ :Biểu diễn 1 vec tơ a :
>>a=[1 4 5 6 8 9]
Trong một số trường hợp đặc biệt có thể biểu diễn vec tơ bằng những cách khác:
Ví dụ :
Vec tơ b với các thành phần lấy giá trị nguyên từ o đến 10
>>b=0:10
b=
0 1 2 3 4 5 6 7 8 9 10
Nếu muốn các thành phần liên tiếp cách nhau 2 thì nhập :
>>c=0:2:10
c=
0 4 6 8 10
Khích thước chiều dài của vec tơ được cho nhờ hàm length
>>dai=leng(c)
dai=
6
Tính toán trên vec tơ cũng rất đơn giản.
Ví dụ : Muốn cộng 2 vec tơ có cùng độ dài
>>a=[1 2 3]
a=
1 2 3
>>b=[2 3 4]
b=
2 3 4
>>a+b
ans=
3 5 7
Đối với phép trừ cũng thực hiện tương tự.
Ma trận : Để nhập một ma trận vào Matlab giống như nhập vec tơ,ngoai trừ mỗi các hàng của ma trận phân cách nhau bằng dấu (;) hoặc enter
Ví dụ :
>>A=[1 2 3 4;5 6 7 8; 9 10 11 12]
Hay >>A=[1 2 3 4
5 6 7 8
9 10 11 12
Kích thước ma trận được cho bàng hàm size
>>size(A)
ans=
3 4
Để truy suất đến từng phần tử cả ma trận ta dùng chỉ số phần tử tương ứng :
Ví dụ : phần tử ở hàng thứ 2,cột thứ 3 là:
>>A(2,3)
Lấy tất cả các phần tử ở cột 1 :
>>A(:,1)
Chuyển vị :
>>C=B’
Nếu B là ma trận phức thì B’ cho chuyển vị của liên hopwj phức của B.Trong trường hợp này muốn lấy chuyển vị của B:
D=B.’
Nhân hai ma trận :
>>D=A*B
Nếu muốn nhân các phần tử tương ứng của ma trận có cùng kích thước :
>>E=C.*D
Nếu G là ma trận vuông thì ta có phếp nhân ma trận E với chính nó n lần thực hiện bằng phép lũy thừa :
>>G^3
Nếu muốn lũy thừa từng phần tử của ma trận :
>>G.^3
Nghịch đảo ma trận vuông :
>>inv(G)
Các trị riêng:
>>eig(G)
Đa thức đặc trưng :
>>poly(G)
Đa thức:
Các đa thức trong Matlab được mô tả bằng các vec tơ hàng với các phần tử của vec tơ chính là các hệ số của đa thức,xếp theo số mũ giảm
dần.Ví dụ,đa thức m=s^4 –s^3+4s
2
-5s-1 được biểu diễn là:
>>m=[1 -1 4 5 -1]
Để xác định giá trị của đa thức,ta dùng lệnh polyval.
Ví dụ,xác định giá trịc của đa thức tại điểm s=2 :
>>polyval(m,2)
Để xác định nghiệm của đa thức,ta dùng lệnh roots.Ví dụ :
>>roots(m)
3.Hàm số :
Matlab có một thư viện các hàm toán học rất phong phú như :sin,cos,log,exp,sqrt…
Đối số của hàm có thể là một ma trận.
Ví dụ :
x=[1 2;3 4],lệnh exp(x) trả về
ans=
2.7183 7.3891
20.0855 54.5982
Đồ thị :
Trong không gian 2 chiều :
Lệnh plot :
plot(x,f(x))
Với:
f(x)-hàm số cần vẽ
x-vec tơ miền giá trị của hàm f
Ví dụ vẽ đồ thị của hàm y=sin(x)
>>x=0:pi/100:2*pi;
>>y=sin(x);
>>plot(x,y)
Kết quả :
Để hiển thị lưới trên đồ thị :
>>grid on
Khi muốn vẽ thêm 1 đồ thị trên đồ thị hiên có ta dùng lệnh:
>>hold on để tắt chế độ này dùng hold off
Để giới hạn tọa độ của các trục :
>>axis([xmin xmax ymin ymax])
Có thể đặt nhãn cho các trục cũng như tiêu đề cho đồ thị bằng các lệnh:
xlabel ,ylabel,title,legend
Matlab hỗ trợ rất nhiều thuộc tính đồ họa.Ví dụ:
>>x=[0 1 2 3];
>>y=[0 4 1 5];
>>h=plot(x,y)
Để thấy các thuộc tính đồ họa ta dùng lệnh:
>>set(h)
Ta đặt một số thuộc tính cho h
>>set(h,’color’,’r’) đặt lại màu đỏ
>>set(h.’LineWidth’,6) đặt lại độ rộng đường
Trong không gian 3 chiều :
>>plot3(x,y,z)
Ta cần xác định các vectơ x, y, z. Để vẽ mặt (x, y, z=f(x,y)), lệnh
meshgrid(x,y) sẽ tạo ra mảng X, Y từ miền giá trị của x, y.
Ví dụ
>>t = 0:0.02*pi:25*pi;
>>x = sin(t); y = cos(t);
>>z = t;
>>plot3(x,y,z);
Vẽ mặt: với -4≤x≤4 ; -4≤y≤4
>>[x,y]=meshgrid([-4:0.1:4]);
>>z=x.*x.*y.*exp(-x.^2-y.^2);
>>plot3(x,y,z)
2 2
2 x y
z x ye
− −
=
Vẽ mặt : với
>>x=0:0.1:pi;y=0:0.1:pi;
>>[X,Y]=meshgrid(x,y);
>>Z=sin(Y.^2+X)-cos(Y-X.^2);
>>subplot(221);
>>mesh(Z);
>>subplot(222);
>>mesh(Z);
>>subplot(223);
>>mesh(x,y,Z);
>>axis([0 pi 0 pi -5 5]);
>>subplot(224);
>>mesh(Z);
>>hidden off
2 2
sin( ) os( )z y x c x y= − − −
[ ]
, 0x y ∈ − ∏
Symbolic tool box
Tên hàm Chức năng Tên hàm Chức năng
diff Đạo hàm fourier Biến đổi fourier
Int Tích phân Ifourier Biến đổi fourier ngược
Taylor Khai triển taylor Iaplace Biến đổi Laplace
Det Định thức của ma trận Laplace Biến đổi laplace ngược
Numden Tử và mẫu của phân số Ezplot Vẽ hàm ,=plot
Subs Thay biến sym bằng trị số Ezpolar Vẽ hàm ,tọa độ cực =polar
dsolve Giải phương trình Ezmesh Vẽ mặt lưới=mesh
Để biến đổi một số,một biến hay một đối tượng nào đó thành kiểu Symbolic ta có thể sử dụng một trong các cách sau:
>>s=sym(A)
>>x=sym(x)
>>syms x y z %khai báo biến kết hợp x,y và z là biến symbolic
Tính đạo hàm diff của symbolic:nếu s là biểu thức symbolic thì:
diff(s) đạo hàm của biến của s theo biến tự do
diff(s,’v’) đạo hàm của s theo biến v
diff(s,’v’,n) đạo hàm cấp n của s theo v
Ví dụ :
Tính đạo hàm y=sinx
3
>>syms x %khai báo x là biến kiểu symbolic
>>y=sin(x^3);
>>z=diff(y) %đạo hàm của y
z=
3*cos(x^3)*x^2 %sinh viên kiểm tra kết quả
>>pretty(z) % hiện thị dạng quen thuộc
3cos(x
3
)x
2
>>ezplot(x,y) %vẽ y theo x
Tính vi phân bằng hàm int –nếu s là biểu thức symbolic thì :
int(s) tích phân không xác định của s theo biến mặc nhiên (muốn biết biến mặc nhiên này ta dùng hàm findsym).
int(s,v) tích phân không xác định của s theo v
int(s,a,b) tích phân xác định của s trên cận [a,b]
int(s,v,a,b) tích phân xác định của s theo v trên cận [a,b]
Ví dụ: Tính
>>syms x
>>s=2*x^2*(19+12*x^2)/(7*(x^2+1))
>>y=int(s,x,y,0,1) % tích phân s theo c tren cận [0,1]
>>subs(y) %đổi sang kiểu số
Giải hệ phương trình bàng hàm solve :
>>syms x y
>>[x,y]=solve(‘x^2*sin(x^2)-3*y=7’,’x+y=1’)
Vẽ mặt 3D bằng hàm ezsurf .Ví dụ vẽ mặt s=f(x,y)= trên miền xác định :-5≤x<5 ; -2 <y<2
>>syms x y
>>s=y/(1+x^2 +y^2)
>>ezsurf(s,[-5 5 -2*pi 2*pi])
2 2
2 19 12
1
2
7 1
0
x x
dx
x
÷
÷
+
∫
+
2 2
1
y
x y+ +
∏
∏
Simulink
Cho phép phân tích,mô hình hóa và mô phỏng các hệ thống tuyến tính và phi tuyến,liên tục và rời rạc một cách trực quan trong môi trường giao
tiếp đồ họa,bằng các thao tác chuột đơn giản.
Khởi động simulink bằng một trong các cách sau
nhập : >>simulink22
hoặc nhấp chuột vào biểu tượng trên menubar của Matlab
Thư viện simulink hiện ra
Để tạo mô hình simulink :
-Nhấp chuột vào biểu tượng của thư viện simulink
-Chọn File –New-Model trong menu của thư viện Simulink
-chọn File-New-Model trong của sổ lệnh của matlab.
Cửa sổ soạn thảo của simulink cho phép ta ‘nhấp-kéo –thả’ vào từng khối chức năng trong thư viện simulink.Ví dụ,đặt vào đây khối ‘Sine Wave’
trong thư viện của
Lấy 1 khối từ thư viện
Sau khi đặt tất cả các khối cần thiết của mô hình,nối chúng lai bằng các ‘nhấp-giữ’ và kéo một đường từ ngõ ra của khối này vào của khối
khác rồi thả phím trái chuột,một kết nối sẽ thiết lập
Ví dụ : Xây dựng mô hình hệ thống xe tải
m
F
bv
Cho bởi phương trình : m.(dv/dt)=F-bv hay dv/dt=1/m(F-bv).
Trong đó : m-khối lượng xe
F-lực tác động của động cơ
b-hệ số ma sát
v-vận tốc đạt được
Như vậy : m,F:Ngõ vào của mô hình ; b,v:ngõ ra của mô hình
v
a