1. Trang chủ
  2. » Công Nghệ Thông Tin

Matlab - Tin học ứng dụng - Chương 2

12 3 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 791,14 KB

Nội dung

Tài liệu tham khảo bài giảng Matlab - Tin học ứng dụng ( Nguyễn Bá Tuyên & Nguyễn Quang Chiến ) dành cho sinh viên chuyên ngành kỹ thuật biển gồm 7 chương và phần bài tập - Chương 2 TÍNH TOÁN TRONG MATLAB

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 tốn tửsốhọc: - Các toán tửsốhọ c Matlab hoạ t độ ng theo cú pháp rấ t giố ng với cú pháp ngôn ngữkhác mà bạ n có thểđã quen thuộc nhưTurbo Pascal, C, C++, Fortran, Java - Các tốn tửcơbả n gồm có + - * / ^ = chúng dùng kế t hợp với ngoặ cđ ơn: ( ) Toán tử'=' toán tửgán Toán tử ^ đ ược dùng đ ểcho lũ y thừa: 2^4=16 Với tốn tửnày ta có thểdùng Matlab nhưmộ t máy tính cá nhân đ ơn giả n * Ví dụ: Bạ n có thểđánh lệ nh vào sau dấ u nhắ c lệ nh: >>_ >> A = + 3/4*5 A = 5.7500 >> B = 2^5 - 3*A B = 14.7500 >> A + B ans = 20.5000 Khi tốn tửgán, Matlab trảkế t quảcủ a phép tính gầ n nhấ t vào biế n 'ans = ' (answer) Xem thêm mục 2.2 * Thứtựưu tiên tính tốn: Trong ví dụtrên, Matlab tính nhưthếnào, + 3/(4*5) hay + (3/4)*5? Matlab làm việ c theo thứtựưu tiên sau: đạ i lượng ngoặ cđ ơn, + 3^2  lũy thừa + = 11, * /, làm việ c từtrái qua phả i (3*4/5 = 12/5), + -, làm việ c từtrái qua phả i (3+4-5=7-5), Vì vậ y phép tính ởtrên sẽtheo thứtựư u tiên * Bộcác tốn tửcủa Matlab: (Xem thêm Help/Arithmetic operators) Tốn tử Mơ tả + Cộng - Trừ - 15 - Bài giảng Tin Ứng dụng – Matlab 2.2 .* Nhân mả ng kích thước (nhân phầ n tửvới phầ n tử) / Chia mảng kích thước (chia phần tửvới phầ n tử) \ Chia mảng trái : Toán tửHai chấ m ^ Lũy thừa mảng, lũy thừa phầ n tửvới phầ n tử ' Chuyển vịmảng ' Chuyển vịma trận - ma trậ n liên hợp (MTLH phức) * Nhân (ma trậ n) Đạ i sốtuyế n tính / Chia (ma trận), B/A B*inv(A), xác B/A=(A'\B') \ Chia (ma trận) trái A\B ~ inv(A)*B ^ Lũy thừa ma trận Biến Matlab * Ví dụ: >> 2^3-3 ans = >> ans*6 ans = 30 - Kế t quảcủa phép tính thứnhấ tđ ược Matlab gán cho biế n 'ans', biế n đ ược sử dụ ng cho phép tính thứhai, qua đ ó giá trịcủ a đ ược thay đổ i (được gán lạ i) - Chúng ta có thểsửdụng tên riêng ta đ ặ tđ ểlưu giá trị số >> x = 2^3-3 x = >> y = x*6 y = 30 từđó 'x' có giá trịbằ ng 'y' bằ ng 30 Chúng có thểđ ược sửdụng cho tính tốn tiế p theo - Đây ví dụvềvềcâu lệ nh gán: giá trịđược gán cho biế n Cầ n phả i gán giá trịcho mỗ i biế n trước sửdụng biế n câu lệ nh tiế p theo * Quy tắ c đặ t tên biế n: - Tên biế n hợp lệcấ u tạ o chữvà số, bắ tđ ầ u bằ ng chữ Nên đặ t tên biế n phả n ánh giá trịmà đạ i diệ n cho Các tên sau hợp lệ : - 16 - Bài giảng Tin Ứng dụng – Matlab Hsig, Let2try, Dhaluu, T1, V2, z25c5 Các tên sau không hợp lệ : chu-ky, 2P, %x, @wru - Chiề u dài tên biế n: Mặ c dù tên biế n có thểcó đ ộdài tùy ý, Matlab sẽchỉ sửdụ ng N ký tựđ ầ u tiên củ a tên, vậ y biế n khác khơng đ ược có N ký tựđầ u tiên đề u giống N = namelengthmax N = 63  - Bạ n có thểsựdụng hàm 'isvarname' đểkiể m tra tính hợp lệcủ a tên biế n Hàm trả vềgiá trị1 nế u tên hợp lệvà nế u tên khơng hợp lệ isvarname 8th_column ans =  % Not valid - begins with a number - Thông thường, tên biế n không phụthuộc vào chữhoa - chữthường Vì thế'xyz' sẽgiố ng như'xYz' - Tránh đ ặ t tên biế n trùng với tên hàm chuẩ n, hoặ c từkhóa Matlab Vì nhưvậ y thơng thường bạ n sẽkhơng thểsửdụ ng hàm, từkhóa Matlab VD: Nế u bạ n gán cho biế n tên 'sqrt' giá trị , bạ n sẽkhơng thểsửdụ ng hàm că n bậ c hai (sqrt) nữa! - Matlab đ ă ng ký trước rấ t nhiề u từkhóa (xem bằ ng lệ nh 'iskeyword'): 'break' 'case' 'catch' 'continue' 'else' 'elseif' 'end' 'for' 'function' 'global' 'if' 'otherwise' 'persistent' 'return' 'switch' 'try' 'while' hàm, xem danh sách Help/Functions/Categorical List); hằ ng số Một sốhằ ng sốvà hàm thơng dụ ng có thểxem ởmục 2.5 2.6 2.3 Các kiểu dữliệu - Đị nh dạng kết * Tổng quát vềcác kiể u dữliệ u: - Matlab sửdụ ng 15 kiể u (loạ i) dữliệ u Mỗi kiể u dữliệ u đ ề uở ng củ a mộ t ma trậ n hoặ c mả ng Các mả ng hoặ c ma trậ n có kích cỡtố i thiể u 0-nhân-0 có thểphát triể n tới mả ng n-chiề u với kích cỡtùy ý - Ngồi cịn có kiể u dữliệ u người dùng đị nh nghĩ a (thiế t lậ p), kiể u hướng đ ối tư ợng, kiể u dữliệ u liên quan tớiJava - 17 - Bài giảng Tin Ứng dụng – Matlab Hình 2.1 Các kiể u dữliệ u Matlab * Đị nh ng kế t : - Sửdụ ng lệ nh 'format' đị nh ng Lệ nh chỉlàm thay đổ i cách mà kế t quảđư ợc hiể n thịtrên hình, khơng làm thay đ ổi độchính xác sốhoặ c phép tính Hầ u hế t phép tính sốhọ c củ a Matlab đượ c thực hiệ n với độchính xác Double, nghĩ a độchính xác 16 chữsốsau dấ u phẩ y thậ p phân - Đểthực hiệ n lênh, từdấ u nhắ c củ a cửa sổlệ nh đánh mộ t lệ nh sau: format short : dấ u phẩ y thậ p phân cốđ ị nh, chữsố format long : dấ u phẩ y cốđị nh, 15 chữsố format short e : ký hiệ u khoa họ c, chữsố format long e : ký hiệ u khoa họ c, 15 chữsố format short g : dấ u phẩ y cốđị nh hoặ c di độ ng, chữsố format long g : dấ u phẩ y cốđị nh hoặ c di độ ng, 15 chữsố format hex : format ng Hexa (hệ16) format '+' : dương (+), âm (-), ký tựtrắ ng (blank) ứng với format bank : Dollars cents format rat : tỷlệxấp xỉinteger - Thông thường, 'format short' ng mặ c đ ị nh Khi đ ược gọ i lên, ng format sẽcó hiệ u lực tới đ ược thay đổ i 2.4 Các kiểu dữliệu số& sốphức - Integer: ví dụnhư-5 hay 9888 - 18 - Bài giảng Tin Ứng dụng – Matlab - Double precision reals: Trong Matlab, tấ t cảcác sốthực đ ược lưu với đ ộchính xác double, khơng giố ng ngơn ngữlậ p trình khác nhưC hay Fortran chỉcó loạ i riêng biệ t float hay real*8 cho sốthực vớiđộchính xác single - Một ng ngắ n cực kỳhiệ u quảcho việ c nhậ p sốrấ t lớn hoặ c rấ t bé ng -7 ký hiệ u 'e' Chẳ ng hạ n -1.23456e-7 ng ngắ n -1.23456 x 10 ; 8.76e+12 12 ng viế t ngắ n 8.76 x 10 Ví dụ : >> 1.23e-2 ans = 0.0123 >> 5e6 ans = 5000000   - Sốphức: đ ược nhậ p vào ng 3+2*i hoặ c 3+2*sqrt(-1) - Chuỗ i: mộ t mả ng tậ p hợp củ a ký tự, nhậ p vào ng 'abc' hoặ c 'vi du day la mot chuoi' Trên đ ây kiể u dữliệ u cơbả n mà bạ n sẽrấ t thường dùng khóa học Đểbiế t danh sách đ ầ yđ ủhơn, bạ n có thểdùng lệ nh 'help datatypes' từcửa sổ nhậ p lệ nh 2.5 Các ký tự, Chuỗi Văn - Khảnă ng xửlý vă n bả n tính tốn rấ t hữu ích cho việ c nhậ p/xuấ t kế t từ/tới hình file lưu đĩ a Đểcó thểquả n lý vă n bả n, loạ i dữliệ u 'character' đưa vào Matlab Mộ t mả nh vă n bả nđ ơn giả n mộ t chuỗi (vectơ) hay mảng ký tự VD: >> t1='A'  sẽgán giá trịA cho mộ t mả ng ký tựtên 't1', kích thước x >> t2='BCDE'  sẽgán giá trịBCDE cho mộ t mả ng ký tựtên 't2', kích thước x - Các chuỗi có thểđ ược cộ ng với bằ ng cách sửdụ ng toán tửthao tác mả ng VD: >> t3=[t1, t2]  sẽgán giá trịABCDE cho mộ t mả ng ký tựtên 't3', kích thước x >> t4=[t3, ' la ky tu dau tien 'trong bang chu cai latinh.'] sẽgán giá trị 'ABCDE la ky tu dau tien ' 'trong bang chu cai latinh.' cho mả ng ký tựtên 't4', kích thước x 26 - 19 - ';  ' Bài giảng Tin Ứng dụng – Matlab - Cầ n ý rằ ng sốcác ký tựởhai dòng phả i bằ ng nhau, nế u không việ c thực thi câu lệ nh sẽdẫ n tới lỗi: ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns - Dấ u ba chấ m ' ' thểhiệ n rằ ng câu lệ nh tiế p tục ởdòng sau * Chuyể n đổ i chuỗi số - Đôi cầ n chuyể n mộ t chuỗi thành mộ t sốtương ứng, hoặ c ngược lạ i Các công việ c chuyể n đổ i thực hiệ n lệ nh: - 'str2num': chuyể n chuỗi thành sốtương ứng hai lệ nh: - 'num2str': chuyể n sốthực thành chuỗ i tươ ng ứng - 'int2str': chuyể n chuỗi thành sốtương ứng - Những lệ nh rấ t hữu ích việ c tạ o nhãn tiêu đềmột cách tự đ ộ ng, chẳ ng hạ n 2.6 Các sốdựng sẵn Matlab đ ị nh nghĩ a sẵ n nhiề u hàm sốrấ t hữu ích, bao gồm:  pi, = 3.141592654  i j, cảhai đ ề u phầ n ảo sốphức, = sqrt(-1)  inf, 'infinity' hay 'vô cùng'  NaN, 'not-a-number' hay 'không phả i mộ t số '  ans, gán cho kế t quảcủ a lệ nh tính trước đ ó  Bạ n nên tránh gán lạ i giá trịkhác cho hằ ng sốnêu nế u Chỉcó ngoạ i lệlà i j, cảhai thường đ ược sửdụng nhưcác chỉsốcủ a vòng lặ p Việ c gán lạ i giá trịkhác cho hằ ng sốnày chấ p nhậ nđ ược sốphức ln thu bằ ng cách sửdụng sqrt(-1) 2.7 Các hàm dựng sẵn - Cũng nhưnhững ngôn ngữbậ c cao khác, Matlab thực thi 'function' (hàm) nhiề u 'procedure' (chương trình con) Các hàm bao gồm că n bậ c hai - 20 - Bài giảng Tin Ứng dụng – Matlab (sqrt), lũy thừa (exp), logarit (log, log10, log2), giá trịtuyệ t đố i (abs), hàm lượng giác (sin, cos, tan, atan, ) Ví dụ : >> sin(45) ans = 0.8509  trảkế t quảbằ ng sin củ a 45 radians mà thực ý đị nh bạ n tính sin củ a 450, 45 sẽbằ ng 180 radians: >> sin(45/180*pi)  ans = 0.7071 kiể m tra lạ i xem bạ n có thu đ ược nhưđ ã đị nh không  >> sqrt(2)/2 ans = 0.7071 - Chú ý rằ ng tấ t cảcác tính tốn củ a Matlab đề u có lỗ i làm trịn, mà đ ôi bạ n lạ i thấ y mộtcách không mong đợi Ví dụ , bạ n khơng nên ngạ c nhiên thấ y >> tan(pi)  ans = -1.2246e-016 Nên nhớrằ ng lỗi làm trịn có mặ t ởkhắ p nơi, nên đơn giả n tiế p nhậ n kế t quảnày nhưtan()=0 * Danh mục hàm dựng sẵn phổbiế n: Các hàm lượng giác: sin - hàm sin sind - sin argument tính theo độ sinh - sin hypecbolic asin - arcsin, hay hàm nghị ch đ ả o củ a hàm sin asind - hàm nghị ch đả o hàm sin, kế t quảtheo đ ộ asinh - hàm nghị ch đả o hàm sin hyperbolic cos - hàm cos cosd - cos củ a argument tính theo độ cosh - cos hyperbolic acos - hàm nghị ch đả o hàm cos acosd - hàm nghị ch đả o hàm cos, kế t quảtheo đ ộ acosh - hàm nghị ch đả o hàm cos hyperbolic - 21 - Bài giảng Tin Ứng dụng – Matlab tan - hàm tang tand - tang argument tính theo đ ộ - tang hyperbolic atan - hàm nghị ch đả o hàm tang atand - hàm nghị ch đả o hàm tang, kế t quảtheo đ ộ atan2 - hàm nghị ch đả o hàm tang góc phầ n tư atanh - hàm nghị ch đả o hàm tang hyperbolic cot - hàm côtang cotd - côtang củ a argument tính theo đ ộ coth - cơtang hyperbolic acot - hàm nghị ch đả o hàm côtang acotd - hàm nghị ch đả o hàm côtang, kế t quảtheo độ acoth - hàm nghị ch đả o hàm côtang hyperbolic Các hàm lũy thừa: exp - hàm mũ expm1 - tính xác exp(x)-1 log - logarit cơsốtựnhiên log1p - tính xác log(1+x) log10 - logarit cơsố10 reallog - loga cơsốtựnhiên sốthực realsqrt - că n bậ c hai củ a số>= sqrt - că n bậ c hai nthroot - nghiệ m thực bậ c n sốthự c Các hàm liên quan đ ế n sốphức: abs - giá trịtuyệ t đố i angle - góc pha complex - xây dựng dữliệ u vềsốphức từcác phầ n thực ả o conj - liên hợp phức imag - phầ nả o phức real - phầ n thực củ a phức isreal - hàm logic, trảvềgiá trị'true' với mả ng sốthực - 22 - Bài giảng Tin Ứng dụng – Matlab cplxpair - sắ p xế p sốvềcác cặ p liên hợp phức Các hàm làm tròn phầ n dư: fix - làm trịn vềphía floor - làm trịn vềphía âm vơ ceil - làm trịn vềphía dư ơng vơ round - làm trịn vềphía sốngun gầ n nhấ t mod - mô đ un (lấ y phầ n dưcủa phép chia) rem - lấ y phầ n dưcủ a phép chia (tương tựmod) sign - hàm lấ y dấ u củ a biế n, trảvề+1, 0, -1 (+, 0, -) Ví dụ: mod([1 7],3)  ans = 2.8 1 Các phép toán quan hệ * Các toán tửquan hệ(so sánh): Toán tử Cú pháp Mô tả < A= A >= B Lớn bằ ng == A == B Bằng ~= A ~=B Không * Mô tả: - Các toán tửquan hệthực hiệ n sựso sánh phầ n tửvới phầ n tửgiữa hai mả ng Nó cho kế t quảlà mả ng logic có kích cỡ, với phầ n tửcủa mả ng đ úng (1) nế u quan hệđ ó đúng, phầ n tửcủ a mả ng sai (0) nế u khơng - Các tốn tử, = chỉsửdụ ng phầ n thực củ a toán hạ ng cho phép so sánh Các toán tử== ~= kiể m tra cảphầ n thực phầ nả o Ví dụ:  >> X = 5*ones(3,3) X = 5 - 23 - Bài giảng Tin Ứng dụng – Matlab 5 5 5 >> Y= [1 3; 6; 9]  Y =  >> X >= Y ans = 1 1 0 0 Kế t quảđược trảvềdưới ng ma trậ n có kích thước với ma trậ n X Y Trong mỗ i phầ n tửcó giá trị1 (đúng - true) hoặ c (sai - false) tùy thuộc vào sựlogic củ a phép so sánh X>=Y 2.9 Các phép toán logic - Matlab biể u diễ nđ úng sai sốnguyên tố1 0: đ úng = 1, sai = (true = 1, false = 0) - Ví dụtrong q trình tính tốn, biế n x (x đạ i lượng vô hướ ng) nhậ n giá trịbấ t kỳ , có thểtiế n hành phép kiể m tra logic cho nó: x == xem x có bằ ng khơng? x ~= xem x có khác khơng? x>2 xem x có lớn khơng? x= xem x có lớn hoặ c bằ ng khơng? x > x = pi x = 3.1416 >> x ~= ans = >> x ~= pi    - 24 - Bài giảng Tin Ứng dụng – Matlab ans = - Khi X véc tơhay ma trậ n, phép kiể m tra sẽđ ược tiế n hành cho phầ n tửcủ a X Ví dụởmục trước (2.8), phép kiể m tra xem X có lớn hoặ c bằ ng Y hay không cho ta kế t :  >> X >= Y ans = 1 1 0 0 - Chúng ta có thểphối hợp phép kiể m tra logic, ví dụ4 Y 6 >> Y>=4 & Y5) nghĩ a x khơng lớn 5, nế u x=4 phép kiể m tra sẽcho kế t quảđ úng (true), hay = - Mộ t ứng dụng khác phép kiể m tra logic ta có thể‘ xóa’(hay bỏ qua) phầ n tửnhấ tđ ị nh củ a ma trậ n:  tính phân bốlưu tốc theo chiề u sâu (tính từđáy kênh), ta có thểbỏ qua lớp biên với chiề u sâu nước z thỏ a mãn điề u kiệ n z N VD: >> H = [4.7506 1.1557 3.0342 3.8105 2.2823 0.0925 >> N = 3;  >> kiemtra = H > N  kiemtra = - 25 - 2.4299 4.1070 4.4565 (shift + ) 2.2235];  Bài giảng Tin Ứng dụng – Matlab 1 >> H = H.* kiemtra  H = 4.7506 3.0342 4.4565 3.8105 0 4.1070 0 Nhờđ ó véctơH bây giờchỉcịn chứa sốliệ u sóng có chiề u cao lớn ngưỡng 3m 2.10 Kết hợp nhiều lệnh dòng; Ẩn kết quảtính Dấ u phẩ y (,) dấ u chấ m phẩ y (;) ký tựcó ý nghĩ a đ ặ c biệ t Matlab, sẽchứng tỏlà rấ t hữu ích * Kế t hợp nhiề u lệ nh dịng: Tốn tửphẩ y (,) dùng đ ểnhóm nhiề u lệ nh dịng, ví dụ: >> x=3.5, y=-5.0, xˆ3 – y  x = 3.5000 y = -5 ans = 47.8750 * Ẩn kế t quảtính (Surpessing output) - Thơng thường, khơng muố n theo dõi tấ t cảcác tính toán trung gian, hay ta muốn ẩ nđ i mộ t câu lệ nh, mộ t diễ n giả i Khi đ ó ta dùng dấ u chấ m phẩ y (;) Ví dụ : >> x=3.5; y=-5.0; xˆ3 – y  ans = 47.8750 Trong ví dụtrên, kế t quảcủ a hai lệ nh gán đầ u tiên đ ãđ ược ẩ nđ i - 26 - ... 3.03 42 3.8105 2. 2 823 0.0 925 >> N = 3;  >> kiemtra = H > N  kiemtra = - 25 - 2. 429 9 4.1070 4.4565 (shift + ) 2. 223 5];  Bài giảng Tin Ứng dụng – Matlab 1 >> H = H.* kiemtra  H = 4.7506 3.03 42. .. : - 16 - Bài giảng Tin Ứng dụng – Matlab Hsig, Let2try, Dhaluu, T1, V2, z25c5 Các tên sau không hợp lệ : chu-ky, 2P, %x, @wru - Chiề u dài tên biế n: Mặ c dù tên biế n có thểcó đ ộdài tùy ý, Matlab. .. cosh - cos hyperbolic acos - hàm nghị ch đả o hàm cos acosd - hàm nghị ch đả o hàm cos, kế t quảtheo đ ộ acosh - hàm nghị ch đả o hàm cos hyperbolic - 21 - Bài giảng Tin Ứng dụng – Matlab tan -

Ngày đăng: 11/05/2021, 04:07