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