Giáo trình tính toán khoa học - Chương 9 potx

17 497 0
Giáo trình tính toán khoa học - Chương 9 potx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương ĐỒ HỌA TRONG MATLAB 9.1 ĐỒ HỌA HAI CHIỀU Rất nhiều toán khoa học, kĩ thuật kinh tế cần diễn giải phân tích để rút thông tin liên quan Đặc biệt hầu hết lĩnh vực mơ q trình khoa học công nghệ phải đối mặt với tập liệu lớn mà phân tích mà thiếu phần mềm biểu diễn liệu Trong phần nghiên cứu công cụ biểu diễn liệu hai chiều trình biến đổi liệu theo thời gian Trong chương trước, làm quen với số lệnh vẽ đồ thị chiều như: plot, xlabel, ylabel, text, gtext, loglog, semilogx, semilogy, axis, grid on, hold on, figure legend 9.1.1 Hệ toạ độ Semilogarithm Các thủ tục loglog,semilogx, semilogy thích hợp tập liệu biến đổi lớn, đặc biệt trình biến đổi (tiệm cận) theo hàm mũ, hàm luỹ thừa Thí dụ Vẽ đồ thị hàm f ( x)  x  ex Hình 9.1 Vẽ đồ thị hàm f ( x)  228 plot semilogy: x  ex hàm PLOT Hình 9.2 Vẽ đồ thị hàm f ( x)  x  ex hàm SEMILOGY 9.1.2 Hệ toạ độ cực Trong số ứng dụng, việc mơ tả tốn hệ toạ độ có lợi mơ tả liệu toạ độ Đề-các chuẩn Nó tạo cho ta cảm giác quan sát liệu từ hệ toạ độ xác định Một hệ toạ độ hệ toạ độ cực, liệu được cho khoảng cách từ cực góc vector bán kính với trục cố định Thí dụ nghiên cứu tốc độ thuyền buồm chịu ảnh hưởng tốc độ hướng gió y M (x,y) (r, ) r  O x Hình 9.3 Hệ tọa độ Đề hệ tọa độ cực  Hàm POLAR Cú pháp: polar (Theta, R,Symbol) 229  Giải thích Hàm POLAR vẽ đồ thị hàm số hệ tọa độ cực - Theta : vector trị số góc từ trục cố định đến bán kính, đơn vị đo radian; - R : giá trị hàm R=R(Theta) ; - Symbol xâu qui định kiểu vẽ (xem plot) Thí dụ >> t = 0:.01:2*pi; >> polar(t,sin(2*t).*cos(2*t),' r') Hình 9.4 Vẽ đồ thị hàm số hàm POLAR 9.1.3 Lưu trữ đồ thị Có thể lưu trữ đồ thị vào file in đồ thị hàm PRINT Cú pháp: print [-driver] [-options] [ filename] Giải thích print : in đồ thị máy in mặc định; print –f2 hay print(2) : in đồ thị figure (2); print : lưu đồ thị dạng file PostScript, mặc định *.ps  Tham số driver: thường bắt đầu chữ ‘-d’ -dwin : đưa figure máy in đen trắng; -dwinc : đưa figure máy in màu; -dbitmap : đưa figure vào clipboard dạng Bitmap file; 230 : đưa figure vào clipboard dạng JPEG image với chất lượng nn (mặc định nn=75) -dps : đưa figure vào file PostScript (*.ps) dùng cho máy in đen trắng; -dpsc : đưa figure vào file PostScript (*.ps) dùng cho máy in màu; -deps : đưa figure vào file Encapsulated PostScript (*.eps) dùng máy in đen trắng; -depsc : Đưa figure vào file Encapsulated PostScript (*.eps), máy in màu  Tham số options: sử dụng cho PostScript driver -append : thực append, không overwrite PostScript file; -r : xác định độ phân giải dpi cho hình vẽ Mặc định -r150 Thí dụ >> print -depsc -r300 Matine %% Lưu Figure với độ phân giải %% 300 dpi vào file Matine.eps Có thể sử dụng lệnh print gọi hàm: print(‘-device’,’-options’,’ filename’) Thí dụ >> print(‘-depsc’,’-r300’,’Matin’) -djpeg 9.1.4 Biểu đồ (Bar chats) Khi xử lí liệu thống kê, biểu diễn chúng dạng biểu đồ hàm BAR đồ thị chiều Các phương án sử dụng hàm BAR: bar(X,Y) : vẽ biểu đồ cột ma trận Y cỡ M×N M nhóm liệu N số liệu Vector X phải đơn điệu tăng giảm bar(Y) : mặc định X 1:M bar(X,Y,width) bar(Y,width) : width xác định độ rộng cột biểu đồ Mặc định width 0.8 Nếu width > cột biểu đồ chồng ken vào bar(X,Y,'grouped') : vẽ biểu đồ theo nhóm cột đứng (mặc định) bar(X,Y,'stacked') : vẽ biểu đồ theo nhóm xếp đống Thí dụ >> Y=hilb(10); y=Y([1:3],[1:2:9]); >> figure(1), bar(y); >> xlabel(‘ Truc I’);ylabel(‘Truc J’); >> figure(2), bar(y,’stacked’); >> xlabel(‘ Truc I’);ylabel(‘Truc J’); 231 Figure Hình 9.5 Đồ thị bar ‘group’ Figure Hình 9.6 Đồ thị bar ‘stacked’ 9.1.5 Biểu diễn sai số ( Error Bars) Khi xử lí liệu, ta thường quan tâm đến mức độ thiếu xác chúng dung sai thiết bị hay khơng hồn hảo mơi trường thực nghiệm Để mơ tả sai số sử dụng hàm ERRORBAR 232  Các phương án sử dụng: errorbar(X,Y,L,U) : Vẽ đồ thị vector Y vector X với khoảng sai số xác định vector L U L U chứa sai số giới hạn phần tử Y Mỗi ERRORBAR có độ cao L(i) + U(i) vẽ doạn thẳng Các vector X,Y,L U phải cỡ errorbar(X,Y,E) hay errorbar(Y,E): Vẽ đồ thị vector Y với ERRORBAR có độ cao L(i) + U(i) vẽ doạn thẳng Các vector đối xứng L=U=E Thí dụ >> x = 1:10; y = sin(x); >> e = std(y)*ones(size(x)); >> errorbar(x,y,e); % Vẽ errorbar với độ lệch chuẩn đối xứng Hình 9.7 Đồ thị ERRORBAR 9.2 MỘT SỐ HÀM ĐỒ HỌA CHIỀU Trong chương trước ta làm quen với số thủ tục hàm liên quan đến đồ thị chiều như: plot3, view Sau số hàm vẽ đồ thị chiều khác: 9.2.1 Hàm CONTOUR Cú pháp: contour(Z) contour(Z,N) contour(Z,V) 233 contour(X,Y,Z) contour(X,Y,Z,n) contour(X,Y,Z,V) contour( ,'linespec') [C,H] = contour( ) Giải thích Hàm CONTOUR vẽ đồ thị đường mức chiều contour(Z): Vẽ đồ thị đường mức ma trận Z, xem độ cao so với mặt phẳng Các giá trị V độ cao đường mức chọn tự động contour(X,Y,Z): X Y xác định toạ độ (x,y) mặt mức Z=F(X,Y) (Như SURF) contour(Z,N) contour(X,Y,Z,N): vẽ N đường mức lồng với giá trị độ cao chọn tự động contour(Z,V) contour(X,Y,Z,V): vẽ N = length(V) đường mức với giá trị độ cao xác định vector V [C,H] = contour( ), C = contour( ): Trả ma trận C contourc vector cột h điều khiển đối tượng LINE PATCH (mảnh) Cả hai đối tượng sử dụng làm tham số clabel Màu đường mức màu chuẩn đồ contour( ,'linespec'): Vẽ đối tượng LINE với màu kiểu đường xác định linespec Sử dụng mã R Pawlowicz để quản lý tham số mặt nhãn đường mức Thí dụ >> [C,H] = contour(peaks(20),10); colormap autumn Hình 9.8 Đồ thị CONTOUR 234 9.2.2 Hàm CONTOUR3 Cú pháp: contour3(Z) contour3(Z,N) contour3(Z,V) contour3(X,Y,Z) contour3(X,Y,Z,n) contour3(X,Y,Z,V) contour3( ,'linespec') [C,H] = contour3( ) Giải thích Hàm CONTOUR3 vẽ đồ thị contour chiều contour3( ) có tham số giống contour( ),chỉ khác cách vẽ tương ứng với mức Z tương ứng hệ trục 3-D Thí dụ [X,Y] = meshgrid([-2:.25:2]); Z = X.*exp(-X.^2-Y.^2); contour3(X,Y,Z,30); surface(X,Y,Z,'EdgeColor',[.8 8],'FaceColor','none'); grid off; view(-15,25); colormap cool; Hình 9.9 Đồ thị CONTOUR3 235 9.2.3 Hàm CLABEL Cú pháp: clabel(cs,h) clabel(cs,h,V) Giải thích Hàm CLABEL gắn nhãn cho đường mức clabel(cs,h) : Gắn nhãn độ cao cho đồ thị contour thời Các nhãn xoay chèn vào đường mức cs h ma trận tính tốn từ đói tượng điều khiển CONTOUR, CONTOUR3 hay CONTOURF clabel(cs,h,V) : Chỉ gắn nhãn cho đường mức cho vector V Mặc định gắn nhãn cho tất đường mức Vị trí gắn nhãn chọn ngẫu nhiên clabel(cs,h,’manual’) : Gắn nhãn vị trí nháy (click) chuột Kết thúc phím Enter nháy chuột đồ thị h = clabel( ) : Trả giá trị chế độ gắn nhãn dạng text 9.2.4 Hàm PEAKS Cú pháp: Z = peaks : Tạo ma trận cỡ 49×49; Z = peaks(N) : Tạo ma trận cỡ N×N; Z = peaks(V) : Tạo ma trận cỡ N×N, với N=length(V); Z = peaks(X,Y) : Hàm Z tính theo X Y X, Y Z có cỡ Giải thích PEAKS hàm mẫu biến để minh hoạ cho thủ tục vẽ đồ thị Khi gọi peaks, peaks(N), peaks(V) hay peaks(X,Y) Matlab vẽ đồ thị dạng SURF từ hàm PEAKS Thí dụ clear ; p=peaks(30); cs=contour(p,10); clabel(cs,’manual’); grid on; Thí dụ 10 >> peaks z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) - 1/3*exp(-(x+1).^2 - y.^2) 236 Hình 9.10 Đồ thị CONTOUR hàm PEAKS tác dụng CLABEL Hình 9.11 Đồ thị SURF hàm PEAKS 9.2.5 Các mặt tham số Xét mặt cong, toạ độ điểm mặt cong phụ thuộc vào tham số Thí dụ mặt cong xác định sau: x = f(,), y =g(,), z =h(,), tham số   xác định khoảng Chẳng hạn, mặt cầu viết dạng tham số sau: x = R coscos , y = R sincos 237 z= R sin Những mặt phức tạp xây dựng theo cách Chúng ta cấu trúc mặt cong cách xoay đường cong quanh điểm cố định Phương trình Hình có dạng: r = a sin3 , [0,2], với r khoảng cách tính từ gốc toạ độ a độ dài Các tham số toạ độ cực dễ dàng chuyển sang toạ độ Đề các: x= r cos= a sin3cos, y =r sin = a sin3sin Tiếp theo ta chuyển Hình xa gốc toạ độ khoảng cách R quay trịn hình quanh trục z Khi ta có: x= (R + a sin3 cos) sin y= (R + a sin3cos)cos z= asin3sin  9.2.5 Hàm MESH: Vẽ đồ thị màu dạng lưới 3-D  Các phương án sử dụng: mesh(X,Y,Z,C): vẽ đồ thị dạng lưới xác định ma trận X, Y, Z, C Điểm quan sát xác định VIEW Phạm vi trục toạ độ xác định phạm vi X, Y, Z Các ma trận X Y phải có cỡ với Z, nút lưới ba (X(i,j),Y(i,j), Z(i,j)) Thang màu xác định C xác định giá trị hàm CAXIS , thị COLORMAP mesh(X,Y,Z): sử dụng C = Z, nghĩa màu tỉ lệ với chiều cao mesh(x,y,Z) mesh(x,y,Z,C): x, y vector với length(x) = n, length(y) = m [m,n] = size(Z) Khi nút lưới ba (x(j), y(i), Z(i,j)) Chú ý: x tương ứng với cột ma trận Z , y tương ứng với hàng ma trận Z mesh(Z) mesh(Z,C): sử dụng giá trị mặc định x =1:n y =1:m với [m,n] = size(Z) h = mesh(…): trả tham số điều khiển đối tượng SURFACE Chú ý: Các hàm AXIS, CAXIS, COLORMAP, HOLD, HIDDEN VIEW SHADING xác định thuộc tính hình vẽ, trục toạ độ, bề mặt cong, màu sắc cho hàm MESH Thí dụ 11 Vẽ đồ thị mặt cong tham số phương trình trên: % MATLAB code demontrating cropping surfaces clear colormap(aquamarine); n=50; phi=[ 0:2*pi/n:2*pi]; 238 psi=[ 0:2*pi/n:2*pi]; R = ; r = ; a = 0.5 ; for i=1:length(phi) for j =1:length(psi) z(i,j) = (r + a*sin(6*psi(j)))*sin(phi(i)); y(i,j) = R*sin(psi(j)) + (r + a*sin(6*psi(j)))*cos(phi(i))*sin(psi(j)); x(i,j) = R*cos(psi(j)) + (r + a*sin(6*psi(j)))*cos(phi(i))*cos(psi(j)); c(i,j) =0.8; end; end; mesh(x,y,z,c); axis([-7 -7 -7 7]); axis('square'); Hình 9.12 Đồ thị dạng MESH mặt cong 9.2.6 Hàm SURF: Vẽ đồ thị màu dạng mặt cong 3-D  Các phương án sử dụng: surf(X,Y,Z,C): vẽ đồ thị dạng mặt cong xác định ma trận X, Y, Z, C Điểm quan sát xác định VIEW Phạm vi trục toạ độ xác định phạm vi X, Y, Z Các ma trận X Y phải có cỡ với Z Các điểm mặt tương ứng ba (X(i,j),Y(i,j), Z(i,j)) Thang màu xác định C xác định giá trị hàm CAXIS , thị COLORMAP 239 surf(X,Y,Z): sử dụng mặc định C = Z, nghĩa màu tỉ lệ với chiều cao surf(x,y,Z) SURF(x,y,Z,C): x, y vector với length(x)=n, length(y)=m [m,n] = size(Z) Khi đỉnh màu ba (x(j), y(i), Z(i,j)) Chú ý x tương ứng với cột ma trận Z , y tương ứng với hàng ma trận Z surf (Z) surf (Z,C): sử dụng giá trị mặc định x = 1:n y = 1:m, với [m,n] = size(Z) h =surf (…): trả tham số điều khiển đối tượng SURFACE Chú ý: Các hàm AXIS, CAXIS, COLORMAP, HOLD, HIDDEN VIEW SHADING xác định thuộc tính hình vẽ, trục toạ độ, bề mặt cong, màu sắc cho hàm SURF Thí dụ 11 clear ; colormap(gray); % Xác định thang màu cho đồ thị n=65; theta =pi*[-n:2:n]/n; phi=(pi/2)*[-n:2:n]'/n; R = 5; X= R*cos(phi)*cos(theta); Y=R*cos(phi)*sin(theta); Z=R*sin(phi)*ones(size(theta)); [xd,yd,C]=peaks(n); cmax=max(max(C)); cmin=min(min(C)); C = (C-cmin*ones(size(C)))/(cmax-cmin); surf(X,Y,Z,C); axis([ -11 11 -11 11 -11 11]);axis('square'); phi = [ 0:2*pi/n:2*pi]; psi=phi; R=9; r =1.5; for i=1:length(phi) for j=1: length(psi) z(i,j)= r/10*sin(phi(i)); y(i,j)=R*sin(psi(j))+ r*cos(phi(i))*sin(psi(j)); x(i,j)=R*cos(psi(j))+ r*cos(phi(i))*cos(psi(j)); 240 c(i,j) = 1; end; end; hold on; surf(x,y,z,c); hold off; view([120 25]); grid on; xlabel(' X'); ylabel(' Y');zlabel('Z'); Hình 9.13 Minh họa đồ thị dạng SURF mặt cong thí dụ 12 Thí dụ 13 clear ; colormap(gray); n=65; theta =pi*[-n:2:n]/n; phi = [ 0:2*pi/n:2*pi]; psi=phi; R = 5; a=1; for i=1:length(phi) for j=1: length(psi) z(i,j)= -a*sin(3+phi(i))*sin(phi(i));; y(i,j)=(R+a*sin(3*phi(i))*cos(phi(i)))*cos(psi(j)); x(i,j)=(R+a*sin(3*phi(i))*cos(phi(i)))*sin(psi(j)); 241 c(i,j) = 0.8; end; end; mesh(x,y,z,c); xoff =R; for i=1:length(phi) for j=1: length(psi) y(i,j)= a*sin(3+phi(i))*sin(phi(i));; z(i,j)=(R+a*sin(3*phi(i))*cos(phi(i)))*cos(psi(j)); x(i,j)=xoff+(R+a*sin(3*phi(i))*cos(phi(i)))*sin(psi(j)); c(i,j) = 0.8; end end; hold on; mesh(x,y,z,c); grid on; axis([ -6 10 -6 10 -6 10]);axis('square'); hold off; view([-20 25]); xlabel(' X'); ylabel(' Y');zlabel('Z'); Hình 9.14 Minh họa đồ thị dạng SURF mặt cong thí dụ 13 242 9.3 HOẠT HÌNH  Thủ tục MOVIE Cú pháp: movie(M,N,fps) Giải thích Thủ tục MOVIE trình chiếu khn hình (frame) movie(M): biểu diễn dãy M lần M phải dãy khn hình thường tạo lệnh GETFRAME movie(M,N): biểu diễn N lần Nếu N>movie(M,15,10); %% Biểu diễn lặp lại 15 lần với 10 hình/giây Hình 9.15 Chiếc vòng tròn chuyển động quanh vòng tròn lớn Chương trình (Hàm PEAKS chuyển động nhấp nhơ tạo hình sóng) clear ; n=32; for j=1:n mesh(cos(2*pi*j/n)*peaks(30)); axis([0 30 30 -10 10]); axis('square');grid on; M(:,j)=getframe; end 244 ... peaks z = 3*(1-x).^2.*exp (-( x.^2) - (y+1).^2) - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) - 1/3*exp (-( x+1).^2 - y.^2) 236 Hình 9. 10 Đồ thị CONTOUR hàm PEAKS tác dụng CLABEL Hình 9. 11 Đồ thị SURF... trục 3-D Thí dụ [X,Y] = meshgrid( [-2 :.25:2]); Z = X.*exp(-X.^2-Y.^2); contour3(X,Y,Z,30); surface(X,Y,Z,''EdgeColor'',[.8 8],''FaceColor'',''none''); grid off; view (-1 5,25); colormap cool; Hình 9. 9 Đồ... c(i,j) =0.8; end; end; mesh(x,y,z,c); axis( [-7 -7 -7 7]); axis(''square''); Hình 9. 12 Đồ thị dạng MESH mặt cong 9. 2.6 Hàm SURF: Vẽ đồ thị màu dạng mặt cong 3-D  Các phương án sử dụng: surf(X,Y,Z,C):

Ngày đăng: 11/07/2014, 09:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan