Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 66 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
66
Dung lượng
1,26 MB
Nội dung
Bài giảng Tin Ứng dụng – Matlab ĐẠI HỌC THỦY LỢI BỘMÔN QUẢN LÝ TỔNG HỢP BIỂN VÀ ĐỚI BỜ MATLAB TIN HỌC ỨNG DỤNG – HỌC PHẦN II (Tài liệu tham khảo & Bài tập cho sinh viên Kỹthuật Biển – K45) Nguyễ n Bá Tuyên Nguyễ n Quang Chiế n Hà Nội, tháng 08 năm 2007 -1- Bài giảng Tin Ứng dụng – Matlab MỤC LỤC CHƯƠNG I: MATLAB CĂN BẢN 1.1 Matlab – ngơn ngữcủa tính tốn kỹthuậ t .4 1.2 Khảnăng ứng dụng Matlab 1.3 Đặ c điể m Matlab .6 1.4 Cài đặ t khởi động Matlab 7.0 1.5 Quả n lý không gian làm việ c Matlab 1.6 Ghi & phục hồidữliệu 11 1.7 Sửdụng Help .12 1.8 History & Editing 13 CHƯƠNG II: TÍNH TỐN TRONG MATLAB 15 2.1 Matlab - máy tính cá nhân 15 2.2 Biế n Matlab 16 2.3 Các kiểu dữliệ u - Đị nh dạng kế t 17 2.4 Các kiểu dữliệ u số& sốphức 18 2.5 Các ký tự,Chuỗivà Văn 19 2.6 Các hằ ng sốdựng sẵn 20 2.7 Các hàm dựng sẵ n 20 2.8 Các phép toán quan hệ 23 2.9 Các phép toán logic 24 2.10 Kế t hợp nhiều lệ nh dịng; Ẩn kế t quảtính 26 CHƯƠNG III: VECTƠ 27 3.1 Giới thiệ u 27 3.2 Véctơhàng 28 3.3 Vectơcột 29 3.4 Toán tửhai chấ m ( : ) 29 3.5 Làm việ c với vectơ& ma trậ n (mảng) 30 3.6 Xửlý dữliệ u với hàm dựng sẵ n cho vectơ& ma trậ n 32 CHƯƠNG IV: MA TRẬN ĐẠI SỐ& TUYẾN TÍNH 34 4.1 Đị nh nghĩ a khởi tạ o ma trậ n 34 4.2 Một sốma trận đặ c biệt 34 4.3 Các phép toán với phần tửtrong ma trận 35 4.4 Các phép toán với ma trậ n 35 4.5 Giảiphương trình đạ i số 35 4.6 Giảihệphương trình đạ i sốtuyế n tính 35 4.7 Tìm nghiệ m đa thức 35 4.8 Giảiphương trình phi tuyến 35 4.9 Giảiphương trình vi phân 35 4.10 Các lệnh hữu ích khác 35 -2- Bài giảng Tin Ứng dụng – Matlab CHƯƠNG V: SCRIPTS VÀ FUNCTIONS (M-FILES) 37 5.1 Giới thiệ u M-file 37 5.2 Biên soạ n thực thi M-file 37 5.3 Chú thích (comments) 38 5.4 Các hàm m-file (function m-files) 39 5.5 Câu lệ nh rẽnhánh (if switch) 41 5.6 Vòng lặp (for while) 42 5.7 Đọc dữliệu từfile ghi file 43 CHƯƠNG VI: ĐỒTHỊDẠNG ĐƯỜNG .44 6.1 Biể u diễn đường trình 44 6.2 Lựa chọn màu vẽ , nét vẽ 46 6.3 Tạ o thích, giảitrên hình vẽ 48 6.4 Xóa đường biể u đồ,lưu biể u đồ 50 6.5 ĐồthịLogarit 50 6.6 Dãy biể u đồ 52 CHƯƠNG VII: ĐỒTHỊKHÔNG GIAN .55 7.1 Các ng cơbả n 55 7.2 Chỉđị nh vịtrí khơng gian chiề u 58 7.3 Mặ t cắ t đị a hình 58 7.4 Trường véctơ .59 PHẦN BÀI TẬP 61 Bài tập số1: 61 Bài tập số2 62 Bài tập số3 62 Bài tập số4: 63 LỜI GIẢI 63 Bài tập số1: 63 Bài tập số2: 64 Bài tập số3: 64 Bài tập số4: 64 TÀI LIỆU THAM KHẢO: 66 -3- Bài giảng Tin Ứng dụng – Matlab CHƯƠNG I: MATLAB CĂN BẢN 1.1 Matlab – ngôn ngữcủa tính tốn kỹthuật - MATLAB ngơn ngữbậ c cao môi trường tươ ng tác cho phép bạ n tiế n hành nhiệ m vụtính tốn có cường độlớn nhanh với ngơn ngữlậ p trình nhưC, C++ Fortran - MATLAB viế t tắ t cho "Matrix Laboratory" - Phịng thí nghiệ m ma trậ n Ban đầ u Matlab đ ược thiế t kếbởi Cleve Moler vào nă m 1970 đ ểsửdụ ng nhưmột cơng cụdạ y họ c Từđó đ ế n đ ược phát triể n thành bộphầ n mề m thương mạ i rấ t thành công - Hiệ n MATLAB R14 bộphầ n mề m cho cơng việ c tính tốn ngành kỹthuậ t, khoa họ c lĩ nh vực toán họ c ứng dụ ng Matlab cho ta mộ t ngơn ngữlậ p trình mạ nh, giao diệ n đ ồhọ a xuấ t sắ c, phạ m vi rấ t rộ ng kiế n thức chuyên môn Matlab mộ t thương hiệ u đượ c thương mạ i hóa tậ p đoàn MathWorks, Massachusetts, USA (hiệ n nhà cung cấ p hàng đ ầ u thếgiới cho phầ n mề m tính tốn kỹthuậ t thiế t kếdựa mơ hình) 1.2 Khảnăng ứng dụng Matlab - Một nhữ ng tính nă ng tuyệ t vời nhấ t củ a Matlab nhìn từgóc đ ộnhững nhà khoa họ c tính tốn thưviệ n dựng sẵ n to lớn rấ t phong phú chu trình tính tốn cơng cụhiể n thịđ ồhọ a - Matlab cho phép người dùng tiế n hành rấ t nhiề u nhiệ m vụthông thường liên quan tới việ c giả i quyế t vấ nđ ềmột cách sốhọ c Nó cho phép dành nhiề u thời gian cho việ c suy nghĩ , khuyế n khích thí nghiệ m - Matlab ứng dụng thuậ t tốn hế t sức trân trọng vậ y tin tưởng vào kế t quảthu - Các tính tốn rấ t mạ nh có thểđ ược thực hiệ n chỉvới mộ t hoặ c hai câu lệ nh - Bạ n có thểxây dựng riêng cho hàm tốn học cho ứng dụ ng đ ặ c biệ t - Matlab cung cấ p giao diệ nđ ồhọ a tuyệ t o, hình từMatlab có thểđem chèn vào LATEX tài liệ u Word - Tài liệ u hướng dẫ n chỉđem đế n mộ t nhìn thống qua vềsức mạ nh linh hoạ t củ a hệthống Matlab Đểcó hiể u biế t sâu sắ c chi tiế t hơn, xin tham khả o giáo trình Matlab chuyên dụng khác hiệ n có thịtrường -4- Bài giảng Tin Ứng dụng – Matlab VD: Hãy tham khả o demo củ a Matlab đểxem ta có thểlàm chỉvới vài dịng lệ nh đ ơn giả n: >> >> >> >> colormap(hsv(64)) z = cplxgrid(30); cplxmap(z,z^3) cplxroot(3) % miền không gian số phức đơn vị z % vẽ đồ thị hàm x = z^3 – hinh1 % vẽ đồ thị hàm y = z^(1/3) – hinh2 Hình 1: Đồthịhàm x = z3 khơng gian sốphức Hình 2: Đồthịhàm y 3 z không gian sốphức -5- Bài giảng Tin Ứng dụng – Matlab 1.3 Đặc điểm Matlab Lập trình theo nghĩ a thông thường, nhậ p vào máy câu lệ nh rõ ràng, theo thứtựnhấ tđ ị nh cho máy thực hiệ n theo đ úng thứtựđó sẽcho ta kế t quảmong muố n Mộ t khái niệ m nôm na tương tựnhưvậ y thường thấ y khóa họ c lậ p trình ngơn ngữC, Pascal Khi khởi đ ầ u với MatLab ta hiể u theo nghĩ a rộ ng hơn: lậ p trình cịn có bước biể u diễ n toán ng hàm máy tính qua việ c thực hiệ n hàm cho ta kế t Phương pháp có mức độtrừu tượng cao so với câu lệ nh chỉdẫ n đơn thuầ n Đểminh họa đ iề u này, ta xét mộ t ví dụrấ tđ ơn giả n: so sánh phép cộng hai véctơ ngơn ngữlậ p trình Pascal MatLab - Pascal biể u diễ n véctơdưới ng mả ng (array), chẳ ng hạ n có vec-tơA, B, C A + B = C: var A: array[1 5] of integer = (3, 7, 4, 2, 0); B: array[1 5] of integer = (-2, 4, 8, 5, 1); C: array[1 5] of integer; i: integer; begin for i := to begin C[i] := A[i] + B[i] end end - Cách làm MatLab đ ơn giả n nhiề u: A = [3 0]; B = [-2 1]; C = A + B; - Có đ ược sựđ ơn giả n nói nhờMatLab đ ã xây dựng sẵ n khái niệ m ma trận Dấ u cộng dòng lệ nh MatLab biể u thịphép cộ ng ma trậ n Pascal không nhưvậ y; mả ng chỉlà sựbiể u diễ n có thứtựcủa biế n Khơng có phép cộ ng ma trậ n, chỉcó phép cộng hai số– vậ y chương trình Pascal dài rấ t nhiề u - Mộ t đặ cđ iể m tấ t cảcác biế n chương trình Pascal đề u phả i khai báo Trong MatLab biế n sẽtựđ ộng hình thành câu lệ nh gán Trong nhữ ng nă m gầ nđ ây, bên cạ nh ngôn ngữlậ p trình truyề n thố ng (C / C++ / Fortran), ngôn ngữvăn lệ nh (scripting languages) đ ược sửdụ ng phổbiế n lĩ nh vực nghiên cứu tính tốn MatLab ngơn ngữnhư vậ y Là ngôn ngữbậ c cao, mỗ i dịng lệ nh MatLab thường có tác dụng tương đ ương với khoả ng 10 dòng lệ nh C / C++ Người lậ p trình sẽtố n thời gian gõ câu lệ nh tậ p trung vào nội dung chương trình -6- Bài giảng Tin Ứng dụng – Matlab Tuy vậ y ngơn ngữlậ p trình biên dị ch nhưC / Fortran cho phép chương trình tính tốn rấ t nhanh tốc độcũng yêu cầ u rấ t quan trọng chương trình tính lớn Do đ ó mộ t cách kế t hợp thông minh phầ n lõi tính tốn đ ược viế t bằ ng ngôn ngữbiên dị ch, thao tác nhậ p xuấ t, xửlí, hiể n thịsố liệ u viế t ngôn ngữvă n lệ nh nhưMatLab 1.4 Cài đặt khởi động Matlab 7.0 1.4.1 Cài đặt Matlab 7.0 - Yêu cầ u vềcấ u hình máy tính: + Bộvi xửlý Pentium hoặ c Pentium Pro + Windows 95 hoặ c NT (WinXP home, XPprofessional đề u được) + Bộđ iề u phối đ ồhọa bit card hình tối thiể u 256 màu + Dung lượng ổcứng 25Mb 1Gb (tùy thuộc vào cách cấ u hình đ ĩ a cứng, phân vùng đĩ a, sốhợp phầ n củ a Matlab đ ược cài đ ặ t), tới 2,1Gb nế u cài đ ặ t Matlab với Simulink + Bộnhớđ ộng (RAM) tố i thiể u 16Mb (nên có bộnhớtố i thiể u 128Mb) + Các khuyế n nghịkhác: Bộnhớbổsung, card đồhọa bổsung, card âm thanh, máy in, MS-Word 7.0 hoặ c hơn, trình biên dị ch C, Borlean, Mỉ cosoft (xây dựng file MEX), trình duyệ t internet (đểchạ y Matlab Helpdesk online) - Quá trình cài đặ t Matlab 7.0 cho WindowsXP (bộgồ m đĩ a CD): + Đưa đ ĩ a CD vào ổđọ c Nế u chương trình SETUP khơng tựđ ộng chạ y nhấ n đúp vào biể u tượng setup.exe đểbắ t đầ u trình cài đặ t + Accept (chấ p nhậ n) thỏa thuậ n vềbả n quyề n sau đ ó click Next + Nế u bạ n cài theo kiể u mặ c đị nh (hay gọ i Typical setup - kiể u phổ biế n), Matlab máy tính củ a bạ n sẽcó hợp phầ n cơbả n nhấ tđ ểlàm việ c theo hướ ng dẫ n tài liệ u Theo hướng dẫ n hình Cho đĩ a CD thứ2 vào đ ược yêu cầ u + Nế u bạ n cài đặ t theo kiể u tùy chọ n cá nhân (Manual setup) nhấ n vào hộ p thành phầ n dấ u 'v' nế u bạ n muố n có tùy chọ n Nhấ n tiế p nế u bạ n khơng có ý đị nh (có thểthêm vào sau nế u muố n) + Trên hình hiể n thị'C:\MATLAB7' thưmụ c mặ cđ ị nh trình cài đặ t Nế u bạ n muốn cài đ ặ t vào đị a chỉkhác, hoặ c đổ i tên thưmục, bạ n lựa chọ n 'Browse' -7- Bài giảng Tin Ứng dụng – Matlab + Chi tiế t hướng dẫ n cài đặ t xin xem file ‘ install_guide.pdf’trong đ ĩ a CD1 (bả n tiế ng Anh) 1.4.2 Khởi động Matlab (Hệđiều hành Windows) - TừHĐH Windows, khởi độ ng Matlab đ ơn giả n bằ ng cách nháy đ úp vào biể u tượng MATLAB hình, hoặ c bằ ng cách chọ n MATLAB từMenu Start - Quá trình khởi đ ộ ng đ ưa người dùng đế n Cửa sổlệ nh, nơi dòng lệ nh biể u thị bằ ng '>>' >>_ Đây dấ u hiệ u cho thấ y Matlab đ ang chờbạ nđ ánh (câu) lệ nh Khi hoạ t độ ng chếđộmáy tính cầ m tay, tấ t cảcác lệ nh củ a Matlab nhậ p vào dịng lệ nh từbàn phím - Matlab có thểđượ c sửdụng theo nhiề u chếđ ộvà nhiề u cách khác nhau; + Nhưmột máy tính cầ m tay cao cấ p chếđộmáy tính cầ m tay + Nhưmột ngơn ngữlậ p trình bậ c cao + Nhưmột chu trình gọ i từchương trình C Trong tài liệ u sẽđi nghiên cứu chi tiế t chếđộđầ u tiên 1.5 Quản lý không gian làm việc Matlab - Vềcơbả n, không gian làm việ c Matlab gồ m có phầ n sau: + Cửa sổtrợgiúp (Help window) + Nút Start + Cửa sổnhậ p lệ nh (Command window) + Cửa sổkhông gian làm việ c (Workspace window) + Cửa sổquá trình lệ nh (Command History window - lị ch sử) + Cửa sổbiên tậ p mả ng, vectơ, ma trậ n (Array editor window) + Cửa sổđ ị a chỉthưmục hiệ n thời (Current directory window) - Nút ‘x’ ởgóc bên phả i mỗ i cửa sổdùng đ ểđ óng chúng Hiể n thịlạ i cửa sổ bằ ng cách tích ‘ ’vào tên cửa sổtương ứng menu Desktop - Nút mũi tên cong bên cạ nh nút ‘ x’dùng đểtách cửa sổlàm việ c cửa sổ MATLAB thành cửa sổcon đ ộc lậ p Ấn nút mộ t lầ n sẽnhậ p cửa sổđộ c lậ p vềcửa sổchính củ a MATLAB - Cửa sổHelp, History sẽđược giới thiệ u cụthểtrong mụ c 1.7 mụ c 1.8 Sau đ ây cửa sổlàm việ c lạ i sẽđ ược giới thiệ u vắ n tắ t -8- Bài giảng Tin Ứng dụng – Matlab Hình 1.1: Giao diệ n củ a Matlab 7.0 * Nút Start: ởgóc bên trái củ a hình Matlab, cho phép ta chạ y ứng dụ ng mẫ u (demos), công cụvà cửa sổchưa hiể n thịkhi khởi độ ng Matlab Bằ ng cách đánh lệ nh 'demo' bạ n có thểtiế p cậ n với mộ t tậ p hợp sâu rộng file trình diễ n giá trịrấ t cao, biể u hiệ n cho khảnă ng củ a Matlab Ví dụ : Thửchạ y Start -> Matlab -> Demos chạ y mộ t ứng dụ ng mẫ u cửa sổDemo(s) Ghi chú: Lệ nh sẽxóa tấ t cảgiá trịcủ a biế n hiệ n có * Cửa sổlệ nh: đ ược đềcậ p ởmụ c 1.4.2 (Khởi độ ng Matlab) - Các diễ n giả i câu (mệ nh đ ề ) Matlab đ ánh giá bạ n gõ vào 'Cửa sổ lệ nh', kế t quảtính tốn cũ ng thểhiệ n tạ i đ ây Không giố ng Fortran ngơn ngữtính tốn cầ n biên dị ch khác, Matlab mộ t môi trường tương tác – bạ nđ ưa câu lệ nh, Matlab cốgắ ng thực thi lậ p tức trước đòi hỏ i lệ nh tiế p theo - Các diễ n giả i câu cũ ng đư ợc sửdụ ng M-file (sẽđượ c trình bày chi tiế t ởchương V) Chúng thường có cấ u trúc: >> biế n = diễ n giả i hoặ c đơn giả n >> diễ n giả i - Các diễ n giả i thường đượ c soạ n bằ ng toán tử, hàm, tên biế n, đ ược hiể n thịtrên hình sau ấ n Enter Các câu lệ nh có ng ‘ tên biế n= -9- Bài giảng Tin Ứng dụng – Matlab diễ n giả i’thì diễ n giải đ ó sẽđ ược gán cho biế nđ ểsửdụng sau Khi ‘tên biế n’ dấ u‘ =’ bỏđi kế t quảcủa diễ n giả i sẽđược tựđ ộng gán cho biế n có tên ‘ans’ (hay answer – câu trảlời) hiể n thịtrên hình - Một câu (lệ nh) thơng thường sẽkế t thúc ởcuối dịng Tuy nhiên có thểtiế p tục câu bằ ng ba dấ u chấ m‘ …’ ởcuối dịng - Có thểđ ặ t mộ t vài câu lệ nh mộ t hàng, ngă n cách dấ u phẩ y‘ ,’ hoặ c chấ m phẩ y‘ ;’ - Nế u mộ t câu lệ nh kế t thúc bằ ng dấ u chấ m phẩ y ởcuố i câu kế t quảcủa lệ nh đ ó sẽkhơng hiể n thị , nhiên yêu cầ u tính vẫ n thực hiệ n (phép tính hay phép gán vẫ n thực hiệ n, kế t quảcó workspace) Điề u thiế t yế u việ cẩ nđ i kế t quảtrung gian không mong muốn (VD nhưkhi thực hiệ n mộtloạ t phép tính, hay tính tốn với ma trậ n lớn) - Bạ n có thểxóa trắ ng tồn bộcửa sổlệ nh bằ ng lệ nh >> clc % (clear command window) hoặ c vào menu Edit -> Clear Command Window Khi thực hiệ n lệ nh này, toàn bộgiá trịcủa biế n hiệ n có khơng thay đ ổi hay mấ t * Cửa sổ không gian làm việ c (workspace): Các biế n dữliệ u mà bạ n nhậ p vào hoặ c tính tốn sẽđ ược Matlab lưu mộ t phầ n gọi 'không gian làm việ c' Tấ t cảcác biế n, ngoạ i trừnhững biế n cục bộthuộ c vềmộ t M-file, đ ược thểhiệ n không gian làm việ c - Lệ nh 'who' hoặ c 'whos' liệ t kê biế n hiệ n có không gian làm việ c VD: đánh lệ nh 'whos' vào cửa sổlệ nh, bạ n sẽthấ y mộ t danh sách biế n hiệ n có kiể u loạ i kích cỡcủa chúng - Đểbiế t giá trịhiệ n tạ i mộ t biế n, bạ nđ ánh vào tên biế n tạ i dấ u nhắ c cửa sổlệ nh Enter - Đểxóa mộ t hàm hoặ c biế n khỏ i không gian làm việ c, ta sửdụng lệ nh 'clear': >> clear tên_biế n Bả n thân lệ nh 'clear' sẽxóa tấ t cảcác biế n hiệ n có (tương đương với 'clear all') - 10 - Bài giảng Tin Ứng dụng – Matlab Bieu duong cap phoi hat 100 P (%) 80 60 40 20 0 10 d (mm) Hình 8: Ví dụvới biểu đồcó trục theo thang logarit Các đồthịvới thang logarit trụ c y cả2 trụ c thực hiệ n tương tựvới câu lệ nh lầ n lượt semilogy loglog 6.6 Dãy biểu đồ Bằ ng lệ nh figure ta có thểtạ o nhiề u hình vẽđ ộc lậ p nhiề u cửa sổ Tuy vậ y, nhiề u lúc ta muố n có mộ t dãy (hoặ c bả ng) biể u đồxế p kếtiế p nhau, có kích thước bằ ng đ ểtiệ n việ c so sánh MatLab hỗtrợhệthống subplot (biể u đ nhỏ) với câu lệ nh có ng chung nhưsau: subplot(m,n,k); Hình 9: Vịtrí biể u đồtrong dãy tạo lệ nh subplot - 52 - Bài giảng Tin Ứng dụng – Matlab Sẽtạ o bả ng gồm (m × n) biể uđ ồnhỏ(m hàng n cột) Tiế p hình thứk (tính từtrên xuố ng dưới, trái qua phả i) sẽđ ược kích hoạ t chuẩ n bịđược vẽ Chẳ ng hạ n, sau thực hiệ n lệ nh subplot(2,3,4); ta kế t quảnhưHình Gọ n ta có thểviế t (trong trường hợp m, n, k < 10): subplot 234 Xét ví dụđơn giả n: ta cầ n vẽđường trình mực nướ c (z) vậ n tốc dòng chả y (v) theo thời gian (t), hai biể u đồkhác Đểcó sựđố i chiế u vềthời gian hai biể uđ ồta nên xế p chúng theo cột dọc Nhưvậ y m = n = t = 0:5:100; z = [-0.14 -0.08 -0.05 -0.04 0.01 0.07 0.15 0.23 0.25 0.37 0.4 0.45 0.55 0.6 0.66 0.76 0.82 0.91 1.03 1.14]; v = [0.84 0.89 0.91 0.89 0.91 0.88 0.92 0.97 0.97 0.97 0.99 1.02 0.96 1.03 0.98 1.04 1.04 1.11 1.04 1.12 1.16]; subplot 211 plot(t, z); xlabel('t (phut)'); ylabel('z (m)'); title('Duong qua trinh muc nuoc tai diem A1'); subplot 212 plot(t, v, 'g'); xlabel('t (phut)'); ylabel('v (m/s)'); title('Duong qua trinh luu toc tai diem A1'); Kế t quảnhưtrên Hình 7.5 MatLab cịn có lệ nh plotyy cho phép hai trụ c tung vớ i hai đ i lư ợ ng khác (chẳ ng hạ n z v) mộ t biể uđ - 53 - Bài giảng Tin Ứng dụng – Matlab Duong qua trinh muc nuoc tai diem A1 1.5 z (m) 0.5 -0.5 20 40 60 80 t (s) Duong qua trinh luu toc tai diem A1 100 v (m/s) 1.4 1.2 0.8 20 40 60 80 t (s) Hình 10: Hai đường trình hai subplot - 54 - 100 Bài giảng Tin Ứng dụng – Matlab 7 CHƯƠNG VII: ĐỒ THỊKHÔNG GIAN Trong kỹthuậ t rấ t cầ n biể u đ ồkhông gian Thường gặ p nhấ t bình đồ (bả nđ ồđ ị a hình khu vự c nhỏ) Bên cạ nh đó, biể u đồkhơng gian cịn có thểđược dùng đ ểbiể u diễ n độsâu đị a hình hay trường khơng gian nói chung (nhiệ t độ , khí áp ) Trong tấ t cảcác trư ờng hợp nói trên, ln có mộ t biế n (z) đ ược biể u diễ n theo hai biế n không gian mặ tđ ấ t (x, y) 7.1 Các dạng cơbản Các dạng cơbản MatLab hỗtrợnhiề u phương pháp biể u diễ n sốliệ u; tài liệ u ta làm quen với mộ t sốloạ i cơbả n, là: Mả ng màu (color patch) Đư ờng đ ồng mức (contour) Bềmặ t chiề u (surface) Hãy bắ tđ ầ u với mộ t ví dụđ ơn giả n mơ đ ị a hình đáy biể n củ a khu vực giảtưởng đư ợc cho ma trậ n z Đáy biể n có ng tương tựnhưmặ t cắ t ngang cân bằ ng (Dean) theo phương trình: z = - 0.1 y2/3 Với trục x dọc theo bãi biể n trục y hướng khơi Ta xét lướ i tọ a độtrên mặ t bằ ng, đ iể m nút lưới có phạ m vi < x < 200, < y < 200 Khoả ng cách điể m nút lưới theo phương x Δx = 10, theo phương y Δy = Nghĩ a tọa đ ộcủ a tấ t cảcác đ iể m nút lưới có ng: ⋮ 0,0⋮ ⋮ 10,0⋮ ⋮ ⋮ 200,0 ⋮ ⋮ 0,4⋮ ⋮ 10,4⋮ ⋮ ⋮ 200,4 ⋮ ⋮ x i , y i⋮ = ⋮ ⋮ ⋮ ⋮ 0,200 ⋮ ⋮ 10,200 ⋮⋮ ⋮ 200,200 ⋮ [ ] Lệ nh meshgrid sẽgiúp ta làm đ iề u đó: [x, y] = meshgrid(0:10:200, 0:4:200); (Một lầ n cầ n ý dấ u ; ởcuối câu lệ nh, nế u không rấ t nhiề u sốsẽđược in hình!) Lệ nh meshgrid lấ y hai thông số : thông sốvec-tơthứnhấ t tọ a độtrên trục x, thông sốvec-tơthứhai tọ ađ ộtrên trục y Kế t quảta đượ c ma trậ n - 55 - Bài giảng Tin Ứng dụng – Matlab đ iể m vùng hình chữnhậ t (51 × 21) có tọ ađ ộtương ứng dựng từcác vec-tơtrên6 Sau đ ó mả ng z sẽđ ược tính từmả ng y theo cơng thức Dean: z = -0.1 * y ^ (2/3); Trong cầ n ý phép tính lũ y thừa cho phầ n tử Câu lệ nh đơn giả n nhấ t đểhiể n thịmả ng màu biể u thịz là: pcolor(x, y, z) Bả ng màu mặ c đị nh dùng có tên jet Ta có thểthay bả ng màu bằ ng sốbả ng màu khác, chẳ ng hạ n: colormap(gray); pcolor(x, y, z); Cầ n hiệ n tên trụ c x y theo cách tương tựnhưta đ ã làm với biể uđ ồdạ ng đ ường: xlabel('x(m)'); ylabel('y(m)'); Hình 11: Bảng màu biể u thịđị a hình đáy biển với mặt cắt ngang cân theo Dean Có thểhiể n thịthanh thích bên cạ nh bả ng màu bằ ng lệ nh: colorbar Viế t thêm dòng chữz(m) bên cạ nh chỉdẫ n màu bằ ng cách Insert – Text Box Xóa bỏđ ường bao củ a hình chữnhậ t bằ ng cách nháy phả i chuộ t – Line Style – None Chú ý rằ ng hiệ n bả n đồđị a hình / bả n vẽmặ t bằ ng, hầ u hế t trường hợp ta muố n đặ t tỷlệbằ ng hai trục x y Khi đ ó ta dùng lệ nh: axis equal; x y đ ề u ma trậ n chiề u Do đ iể m lướ i xế p theo hàng nên ta nhậ n thấ y phầ n tửgiố ng mỗ i cộ t củ a x (các đ iể m có tọ ađ ộx); tươ ng tựđ ố i với y [ 0 x= ⋮ 10 ⋮ 200 10 ⋮ 200 ⋮ ⋮ 10 ⋮ 200 0 ⋮ 4 ⋮ y= ⋮ ⋮ ⋮ 200 200 ⋮ 200 ] [ ] Bả ng màu jet mặ c dù rự c rỡnhưng không hiệ u quảkhi in trắ ng đ en, thay vào đ ó nên dùng bả ng màu gray - 56 - Bài giảng Tin Ứng dụng – Matlab Tiế p theo ta có khung củ a đồthịlạ i cho vừa với bả ng màu 8: axis tight; Và cũ ng nhưđố i với mả ng màu, ta có thểcă n nh trụ c cách hợp lý: axis equal tight; xlabel('x(m)'); ylabel('y(m)'); -3 -3 140 -2.5 120 -2.5 -2.5 100 -2 -2 -2 -1.5 -1.5 -1.5 80 60 Các đ ường đồ ng mức củ a đ áy biể n đ ã xuấ t hiệ n song song với trụ c x, cầ n phả i có giá trịsốtrên đường đ ồng mức: clabel(C,h); -3 160 y (m) Bên cạ nh cách dùng biể uđ ồmả ng màu, cịn có thểbiể u thịdưới ng đườ ng đồ ng mức Cách thường dùng với bả n in lên giấ y: [C,h] = contour(x,y,z);9 40 -1 -1 -1 20 -0.5 00 50 -0.5 100 x (m) -0.5 150 200 Hình 12: Đường đồng mức biể u diễn đị a hình đáy biể n với mặt cắt theo Dean Ta cũ ng có thểbiể u diễ n đị a hình ng không gian (3 chiề u) sửdụ ng lệ nh surf hoặ c mesh: figure; surf(x, y, z); figure; mesh(x, y, z); Sau đ ó sửdụng cơng cụxoay hình bằ ng cách ấ n nút Rotate 3D cơng cụ( ) Hai lệ nh có thểđ ượ c gộ p lạ i thành mộ t lệ nh axis equal tight Cách viế t có vẻkhác với câu lệ nh thơng thườ ng, nhiên theo MatLab, lệ nh vẽđ ề u có thểviế t dư ới ng hàm Chẳ ng hạ n, gõ thửlệ nh zzz = plot(t, z) Mặ t khác, có khác nế u ta gõ lệ nh clabel(contour(x,y,z)); ? - 57 - Bài giảng Tin Ứng dụng – Matlab Hình 13: Biể u diễn mặt cắt Dean dạng mặt chiều Hình 14: Biểu diễn mặt cắt Dean dạng lưới chiề u 7.2 Chỉđị nh vịtrí khơng gian chiều Khi thểhiệ n dữliệ u không gian bằ ng mả ng màu, sốtrường hợp ta phả i chỉra vịtrí thỏa mãn mộ t điề u kiệ n Cách đơn giả n nhấ t đ ánh dấ u chúng bằ ng điể m riêng Chẳ ng hạ n, chỉra vịtrí có z < -3 ví dụtrên Có hai bước nhưsau: Tìm số(i,j) ma trậ n có giá trịthỏa mãn z(i,j) < -3 Chấ m điể m xác đ ị nh x(i,j), y(i,j) lên mả ng màu ind = find(z < -3); hold on; plot(x(ind), y(ind), 'k.'); Hình 15: Đánh dấu mảng màu chiều 7.3 Mặt cắt đị a hình Trong nhiề u trường hợp cầ n biể u diễ n mộ t mặ t cắ t đị a hình từbiể uđ ồhai chiề u Và tổng quát hơn, có thểlà phân bốđộsâu nước, áp suấ t, độmặ n, hay bấ t kì biế n đặ c trưng dọc theo tuyế n xác đị nh mặ t bằ ng Sốliệ u mặ t cắ t lấ y từ1 cột (hoặ c hàng) từmả ng chiề u tương ứng Chẳ ng hạ n, mặ t cắ t có x = 100 m (tương ứng với cộ t thứ11 (trong số21 cộ t) ma trậ n z): - 58 - Bài giảng Tin Ứng dụng – Matlab ymc1 = y(11,:); zmc1 = z(11,:); plot(ymc1, zmc1, '*-'); xlabel('y (m)'); ylabel('z (m)'); 7.4 Trường véctơ Trong toán kỹthuậ t thủy độ ng lực thường u câu mơ trường dịng chả y Biể u diễ n dịng chả y khơng gian chiề u hỗtrợrấ t tốt MatLab bằ ng câu lệ nh: quiver(x, y, u, v) x, y hai ma trậ n chứa tọ a đ ộcủ a tấ t cảcác điể m theo phương ngang (thường đ ược phát sinh bằ ng lệ nh meshgrid); u v hai ma trậ n chứa thành phầ n lưu tố c củ a tấ t cảcác điể m (u lưu tốc theo phương x, v lưu tố c theo phương y) Giảsửtrong thưmụ c hiệ n thời đ ã có file data_u.txt data_v.txt, mỗ i file chứa ma trậ n giá trịu v Khi đ ó, hai ma trậ n đ ược đọ c nhưsau: u = dlmread('data_u.txt'); v = dlmread('data_v.txt'); Giảsửu v đ ã đọ c có kích thướ c giố ng = sốđ iể m trục x × sốđiể m trục y: [sizex, sizey] = size(u); Ta muố n biể u diễ n lên hình với, chẳ ng hạ n, Δx = 10 m Δy = m: dx = 10; dy = 5; [x, y] = meshgrid(0:dx:(sizex – 1)*dx, 0:dy:(sizey -1) * dy); figure; quiver(x, y, u, v); xlabel('X(m)'); ylabel('Y(m)'); axis equal tight; - 59 - Bài giảng Tin Ứng dụng – Matlab 50 Y (m) 40 30 20 10 0 20 40 60 80 X(m) Hình 16: Biểu diễ n trường vec-tơ - 60 - Bài giảng Tin Ứng dụng – Matlab PHẦN BÀI TẬP Bài tậ p số1: Tính tốn sóng theo sốliệ u sau: o T = s, H = m, α= 30 o o •G嫕gi trịcho biế n T, Ho, alpha0 •T嫕h Co •T嫕h L o •Mở1 file disperse.m bằ ng cách gõ>> edit disperse •Với file mởhãy gõ vào nội dung sau:function [L] = disperse(h, Lo) L = Lo; err = Inf; while err > 0.1; Ltry = Lo * tanh(2*pi*h / L); err = abs(Ltry - L); L = Ltry; end; •Ta đ ã thiế t lậ p đượ c hàm tính L từcác giá trịh Lo cho trước •Hãy thiế t lậ p vec-tơh chứa độsâu khác nhau: m, 3.2 m, , m Tính L tạ i độsâu cho bởih •T嫕h C tương ứ ng với L •Tính sin_alpha theo công thức sinα= sinα* C / Co(chú ý đ ơn vịđ ộ!) o •T嫕h alpha (d嫕g lệ nh asin) •T嫕h Kr = sqrt(cosα/ cosα ) o •T嫕h Ksh theo cg thc Ksh = ãTớnh H = Ho ì Ksh × Kr •Ghi lạ i c嫕gi trịcủa H - 61 - Bài giảng Tin Ứng dụng – Matlab •Viế t kế t quảra file ketqua.txt Bài tậ p số2 Quan hệgiữa vậ n chuyể n bùn cát S lưu tốc u có quan hệdạ ng: S = aub Đểxác đ ị nh hệsốa b ngườ i ta tiế n hành thí nghiệ m thu đượ c kế t quảsau: u (m/s) 0.2 0.35 0.57 0.68 0.81 0.96 1.12 S (m3 /s.m) 0.0002 0.0018 0.0159 0.0282 0.0609 0.1258 0.2858 1) Hãy nhậ p giá trịu S vào hai vec-tơ, sau đ ó tính X Y logarit tương ứ ng củ a u S 2) Vẽđồthịđ iể m X Y 3) Hai hệ số a b đ ược xác đ ị nh bằ ng cách dựa vào quan hệ : log S = log a + b log u, hay Y = b X + log a Sửdụng hàm polyval đ ểtính b log a phương trình nhưsau: p = polyval(X, Y, 1) Phầ n tửđ ầ u củ a vec-tơp b; phầ n tửthứ2 p bằ ng log a Hãy tính a 4) Vẽđ ồthịđ ường thẳ ng: Y = b X + log a lên hệtrục với đ iể m chấ mở câu 2) Bài tậ p số3 1) Một chuỗi sốliệ u đo đ c vậ n tốc dòng chả yđ ược phát sinh bởi: t = 0:0.5:48; N dãy sốngẫ u nhiên có chiề u dài bằ ng length(t) u = 0.4 + 0.12 sin(2πt / 24) + 0.05 N 2) Tính ứ ng suấ t tiế p tạ i ven bờ, biế t 0.5 C = 60 m /s τ= ρg u / C Thiế t lậ p subplot hàng × cột Hai vùng vẽhai đồthịu ~ t, τ~ t 3) Nế u bờcó thành phầ n đấ t sét với ứng suấ t tiế p tới hạ nτ c = 0.65 N/m , xem có thời điể m xuấ t hiệ n τ> τ c - 62 - Bài giảng Tin Ứng dụng – Matlab 4) Công thức xói lởđ ường bờđược xác đị nh bởi: Hãy tính khoả ng cách xói lởE E = 10 (τ– τ u τ> τ c) nế c = trường hợp lạ i VẽE ~ t lên vùng đ ồthịdưới tạ o subplot Bài tậ p số4: Cho véctơX = [10 20 30] Y = [10 40 30] Tính diệ n tích tam giác tạ o đỉ nh có tọa đ ộ X(1)Y(1), X(2)Y(2), X(3)Y(3) Tổ ng quát hơn, tính diệ n tích đ a giác n cạ nh (trên mặ t phẳ ng chiề u) với tọa độ xi yi đỉ nh thứi cho phầ n tửthứi củ a véctơX Y tương ứng (do đ óX Y véctơcó chiề u dài = n) LỜI GIẢI Bài tậ p số1: Hướng dẫ n: tạ o mộ t script file có tên baitap1.m, soạ n thả o nội dung dư ới đây, ghi lạ i Sau chạ y file này, ta sẽthu kế t % baitap1 % Inputs: T, H0, alpha0 % Outputs: C0, L0, L % clear all; g=9.81; T=8; H0=2; alpha0=30; % L0=g*T^2/(2*pi) C0 = L0/T; h=[3:0.2:4] % n=length(h); % for i = 1:n - 63 - Bài giảng Tin Ứng dụng – Matlab % L(i)=disperse(h(i), L0); % end; L = disperse(h,L0); % Wave length C=L/T % Wave celerity sin_alpha=sin(alpha0)/C0*C alpha = asin(sin_alpha) % arcsin Kr=sqrt(cos(alpha0)./cos(alpha)) % Refraction coefficient k=2*pi./L % Wave number Ksh=sqrt(1./tanh(k.*h)/(1+2*k.*h/sinh(2*k.*h))) % Shoaling coefficient H=H0*Ksh.*Kr % Wave height Bài tậ p số2: Hướng dẫ n: tạ o mộ t script file có tên baitap2.m, soạ n thả o nội dung dư ới đây, ghi lạ i Sau chạ y file này, ta sẽthu kế t (Bài làm theo bước nhưtrên lớp: tính log(u), log(S), vẽlên trục tọ a độ thường (khơng vẽlên trụ c loga ởđ ây ta tính giá trịcủa loga rồ i), xác đ ị nh hệsốa, b củ a đường thẳng mộtcách gầ nđ úng đồthị ) Bài tậ p số3: Hướng dẫ n: tạ o mộ t script file có tên baitap3.m, soạ n thả o nội dung dư ới đây, ghi lạ i Sau chạ y file này, ta sẽthu kế t clear all; t=0:0.5:48 N=rand(1,length(t)); u=0.4+0.12*sin(2*pi*t/24)+0.05*N plot(N); hold on; plot(u,'+'); C=60; Rho = 1000; g=9.81; To = Rho*g/C^2*u.^2 plot(t,To) hold on grid on Toc = 0.65 10 * (To - Toc) * (To > Toc) + * (To > dientich(X,Y) Lưu ý rằ ng hàm tính diệ n tích ngầ mđ ị nh rằ ng véc tơX, Y ởđây đ ã chứa sốliệ u cho trước vềtọa độcác đ ỉ nh củ ađ a giác theo nhưquy ớc Hơ n nữa, nhậ p tọa đ ộta đ ánh sốcác đỉ nh từ1 đ ế n n theo chiề u kim đồ ng hồ * Đểtính diệ n tích tam giác S với chiề u dài cạ nh cho trước a, b, c, bạ n thửthuậ t tốn khác nhưsau: S p ( p a)( p b)( p c ) với p=(a+b+c)/2 nửa chu vi - 65 - Bài giảng Tin Ứng dụng – Matlab TÀI LIỆU THAM KHẢO: Matlab R14 - Helps & Demos, The Mathworks, Inc., 2004 David F Griffths, An introduction to Matlab, Department of MathematicsThe University of Dundee – Sweden, 1996 John M Stockie, A Whirlwind Tour of MATLAB for Students of CS 3113, Department of Mathematics and Statistics, University of New Brunswick Canada, 2003 Bill Mason, Introduction to Matlab, Northeastern University - College of Computer and Information Science – USA, 2003 Tobin A Driscoll, Crash course in MATLAB, Department of Mathematical Sciences - University of Delaware – USA, 2006 Nguyễ n Hoàng Hả i & Nguyễ n Việ t Anh, Lập trình Matlab ứng dụng, NXB Khoa học Kỹthuậ t – Hà Nội, 2005 Nguyễ n Phùng Quang, Matlab & Simulink dành cho kỹsưđ iề u khiể n tự đ ộ ng, NXB Khoa họ c & Kỹthuậ t – Hà Nộ i, 2006 Nguyễ n Phương Thả o, Programming in Matlab, handouts, 2007 ĐH Thủy Lợi, Matlab version 7.0 cơbả n, Khóa tin học nâng cao cho cán bộgiả ng dạy củ a dựán 95 bộNN&PTNT, handouts, 2007 10 Knight A., Basics of MatLab® and beyond, CRC Press, 2000 11 Timothy A Davis & Kermit Sigmon, Matlab® Primer, Chapman & Hall/CRC 12 R J Braun, Beginning Matlab Exercises, Department of Mathematical Sciences – University of Delaware – USA - 66 - ...Bài giảng Tin Ứng dụng – Matlab MỤC LỤC CHƯƠNG I: MATLAB CĂN BẢN 1.1 Matlab – ngơn ngữcủa tính tốn kỹthuậ t .4 1.2 Khảnăng ứng dụng Matlab 1.3 Đặ c điể m Matlab ... c dòng lệ nh - 14 - Bài giảng Tin Ứng dụng – Matlab CHƯƠNG II: TÍNH TỐN TRONG MATLAB 2.1 Matlab - máy tính cá nhân * Giới thiệ u toán tửs? ?học: - Các toán tửsốhọ c Matlab hoạ t độ ng theo cú pháp... hệthống Matlab Đểcó hiể u biế t sâu sắ c chi tiế t hơn, xin tham khả o giáo trình Matlab chuyên dụng khác hiệ n có thịtrường -4- Bài giảng Tin Ứng dụng – Matlab VD: Hãy tham khả o demo củ a Matlab