BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 150 MỤC LỤC Chương 4. Đồ họa trong Matlab........................................................................ 151 GIỚI THIỆU.......................................................................................................... 151 MỤC TIÊU CỦA CHƢƠNG................................................................................ 151 NỘI DUNG CỦA CHƢƠNG ............................................................................... 151 4.1. Các lệnh làm việc với cửa sổ đồ thị ........................................................... 151 4.2. Đồ họa trong hệ tọa độ phẳng (2D)............................................................ 152 4.2.1. Kiểu đƣờng, màu sắc, kiểu điểm......................................................... 152 4.2.2. Một số lệnh vẽ thƣờng dùng ............................................................... 153 4.2.3. Thiết lập các tham số cho đồ thị.......................................................... 162 4.3. Đồ họa trong không gian 3 chiều (3D) ...................................................... 168 4.3.1. Lệnh vẽ plot3....................................................................................... 168 4.3.2. Vẽ đồ thị hàm hai biến ........................................................................ 169 4.3.3. Thiết lập tham số cho đồ thị................................................................ 171 4.3.4. Chỉnh sửa đồ thị dùng menu ............................................................... 173 BÀI TẬP................................................................................................................ 175 TÀI LIỆU THAM KHẢO..................................................................................... 176 BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 151 Chương 4. Đồ họa trong Matlab GIỚI THIỆU Matlab là một công cụ có nhiều thế mạnh, một trong những thế mạnh của nó là có khả năng lập trình đồ họa, có thể vẽ các loại đồ thị ở nhiều dạng khác nhau, góc nhìn khác nhau, có thể vẽ trong không gian 2D và 3D. Có thể vẽ nhiều đồ thị trên một hệ trục tọa độ hay nhiều cửa sổ đồ thị trong cùng một màn hình,… MỤC TIÊU CỦA CHƢƠNG Giải quyết các bài toán về đồ thị trong không gian 2D, 3D. NỘI DUNG CỦA CHƢƠNG 4.1. Các lệnh làm việc với cửa sổ đồ thị 1. Lệnh tạo cửa sổ để vẽ đồ thị Để vẽ đồ thị, ta cần mở cửa sổ đồ thị bằng lệnh sau: + Cách 1: tại dấu nhắc cửa sổ lệnh, gõ: >> figure + Cách 2: mở menu File của MATLAB > chọn New > chọn Figure Khi đó, màn hình vẽ đồ thị hiện ra nhƣ sau: Chú ý: nếu cửa sổ đồ thị đang mở, ta có thể tạo cửa sổ mới nhƣ sau: mở menu File của cửa sổ đồ thị > chọn New > chọn Figure. 2. Ghi đồ thị Để ghi đồ thị, trên giao diện của cửa sổ đồ thị, ta thực hiện: + Cách 1: nhấn nút (Save Figure) BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 152 + Cách 2: mở menu File > nhấn Save + Cách 3: ấn tổ hợp Ctrl + S Khi đó, một hộp thoại hiện ra cho phép ta chọn thƣ mục cần ghi, gõ tên tệp cần ghi (tên tệp không được chứa dấu cách, có phần mở rộng là .fig) và nhấn nút Save. 3. Xóa cửa sổ đồ thị Để xóa cửa sổ đồ thị, tại dấu nhắc cửa sổ lệnh, gõ: >> clf 4. Đóng cửa sổ đồ thị Để đóng cửa sổ đồ thị, ta làm nhƣ sau: + Cách 1: tại dấu nhắc cửa sổ lệnh, gõ: >> close + Cách 2: tại cửa sổ đồ thị, mở menu File > chọn Close + Cách 3: để đóng tất cả cửa sổ đồ thị, tại dấu nhắc lệnh, gõ: >> close all 4.2. Đồ họa trong hệ tọa độ phẳng (2D) 4.2.1. Kiểu đường, màu sắc, kiểu điểm MATLAB cho phép chúng ta thiết lập kiểu đƣờng, màu sắc, kiểu điểm cho đồ thị, cụ thể nhƣ sau: 4.2.1.1. Kiểu đường: + Nét liền () (dấu trừ) + Nét đứt () (hai dấu trừ liền nhau) + Nét chấm (:) (dấu hai chấm) + Nét gạch chấm (.) (dầu trừ và dấu chấm liền nhau) 4.2.1.2. Màu sắc: có các mã màu sau đây: + Màu đỏ (r red) + Màu xanh lá cây (g green) + Màu xanh biển (b blue) + Màu lục lam (c cyan) + Màu tím (m magenta) + Màu vàng (y yellow) + Màu đen (k black) + Màu trắng (w white) 4.2.1.3. Kiểu điểm: + Dấu chấm (.), chữ o (o), chữ x (x), dấu cộng (+), dấu sao () + Hình vuông (s square) + Hình kim cƣơng (d diamond) BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 153 + Hình tam giác quay lên (), xuống (v), trái () + Hình sao 5 cánh (p pentagram) + Hình sao 6 cánh (h hexagram) 4.2.2. Một số lệnh vẽ thường dùng 4.2.2.1. Lệnh vẽ plot 1. Cú pháp: plot(x, y) plot(x, y, s) 2. Ý nghĩa: + Dạng 1: vẽ đồ thị của một hàm số, trong đó x là vector đối, y là vector hàm. + Dạng 2: vẽ tƣơng tự Dạng 1, nhƣng có quy định kiểu đƣờng, màu sắc, kiểu điểm trong xâu s. 3. Ví dụ: viết các lệnh vẽ đồ thị hàm số y = cos(x), với x 3pi, 3pi và bƣớc nhảy là 0.1. (tạo hàm cos(x)) Sau đó, nếu dùng lệnh: >> plot(x,y), ta có : Nếu dùng lệnh : >> plot(x, y, ‘r’), ta có: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 154 Hay dùng lệnh : >> plot(x, y, ‘mo:’), ta có: Chú ý: lệnh plot còn cho phép vẽ nhiều đồ thị cùng lúc, theo cú pháp sau: plot(x1, y1, x2, y2,…) plot(x1, y1, s1, x2, y2, s2,…) Ví dụ: Viết chƣơng trình dạng script vẽ hai đồ thị hàm số sin (x) và cos(x) trong khoảng trục x nhƣ trên: Kết quả là: Hoặc chúng ta có thể dùng lệnh plot vẽ lần lƣợt từng đồ thị, nhƣng dùng thêm lệnh hỗ trợ, đó là: hold on, thì kết quả vẫn vẽ đƣợc hai đồ thị cùng lúc nhƣ trên. Chƣơng trình cụ thể nhƣ sau: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 155 4.2.2.2. Vẽ đường thẳng 1. Cú pháp: line(x, y) 2. Ý nghĩa: vẽ đƣờng thẳng với tọa độ là các phần tử trong vector x và y 3. Ví dụ: vẽ tam tam giác bằng cách nối 3 điểm (1,2), (6,4) và (9,3) với nhau: hoặc 4.2.2.3. Vẽ hình chữ nhật 1. Cú pháp: rectangle(‘position’, x y w h) 2. Ý nghĩa: vẽ hình chữ nhật có tọa độ của đỉnh góc trái dƣới là (x, y), có chiều rộng là w, chiều cao là h với „position‟ là từ khóa. 3. Ví dụ: vẽ hai hình chữ nhật “đựng” nhau: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 156 4.2.2.4. Lệnh vẽ dạng thanh 1. Cú pháp: bar(x,y) 2. Ý nghĩa: vẽ đồ thị dạng thanh (bar) của hàm số y = f(x) trong mặt phẳng với x là vector đối và y là vector hàm. 3. Ví dụ: vẽ đồ thị dạng thanh của hàm sin(x), với x , : 4.2.2.5. Lệnh vẽ dạng tròn 1. Cú pháp : pie(x , tách , nhãn) BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 157 2. Ý nghĩa: vẽ đồ thị hình quạt tròn (pie) dƣới dạng tỉ lệ phần trăm theo các giá trị của thành phần của vector x. + Tham số “tách”: là một vector (có cùng kích thƣớc với vector x) có giá trị 1 hoặc 0. Nếu bằng 1: các phần rời nhau ra, bằng 0: không rời. + Tham số “nhãn”: là vector kiểu xâu (có cùng kích thƣớc với x), biểu thị nhãn các giá trị. 3. Ví dụ:vẽ đồ thị dạng tròn, không tách: hoặc Vẽ đồ thị dạng tròn, có tách một số phần: hoặc Vẽ đồ thị dạng tròn, có tách một số phần, có nhãn: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 158 hoặc: 4.2.2.6. Lệnh vẽ dạng vùng 1. Cú pháp: area(x, y) 2. Ý nghĩa: vẽ đồ thị dạng vùng (area) với x là vector biến, y là vector hàm. 3. Ví dụ:vẽ đồ thị dạng vùng của hàm sin(x), với x 3, 3: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 159 4.2.2.7. Lệnh vẽ dạng bậc thang 1. Cú pháp: stairs(x, y) 2. Ý nghĩa: vẽ đồ thị dạng bậc thang (stair), với x, y tƣơng ứng là vector đối và vector hàm. 3. Ví dụ:vẽ đồ thị dạng bậc thang của hàm sin(x), với x 3, 3: 4.2.2.8. Lệnh vẽ dạng rời rạc 1. Cú pháp: stem(x, y) 2. Ý nghĩa: vẽ đồ thị dạng rời rạc, với x, y tƣơng ứng là vector đối và vector hàm. BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 160 3. Ví dụ: vẽ đồ thị dạng rời rạc của hàm sin(x), với x 3, 3: 4.2.2.9. Lệnh vẽ dạng tọa độ cực 1. Cú pháp: polar(theta,r) 2. Ý nghĩa: vẽ đồ thị trong hệ tọa độ cực theo góc theta, bán kính r. 3. Ví dụ: vẽ đồ thị hàm số r = sin(), với = : BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 161 Vẽ đồ thị hàm số: r = |sin(3) + cos (3)|, với = 2: 4.2.2.10. Lệnh tô màu miền 1. Cú pháp: fill(x, y, ‘màu’) 2. Ý nghĩa: vẽ đa giác với các đỉnh là các phần tử của vector x, y và đƣợc tô „màu‟, trong đó „màu‟ tuân theo bảng màu ở lệnh plot. 3. Ví dụ: vẽ hình ngũ giác, tô màu xanh lá cây: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 162 4.2.3. Thiết lập các tham số cho đồ thị 4.2.3.1. Lệnh tạo lưới 1. Cú pháp: grid onoff 2. Ý nghĩa: tạohủy lƣới cho đồ thị 3. Ví dụ: vẽ đồ thị hàm cos(x), có lƣới, : thi ta có kết quả là: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 163 Chú ý: lệnh grid on phải đặt sau các lệnh vẽ mới có tác dụng. 4.2.3.2. Lệnh tạo tiêu đề 1. Cú pháp: xlabel(‘Nội dung tiêu đề’) (1) ylabel(‘Nội dung tiêu đề’) (2) title(‘Nội dung tiêu đề’) (3) 2. Ý nghĩa: + Dạng (1): tạo tiêu đề cho trục x + Dạng (2): tạo tiêu đề cho trục y + Dạng (3): tạo tiêu đề cho đồ thị 3. Ví dụ: Với Ví dụ trên, ta thêm các lệnh tạo tiêu đề nhƣ dƣới đây: Thì kết quả là: 4.2.3.3. Thiết lập phạm vi cho trục x, trục y 1. Cú pháp: axis(xmin,xmax,ymin,ymax) (1) axis onoffsquarenormal… (2) xlim( xmin, xmax); (3) ylim( ymin, ymax); (4) 2. Ý nghĩa: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 164 + Dạng (1): thiết lập giới hạn cho trục x (từ xmin > xmax) và trục y (từ ymin > ymax). + Dạng (2): axis on: bật các trục axis off: tắt các trục axis square: thay đổi tỷ lệ 2 trục để có cửa sổ hình vuông axis normal: quay về cửa sổ thông thƣờng,… + Dạng (3): thiết lập giới hạn cho chỉ trục x + Dạng (4): thiết lập giới hạn cho chỉ trục y 3. Ví dụ: Với một trong hai cách viết sau: Ta có kết quả: 4.2.3.4. Thiết lập nhãn cho trục x, trục y 1. Cú pháp: set(gca, ’XTickLabel’, ) (1) set(gca, ’YTickLabel’, ) (2) 2. Ý nghĩa: thiết lập nhãn cho trục x (lệnh 1) và trục y (lệnh 2) 3. Ví dụ: Với chƣơng trình nhƣ sau: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 165 Ta có kết quả chạy chƣơng trình: 4.2.3.5. Lệnh tạo chú thích 1. Cú pháp: legend(‘chú thích 1’, ‘chú thích 2’,…, ‘chú thích n’) 2. Ý nghĩa: đƣa ra n chú thích lần lƣợt cho n đồ thị. 3. Ví dụ: vẽ hai đồ thị của hai hàm sin(x) và cos(x) trên cùng hệ trục tọa độ, có chú thích cho mỗi hàm. BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 166 4.2.3.6. Lệnh hiển thị xâu trên đồ thị 1. Cú pháp: text(x, y, ‘xâu ký tự’) 2. Ý nghĩa: hiển thị „xâu ký tự‟ ở vị trí (x, y). 3. Ví dụ: vẽ lục giác đều, tô màu lục lam (cyan), có hiển thị xâu trên đồ thị. 4.2.3.7. Vẽ nhiều hệ tọa độ trên cùng một cửa sổ BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 167 1. Cú pháp: subplot(m, n, p) subplot(mnp) subplot mnp 2. Ý nghĩa: chia cửa sổ đồ thị thành bảng có m hàng, n cột hệ trục tọa độ và chọn hệ trục thứ p để vẽ. 3. Ví dụ: >> subplot(2,3,3) % tạo ra 6 hệ trục tọa độ và chọn hệ trục thứ 3 để vẽ: + Vẽ 4 đồ thị của 4 hàm y=sin(x) trên 4 hệ trục tọa độ với các dạng vẽ khác nhau: dạng plot, dạng thanh (bar), dạng vùng (area) và dạng tọa độ cực (polar): BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 168 4.3. Đồ họa trong không gian 3 chiều (3D) 4.3.1. Lệnh vẽ plot3 1. Cú pháp: plot3(x, y, z) (1) plot3(x, y, z, s) (2) 2. Ý nghĩa: tƣơng tự hoạt động của lệnh plot trong không gian 2 chiều đã học, cụ thể là: + Dạng (1): vẽ các điểm trong không gian 3 chiều, có tọa độ nằm trong các vector x, y, z. + Dạng (2): tƣơng tự Dạng (1), đồng thời có quy định kiểu đƣờng, màu sắc, kiểu điểm trong xâu s. 3. Ví dụ: vẽ đồ thị hàm: x = sin(t), y = cos(t), z = t. BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 169 Tƣơng tự nhƣ lệnh plot, lệnh plot3 cũng có các dạng sau: plot3(x1, y1, z1, x2, y2, z3,…) plot3(x1, y1, z1, s1, x2, y2, z2, s2,…) Tuy nhiên, trong không gian 3 chiều, nếu vẽ cùng lúc nhiều đồ thị trên một hệ trục tọa độ thì sẽ rất khó quan sát, nên chúng ta ít khi thực hiện điều này. Ngoài ra, còn có các lệnh vẽ: pie3, bar3, stem3. 4.3.2. Vẽ đồ thị hàm hai biến 4.3.2.1. Lệnh tạo lưới 1. Cú pháp: Để vẽ các mặt trong không gian 3 chiều, ta phải xác định lƣới của miền. Miền đƣợc xác định bởi 2 vector x, y với chiều dài tƣơng ứng là m, n. Cú pháp tạo lƣới nhƣ sau: X, Y = meshgrid(x, y) 2. Ý nghĩa: tạo một lƣới mà giá trị tọa độ điểm lƣới đƣợc trả vào hai ma trận X, Y. Trong đó, ma trận X chứa n hàng giá trị vector x, ma trận Y chứa m cột giá trị vectơ y. Cặp ma trận X, Y sau đó đƣợc sử dụng để ƣớc lƣợng hàm hai biến sử dụng trong việc vẽ đồ thị trong không gian 3 chiều. Nếu vector x = y thì có thể viết: X, Y = meshgrid(x) 3. Ví dụ: Ta có kết quả : BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 170 4.3.2.2. Lệnh vẽ đồ thị dạng lưới 1. Cú pháp: mesh(X, Y, Z) (1) mesh(X, Y, Z, C) (2) 2. Ý nghĩa: dùng để vẽ đồ thị Z = f(X, Y) dạng lƣới (1), có màu là C (2). 3. Ví dụ : vẽ đƣờng đồ thị hàm số: z = x 2 y 2 hoặc: 4.3.2.3. Lệnh vẽ bề mặt đồ thị 1. Cú pháp: surf(X, Y, Z) (1) surf(X, Y, Z, C) (2) 2. Ý nghĩa: dùng để vẽ bề mặt đồ thị Z = f(X, Y) (1), có màu là C (2). 3. Ví dụ: vẽ đƣờng đồ thị hàm số: z = x 2 y 2 BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 171 4.3.3. Thiết lập tham số cho đồ thị 1. Cú pháp: xlabel(‘Tiêu đề’) (1) ylabel(‘Tiêu đề’) (2) zlabel(‘Tiêu đề’) (3) title(‘Tiêu đề’) (4) axis(xmin, xmax, ymin, ymax, zmin, zmax)(5) subplot mnp (6) 2. Ý nghĩa: Tƣơng tự nhƣ trong không gian 2 chiều, chức năng của các hàm nhƣ sau: + Dạng (1), (2), (3): lần lƣợt là tiêu đề cho các trục x, trục y, trục z, + Dạng (4): tạo tiêu đề đồ thị + Dạng (5): tạo giới hạn cho các trục. + Dạng (6): chia màn hình thành nhiều phần khác nhau 3. Ví dụ: vẽ mặt 2 2 2 2 sin x y z x y trong không gian 3 chiều: BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 172 BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 173 4.4. Chỉnh sửa đồ thị dùng menu MATLAB cho phép chúng ta chỉnh sửa trực tiếp các đặc tính, các tham số của đồ thị mà không cần sửa code. Khi đó, trên cửa sổ đồ thị ta thực hiện: 1. Chỉnh sửa đặc tính đồ thị : Để chỉnh sửa đặc tính (kiểu đƣờng, màu sắc, điểm mút,..) ta làm theo các bƣớc sau : Bƣớc 1: nhấn nút (Edit Plot) trên thanh công cụ hoặc mở menu Tools > chọn Edit Plot. Bƣớc 2: nhấn chuột (trái) trên đồ thị > nhấn chuột phải > xuất hiện menu nhƣ hình dƣới đây: Hoặc trong không gian 3D: Bƣớc 3: chọn các nội dung cần chỉnh sửa : + Color: chỉnh màu cho đồ thị BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 174 + Line Style: chỉnh kiểu đƣờng (nét liền, nết đứt, nét chấm,…) + Line Width: chỉnh độ dày kiểu đƣờng + Maker: chỉnh kiểu điểm (o, , +,…) + Maker size: chỉnh độ lớn của kiểu điểm,… 2. Chỉnh sửa tham số đồ thị: Để chỉnh sửa tham số đồ thị (tiêu đề trục x, trục y, tiêu đề đồ thị,…), ta thực hiện: Bƣớc 1: mở menu Insert > chọn một tham số theo ý muốn: Hoặc trong không gian 3D: Bƣớc 2: Tùy thuộc vào tham số mà ta sẽ nhập nội dung vàhoặc chèn đối tƣợng vào đồ thị, ví dụ: + X Label, Y Label, Z Label: chèn tiêu đề trục x, trục y, trục z. + Title: chèn tiêu đề đồ thị BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 175 + Legend: chèn chú thích cho đồ thị + Colorbar: chèn thanh màu,... 3. Các công cụ: MATLAB cung cấp cho chúng ta một số công cụ để thao tác trên đồ thị. Khi cần dùng, ta mở menu Tools rồi chọn công cụ cần dùng, ví dụ: + Zoom In, Zoom Out: thu, phóng đồ thị + Pan: di chuyển đồ thị hoặc cửa sổ đồ thị + Rotate 3D: có thể xoay đồ thị để xem một cách trực quan trong không gian 3D. + Data Cursor: xem tọa độ của điểm bất kỳ trên đồ thị + Brush: lấy tọa độ điểm bất kỳ, đƣa vào cửa sổ chƣơng trình (cửa sổ Command hoặc cửa sổ Editor),... Ngoài ra, chúng ta cũng có thể thao tác trên các công cụ đó nhờ vào các nút trên màn hình (trong Figure Toolbar): + Nút : Zoom In, : Zoom Out + Nút : Pan + Nút : Rotate 3D + Nút : Data Cursor + Nút : Brush,... BÀI TẬP 1. Vẽ đồ thị dạng bar cho hàm số f(x) = sin(1x) trong khoảng 0.01 ≤ x ≤ 0.1. 2. Vẽ đồ thị dạng area chohàm số y = x 3 + 3x2 – 2x + 1 trên khoảng 10, 10. Thiết lập lƣới, các tham số cho trục hoành, trục tung. 3. Vẽ đồ thị các hàm số x, x 3 , e x và ex2 trên khoảng 0 ≤ x ≤ 4 trong cùng một hệ trục tọa đồ. 4. Vẽ đồ thị hàm các số y = sin(x), y = cos(x) và y = sin(x) + cos(x) với x , trên cùng 1 hệ trục tọa độ. Tạo lƣới và chú thích cho các đồ thị. 5. Vẽ đồ thị hàm các số y = y = e x , y = e 2x và e3x với x 10, 10 trên cùng 1 hệ trục tọa độ. Tạo lƣới và chú thích cho các đồ thị. 6. Vẽ đồ thị hàm các số y = e x , y = e 2x , e 3x và y = e4x với x 10, 10 trên 4 hệ trục tọa độ trong cùng 1 cửa sổ. Tạo lƣới và chú thích cho các đồ thị. 7. Vẽ đồ thị z = x 2 + y2 với x và y thuộc đoạn 10,10. Tạo lƣới và chú thích cho các trục tọa độ. BG Tin học nhóm ngành KT Chương 4 Viện KTCN Trường ĐH Vinh 176 8. Vẽ đồ thị z = sin(x2 ) + sin(y2 ) với x và y thuộc đoạn 10,10. Tạo lƣới và chú thích cho các trục tọa độ. 9. Vẽ đồ thị hàm các số y = x 2 – 5x + 1, y = 2x2 + 7x 3 và y = 5x2 3x + 8 với x 5, 5 trên cùng 1 hệ trục tọa độ. Tạo lƣới và chú thích cho các đồ thị. 10. Vẽ đồ thị hàm các số y = x 3 – 7x + 1, y = x3 + 7x2 3 và y = 5x2 3x + 8 với x 10, 10 trên cùng 1 hệ trục tọa độ. Tạo lƣới và chú thích cho các đồ thị. 11. Vẽ đồ thị hàm số x = sin(t), y = cos(t) và z = t với t 10, 10. Tạo lƣới và chú thích cho các trục tọa độ. 12. Vẽ các đồ thị sin(x), cos(x), sin(x)+cos(x), ex trên đoạn 2pi,2pi trong bốn hệ tọa độ của 1 cửa sổ vẽ. 13. Vẽ đồ thị z = x 2 + y2 x2 , với x và y thuộc đoạn 10, 10. 14. Vẽ đồ thị mặt cầu trong không gian. 15. Vẽ đồ mặt trụ trong không gian. 16. Viết chƣơng trình dạng script vẽ đƣờng tròn: x = a + r.cos(), y = b + r.sin(). 17. Vẽ đồ thị hàm r = sin(5) trong hệ tọa độ cực. TÀI LIỆU THAM KHẢO 1. Nguyễn Hoàng Hải, Nguyễn Việt Anh, Lập trình Matlab và ứng dụng, Nhà xuất bản Khoa học và Kỹ thuật, 2006. 2. Trần Quang Khánh, Giáo trình cơ sở Matlab ứng dụng, Nhà xuất bản Khoa học và Kỹ thuật, 2012.
BG Tin học nhóm ngành KT - Chương MỤC LỤC Chương Đồ họa Matlab 151 GIỚI THIỆU 151 MỤC TIÊU CỦA CHƢƠNG 151 NỘI DUNG CỦA CHƢƠNG 151 4.1 Các lệnh làm việc với cửa sổ đồ thị 151 4.2 Đồ họa hệ tọa độ phẳng (2D) 152 4.2.1 Kiểu đƣờng, màu sắc, kiểu điểm 152 4.2.2 Một số lệnh vẽ thƣờng dùng 153 4.2.3 Thiết lập tham số cho đồ thị 162 4.3 Đồ họa không gian chiều (3D) 168 4.3.1 Lệnh vẽ plot3 168 4.3.2 Vẽ đồ thị hàm hai biến 169 4.3.3 Thiết lập tham số cho đồ thị 171 4.3.4 Chỉnh sửa đồ thị dùng menu 173 BÀI TẬP 175 TÀI LIỆU THAM KHẢO 176 Viện KTCN - Trường ĐH Vinh 150 BG Tin học nhóm ngành KT - Chương Chương Đồ họa Matlab GIỚI THIỆU Matlab cơng cụ có nhiều mạnh, mạnh có khả lập trình đồ họa, vẽ loại đồ thị nhiều dạng khác nhau, góc nhìn khác nhau, vẽ khơng gian 2D 3D Có thể vẽ nhiều đồ thị hệ trục tọa độ hay nhiều cửa sổ đồ thị hình,… MỤC TIÊU CỦA CHƢƠNG Giải toán đồ thị không gian 2D, 3D NỘI DUNG CỦA CHƢƠNG 4.1 Các lệnh làm việc với cửa sổ đồ thị Lệnh tạo cửa sổ để vẽ đồ thị Để vẽ đồ thị, ta cần mở cửa sổ đồ thị lệnh sau: + Cách 1: dấu nhắc cửa sổ lệnh, gõ: >> figure + Cách 2: mở menu File MATLAB -> chọn New -> chọn Figure Khi đó, hình vẽ đồ thị nhƣ sau: * Chú ý: cửa sổ đồ thị mở, ta tạo cửa sổ nhƣ sau: mở menu File cửa sổ đồ thị -> chọn New -> chọn Figure Ghi đồ thị Để ghi đồ thị, giao diện cửa sổ đồ thị, ta thực hiện: + Cách 1: nhấn nút (Save Figure) Viện KTCN - Trường ĐH Vinh 151 BG Tin học nhóm ngành KT - Chương + Cách 2: mở menu File -> nhấn Save + Cách 3: ấn tổ hợp Ctrl + S Khi đó, hộp thoại cho phép ta chọn thƣ mục cần ghi, gõ tên tệp cần ghi (tên tệp không chứa dấu cách, có phần mở rộng fig) nhấn nút Save Xóa cửa sổ đồ thị Để xóa cửa sổ đồ thị, dấu nhắc cửa sổ lệnh, gõ: >> clf Đóng cửa sổ đồ thị Để đóng cửa sổ đồ thị, ta làm nhƣ sau: + Cách 1: dấu nhắc cửa sổ lệnh, gõ: >> close + Cách 2: cửa sổ đồ thị, mở menu File -> chọn Close + Cách 3: để đóng tất cửa sổ đồ thị, dấu nhắc lệnh, gõ: >> close all 4.2 Đồ họa hệ tọa độ phẳng (2D) 4.2.1 Kiểu đường, màu sắc, kiểu điểm MATLAB cho phép thiết lập kiểu đƣờng, màu sắc, kiểu điểm cho đồ thị, cụ thể nhƣ sau: 4.2.1.1 Kiểu đường: + Nét liền (-) (dấu trừ) + Nét đứt ( ) (hai dấu trừ liền nhau) + Nét chấm (:) (dấu hai chấm) + Nét gạch chấm (-.) (dầu trừ dấu chấm liền nhau) 4.2.1.2 Màu sắc: có mã màu sau đây: + Màu đỏ (r - red) + Màu xanh (g - green) + Màu xanh biển (b - blue) + Màu lục lam (c - cyan) + Màu tím (m -magenta) + Màu vàng (y - yellow) + Màu đen (k - black) + Màu trắng (w - white) 4.2.1.3 Kiểu điểm: + Dấu chấm (.), chữ o (o), chữ x (x), dấu cộng (+), dấu (*) + Hình vng (s - square) + Hình kim cƣơng (d - diamond) Viện KTCN - Trường ĐH Vinh 152 BG Tin học nhóm ngành KT - Chương + Hình tam giác quay lên (^), xuống (v), trái () + Hình cánh (p - pentagram) + Hình cánh (h - hexagram) 4.2.2 Một số lệnh vẽ thường dùng 4.2.2.1 Lệnh vẽ plot Cú pháp: plot(x, y) plot(x, y, s) Ý nghĩa: + Dạng 1: vẽ đồ thị hàm số, x vector đối, y vector hàm + Dạng 2: vẽ tƣơng tự Dạng 1, nhƣng có quy định kiểu đƣờng, màu sắc, kiểu điểm xâu s Ví dụ: viết lệnh vẽ đồ thị hàm số y = cos(x), với x [-3*pi, 3*pi] bƣớc nhảy 0.1 (tạo hàm cos(x)) Sau đó, dùng lệnh: >> plot(x,y), ta có : Nếu dùng lệnh : >> plot(x, y, ‘r*-’), ta có: Viện KTCN - Trường ĐH Vinh 153 BG Tin học nhóm ngành KT - Chương Hay dùng lệnh : >> plot(x, y, ‘mo:’), ta có: * Chú ý: lệnh plot cho phép vẽ nhiều đồ thị lúc, theo cú pháp sau: plot(x1, y1, x2, y2,…) plot(x1, y1, s1, x2, y2, s2,…) Ví dụ: Viết chƣơng trình dạng script vẽ hai đồ thị hàm số sin (x) cos(x) khoảng trục x nhƣ trên: Kết là: Hoặc dùng lệnh plot vẽ lần lƣợt đồ thị, nhƣng dùng thêm lệnh hỗ trợ, là: hold on, kết vẽ đƣợc hai đồ thị lúc nhƣ Chƣơng trình cụ thể nhƣ sau: Viện KTCN - Trường ĐH Vinh 154 BG Tin học nhóm ngành KT - Chương 4.2.2.2 Vẽ đường thẳng Cú pháp: line(x, y) Ý nghĩa: vẽ đƣờng thẳng với tọa độ phần tử vector x y Ví dụ: vẽ tam tam giác cách nối điểm (1,2), (6,4) (9,3) với nhau: 4.2.2.3 Vẽ hình chữ nhật Cú pháp: rectangle(‘position’, [x y w h]) Ý nghĩa: vẽ hình chữ nhật có tọa độ đỉnh góc trái dƣới (x, y), có chiều rộng w, chiều cao h với „position‟ từ khóa Ví dụ: vẽ hai hình chữ nhật “đựng” nhau: Viện KTCN - Trường ĐH Vinh 155 BG Tin học nhóm ngành KT - Chương 4.2.2.4 Lệnh vẽ dạng Cú pháp: bar(x,y) Ý nghĩa: vẽ đồ thị dạng (bar) hàm số y = f(x) mặt phẳng với x vector đối y vector hàm Ví dụ: vẽ đồ thị dạng hàm sin(x), với x [-, ]: 4.2.2.5 Lệnh vẽ dạng tròn Cú pháp : pie(x [, tách] [, nhãn]) Viện KTCN - Trường ĐH Vinh 156 BG Tin học nhóm ngành KT - Chương Ý nghĩa: vẽ đồ thị hình quạt trịn (pie) dƣới dạng tỉ lệ phần trăm theo giá trị thành phần vector x + Tham số “tách”: vector (có kích thƣớc với vector x) có giá trị Nếu 1: phần rời ra, 0: không rời + Tham số “nhãn”: vector kiểu xâu (có kích thƣớc với x), biểu thị nhãn giá trị Ví dụ:vẽ đồ thị dạng trịn, khơng tách: Vẽ đồ thị dạng trịn, có tách số phần: Vẽ đồ thị dạng trịn, có tách số phần, có nhãn: Viện KTCN - Trường ĐH Vinh 157 BG Tin học nhóm ngành KT - Chương hoặc: 4.2.2.6 Lệnh vẽ dạng vùng Cú pháp: area(x, y) Ý nghĩa: vẽ đồ thị dạng vùng (area) với x vector biến, y vector hàm Ví dụ:vẽ đồ thị dạng vùng hàm sin(x), với x [-3, 3]: Viện KTCN - Trường ĐH Vinh 158 BG Tin học nhóm ngành KT - Chương 4.2.2.7 Lệnh vẽ dạng bậc thang Cú pháp: stairs(x, y) Ý nghĩa: vẽ đồ thị dạng bậc thang (stair), với x, y tƣơng ứng vector đối vector hàm Ví dụ:vẽ đồ thị dạng bậc thang hàm sin(x), với x [-3, 3]: 4.2.2.8 Lệnh vẽ dạng rời rạc Cú pháp: stem(x, y) Ý nghĩa: vẽ đồ thị dạng rời rạc, với x, y tƣơng ứng vector đối vector hàm Viện KTCN - Trường ĐH Vinh 159 BG Tin học nhóm ngành KT - Chương 4.2.3 Thiết lập tham số cho đồ thị 4.2.3.1 Lệnh tạo lưới Cú pháp: grid on/off Ý nghĩa: tạo/hủy lƣới cho đồ thị Ví dụ: vẽ đồ thị hàm cos(x), có lƣới, : thi ta có kết là: Viện KTCN - Trường ĐH Vinh 162 BG Tin học nhóm ngành KT - Chương * Chú ý: lệnh grid on phải đặt sau lệnh vẽ có tác dụng 4.2.3.2 Lệnh tạo tiêu đề Cú pháp: xlabel(‘Nội dung tiêu đề’) (1) ylabel(‘Nội dung tiêu đề’) (2) title(‘Nội dung tiêu đề’) (3) Ý nghĩa: + Dạng (1): tạo tiêu đề cho trục x + Dạng (2): tạo tiêu đề cho trục y + Dạng (3): tạo tiêu đề cho đồ thị Ví dụ: Với Ví dụ trên, ta thêm lệnh tạo tiêu đề nhƣ dƣới đây: Thì kết là: 4.2.3.3 Thiết lập phạm vi cho trục x, trục y Cú pháp: axis([xmin,xmax,ymin,ymax]) axis on/off/square/normal/… (1) (2) xlim( [xmin, xmax]); ylim( [ymin, ymax]); (3) (4) Ý nghĩa: Viện KTCN - Trường ĐH Vinh 163 BG Tin học nhóm ngành KT - Chương + Dạng (1): thiết lập giới hạn cho trục x (từ xmin -> xmax) trục y (từ ymin -> ymax) + Dạng (2): - axis on: bật trục - axis off: tắt trục - axis square: thay đổi tỷ lệ trục để có cửa sổ hình vng - axis normal: quay cửa sổ thông thƣờng,… + Dạng (3): thiết lập giới hạn cho trục x + Dạng (4): thiết lập giới hạn cho trục y Ví dụ: Với hai cách viết sau: Ta có kết quả: 4.2.3.4 Thiết lập nhãn cho trục x, trục y Cú pháp: set(gca, ’XTickLabel’, ) (1) set(gca, ’YTickLabel’, ) (2) Ý nghĩa: thiết lập nhãn cho trục x (lệnh 1) trục y (lệnh 2) Ví dụ: Với chƣơng trình nhƣ sau: Viện KTCN - Trường ĐH Vinh 164 BG Tin học nhóm ngành KT - Chương Ta có kết chạy chƣơng trình: 4.2.3.5 Lệnh tạo thích Cú pháp: legend(‘chú thích 1’, ‘chú thích 2’,…, ‘chú thích n’) Ý nghĩa: đƣa n thích lần lƣợt cho n đồ thị Ví dụ: vẽ hai đồ thị hai hàm sin(x) cos(x) hệ trục tọa độ, có thích cho hàm Viện KTCN - Trường ĐH Vinh 165 BG Tin học nhóm ngành KT - Chương 4.2.3.6 Lệnh hiển thị xâu đồ thị Cú pháp: text(x, y, ‘xâu ký tự’) Ý nghĩa: hiển thị „xâu ký tự‟ vị trí (x, y) Ví dụ: vẽ lục giác đều, tơ màu lục lam (cyan), có hiển thị xâu đồ thị 4.2.3.7 Vẽ nhiều hệ tọa độ cửa sổ Viện KTCN - Trường ĐH Vinh 166 BG Tin học nhóm ngành KT - Chương Cú pháp: subplot(m, n, p) subplot(mnp) subplot mnp Ý nghĩa: chia cửa sổ đồ thị thành bảng có m hàng, n cột hệ trục tọa độ chọn hệ trục thứ p để vẽ Ví dụ: >> subplot(2,3,3) % tạo hệ trục tọa độ chọn hệ trục thứ để vẽ: + Vẽ đồ thị hàm y=sin(x) hệ trục tọa độ với dạng vẽ khác nhau: dạng plot, dạng (bar), dạng vùng (area) dạng tọa độ cực (polar): Viện KTCN - Trường ĐH Vinh 167 BG Tin học nhóm ngành KT - Chương 4.3 Đồ họa không gian chiều (3D) 4.3.1 Lệnh vẽ plot3 Cú pháp: plot3(x, y, z) (1) plot3(x, y, z, s) (2) Ý nghĩa: tƣơng tự hoạt động lệnh plot không gian chiều học, cụ thể là: + Dạng (1): vẽ điểm không gian chiều, có tọa độ nằm vector x, y, z + Dạng (2): tƣơng tự Dạng (1), đồng thời có quy định kiểu đƣờng, màu sắc, kiểu điểm xâu s Ví dụ: vẽ đồ thị hàm: x = sin(t), y = cos(t), z = t Viện KTCN - Trường ĐH Vinh 168 BG Tin học nhóm ngành KT - Chương Tƣơng tự nhƣ lệnh plot, lệnh plot3 có dạng sau: plot3(x1, y1, z1, x2, y2, z3,…) plot3(x1, y1, z1, s1, x2, y2, z2, s2,…) Tuy nhiên, không gian chiều, vẽ lúc nhiều đồ thị hệ trục tọa độ khó quan sát, nên thực điều Ngồi ra, cịn có lệnh vẽ: pie3, bar3, stem3 4.3.2 Vẽ đồ thị hàm hai biến 4.3.2.1 Lệnh tạo lưới Cú pháp: Để vẽ mặt không gian chiều, ta phải xác định lƣới miền Miền đƣợc xác định vector x, y với chiều dài tƣơng ứng m, n Cú pháp tạo lƣới nhƣ sau: [X, Y] = meshgrid(x, y) Ý nghĩa: tạo lƣới mà giá trị tọa độ điểm lƣới đƣợc trả vào hai ma trận X, Y Trong đó, ma trận X chứa n hàng giá trị vector x, ma trận Y chứa m cột giá trị vectơ y Cặp ma trận X, Y sau đƣợc sử dụng để ƣớc lƣợng hàm hai biến sử dụng việc vẽ đồ thị không gian chiều Nếu vector x = y viết: [X, Y] = meshgrid(x) Ví dụ: Ta có kết : Viện KTCN - Trường ĐH Vinh 169 BG Tin học nhóm ngành KT - Chương 4.3.2.2 Lệnh vẽ đồ thị dạng lưới Cú pháp: mesh(X, Y, Z) (1) mesh(X, Y, Z, C) (2) Ý nghĩa: dùng để vẽ đồ thị Z = f(X, Y) dạng lƣới (1), có màu C (2) Ví dụ : vẽ đƣờng đồ thị hàm số: z = x2 - y2 hoặc: 4.3.2.3 Lệnh vẽ bề mặt đồ thị Cú pháp: surf(X, Y, Z) (1) surf(X, Y, Z, C) (2) Ý nghĩa: dùng để vẽ bề mặt đồ thị Z = f(X, Y) (1), có màu C (2) Ví dụ: vẽ đƣờng đồ thị hàm số: z = - x2 - y2 Viện KTCN - Trường ĐH Vinh 170 BG Tin học nhóm ngành KT - Chương 4.3.3 Thiết lập tham số cho đồ thị Cú pháp: xlabel(‘Tiêu đề’) ylabel(‘Tiêu đề’) (1) (2) zlabel(‘Tiêu đề’) (3) title(‘Tiêu đề’) (4) axis([xmin, xmax, ymin, ymax, zmin, zmax]) (5) subplot mnp (6) Ý nghĩa: Tƣơng tự nhƣ không gian chiều, chức hàm nhƣ sau: + Dạng (1), (2), (3): lần lƣợt tiêu đề cho trục x, trục y, trục z, + Dạng (4): tạo tiêu đề đồ thị + Dạng (5): tạo giới hạn cho trục + Dạng (6): chia hình thành nhiều phần khác Ví dụ: vẽ mặt z sin x y x2 y Viện KTCN - Trường ĐH Vinh không gian chiều: 171 BG Tin học nhóm ngành KT - Chương Viện KTCN - Trường ĐH Vinh 172 BG Tin học nhóm ngành KT - Chương 4.4 Chỉnh sửa đồ thị dùng menu MATLAB cho phép chỉnh sửa trực tiếp đặc tính, tham số đồ thị mà khơng cần sửa code Khi đó, cửa sổ đồ thị ta thực hiện: Chỉnh sửa đặc tính đồ thị : Để chỉnh sửa đặc tính (kiểu đƣờng, màu sắc, điểm mút, ) ta làm theo bƣớc sau : * Bƣớc 1: nhấn nút (Edit Plot) công cụ mở menu Tools -> chọn Edit Plot * Bƣớc 2: nhấn chuột (trái) đồ thị -> nhấn chuột phải -> xuất menu nhƣ hình dƣới đây: Hoặc khơng gian 3D: * Bƣớc 3: chọn nội dung cần chỉnh sửa : + Color: chỉnh màu cho đồ thị Viện KTCN - Trường ĐH Vinh 173 BG Tin học nhóm ngành KT - Chương + Line Style: chỉnh kiểu đƣờng (nét liền, nết đứt, nét chấm,…) + Line Width: chỉnh độ dày kiểu đƣờng + Maker: chỉnh kiểu điểm (o, *, +,…) + Maker size: chỉnh độ lớn kiểu điểm,… Chỉnh sửa tham số đồ thị: Để chỉnh sửa tham số đồ thị (tiêu đề trục x, trục y, tiêu đề đồ thị,…), ta thực hiện: * Bƣớc 1: mở menu Insert -> chọn tham số theo ý muốn: Hoặc không gian 3D: * Bƣớc 2: Tùy thuộc vào tham số mà ta nhập nội dung và/hoặc chèn đối tƣợng vào đồ thị, ví dụ: + X Label, Y Label, Z Label: chèn tiêu đề trục x, trục y, trục z + Title: chèn tiêu đề đồ thị Viện KTCN - Trường ĐH Vinh 174 BG Tin học nhóm ngành KT - Chương + Legend: chèn thích cho đồ thị + Colorbar: chèn màu, Các công cụ: MATLAB cung cấp cho số công cụ để thao tác đồ thị Khi cần dùng, ta mở menu Tools chọn cơng cụ cần dùng, ví dụ: + Zoom In, Zoom Out: thu, phóng đồ thị + Pan: di chuyển đồ thị cửa sổ đồ thị + Rotate 3D: xoay đồ thị để xem cách trực quan không gian 3D + Data Cursor: xem tọa độ điểm đồ thị + Brush: lấy tọa độ điểm bất kỳ, đƣa vào cửa sổ chƣơng trình (cửa sổ Command cửa sổ Editor), Ngồi ra, thao tác cơng cụ nhờ vào nút hình (trong Figure Toolbar): + Nút : Zoom In, + Nút : Pan + Nút : Rotate 3D + Nút : Data Cursor + Nút : Brush, : Zoom Out BÀI TẬP Vẽ đồ thị dạng bar cho hàm số f(x) = sin(1/x) khoảng 0.01 ≤ x ≤ 0.1 Vẽ đồ thị dạng area chohàm số y = x3 + 3x2– 2x + khoảng [-10, 10] Thiết lập lƣới, tham số cho trục hoành, trục tung Vẽ đồ thị hàm số x, x3, ex ex2 khoảng ≤ x ≤ hệ trục tọa đồ Vẽ đồ thị hàm số y = sin(x), y = cos(x) y = sin(x) + cos(x) với x [-, ] hệ trục tọa độ Tạo lƣới thích cho đồ thị Vẽ đồ thị hàm số y = y = ex, y = e2x e3x với x [-10, 10] hệ trục tọa độ Tạo lƣới thích cho đồ thị Vẽ đồ thị hàm số y = ex, y = e2x, e3x y = e4x với x [-10, 10] hệ trục tọa độ cửa sổ Tạo lƣới thích cho đồ thị Vẽ đồ thị z = x2 + y2 với x y thuộc đoạn [-10,10] Tạo lƣới thích cho trục tọa độ Viện KTCN - Trường ĐH Vinh 175 BG Tin học nhóm ngành KT - Chương Vẽ đồ thị z = sin(x2) + sin(y2) với x y thuộc đoạn [-10,10] Tạo lƣới thích cho trục tọa độ Vẽ đồ thị hàm số y = x2 – 5x + 1, y = 2x2 + 7x - y = 5x2 -3x + với x [-5, 5] hệ trục tọa độ Tạo lƣới thích cho đồ thị 10 Vẽ đồ thị hàm số y = x3 – 7x + 1, y = x3 + 7x2 - y = 5x2 -3x + với x [-10, 10] hệ trục tọa độ Tạo lƣới thích cho đồ thị 11 Vẽ đồ thị hàm số x = sin(t), y = cos(t) z = t với t [-10, 10] Tạo lƣới thích cho trục tọa độ 12 Vẽ đồ thị sin(x), cos(x), sin(x)+cos(x), ex đoạn [-2pi,2pi] bốn hệ tọa độ cửa sổ vẽ 13 Vẽ đồ thị z = x2 + y2/x2, với x y thuộc đoạn [-10, 10] 14 Vẽ đồ thị mặt cầu không gian 15 Vẽ đồ mặt trụ khơng gian 16 Viết chƣơng trình dạng script vẽ đƣờng tròn: x = a + r.cos(), y = b + r.sin() 17 Vẽ đồ thị hàm r = sin(5) hệ tọa độ cực TÀI LIỆU THAM KHẢO [1] Nguyễn Hồng Hải, Nguyễn Việt Anh, Lập trình Matlab ứng dụng, Nhà xuất Khoa học Kỹ thuật, 2006 [2] Trần Quang Khánh, Giáo trình sở Matlab ứng dụng, Nhà xuất Khoa học Kỹ thuật, 2012 Viện KTCN - Trường ĐH Vinh 176