Xem mẫu

  1. TIN HỌC CHUYÊN NGÀNH DÀNH CHO KHOA CƠ ĐIỆN LẬP TRÌNH TÍNH TOÁN TRONG MATLAB SỐ TIẾT: 45 (30 LÝ THUYẾT + 15 THỰC HÀNH) 1. Sách, giáo trình chính: - Lập trình Matlab và ứng dụng, Nguyễn Hoàng Hải - Nguyễn Việt Anh, NXB Khoa học và kỹ thuật - Bài giảng LẬP TRÌNH TÍNH TOÁN TRONG MATLAB - Đỗ Thị Mơ 2. Sách tham khảo - Matlab for engineers, Adrian Biran - Moshe Breiner, Addision Wesley Publishing Company. - Cơ sở Matlab & ứng dụng, Nguyễn Hữu Tình-Lê Tấn Hùng- Phạm Thị Ngọc Yến-Nguyễ Thị Lan Hương, NXB Khoa học và kỹ thuật - Matlab & Simulink, Nguyễn phùng Quang, NXB Khoa học và kỹ thuật 3. Giáo viên: Đỗ Thị Mơ - Bộ môn Công nghệ phần mềm Email: dtmo@hau1.edu.vn Chương 1: Giới thiệu chung 1. Không gian làm việc của Matlab Cửa số lệnh của Matlab có dấu mời (dấu nhức) là dấu >>. Tại đây ta có thể gõ vào các lệnh của Matlab hoặc gõ các biến. Những lệnh hoặc biến được lưu trong không gian làm việc của Matlab và có thể được gọi lại khi ta cần. Dùng các mũi tên (↓↑ ) để chọn các lệnh, có thể cắt, copy, dán và sửa chữa dòng lệnh. Ví du: >> X=2 X= 2 >> A=’XIN CHAO’ A= XIN CHAO Nếu ta không nhớ tên biến, ta có thể yêu cầu Matlab cho danh sách các biến bằng cách đánh lệnh who từ dấu nhắc lệnh. >> who 1
  2. 2. Biến * Tên biến: Tên biến là một dãy kí tự được bắt đầu bằng chữ cái, có độ dài tối đa là 31 kí tự, bao gồm các chữ cái, chữ số và dấu gạch dưới ( _ ), có phân biệt chữ hoa và chữ thường. Ví dụ : x ; a12 ; b_a Có thể gán giá trị cho tên biến bằng cách viết : Tên_biến = biểu thức Ví dụ : >> x=20 >>a12=4 >>A12= ‘ABCD’ * Matlab có các biến đặc biệt được cho trong bảng sau: Giá trị Các biến đặc biệt Ans Tên biến mặc định dùng để trả về kết quả π = 3.1415 Pi Eps Số nhỏ nhất, nếu cộng thêm 1 sẽ được số nhỏ nhất lớn hơn 1 Flops Số của phép toán số thực Inf Để chỉ số vô cùng như kết quả của 1/0 NAN hoặc nan Dùng để chỉ số không xác định như kết qẩu của 0/0 −1 i=j= i hoặc j Nargin Số các đối số đưa vào hàm được sử dụng narout Số các đối số hàm đưa ra realmin Số nhỏ nhất có thể được của số thực realmax Số lớn nhất có thể được của số thực 2
  3. Các biến đặc biệt ở trên có sẵn giá trị, nếu ta thay đổi giá trị của nó thì giá trị ban đầu sẽ mất cho đến khi ta khởi động lại Matlab thì nó mới trở lại giá trị ban đầu. Không nên thay đổi giá trị của các biến đặc biệt. Ví dụ: >> i ans = 0 + 1.0000i >> j ans = 0 + 1.0000i >> i*i ans = -1 >> pi ans = 3.1416 >> eps ans = 2.2204e-016 >> realmin ans = 2.2251e-308 >> realmax ans = 1.7977e+308 3. Xoá các biến trong không gian làm việc Để xoá các biến ta dùng lệnh clear , có các cách sau: - Xoá một biến clear tên_biến >> clear x - Xoá nhiều biến clear tên_biếm1 tên_biến2 >> clear a b c - Xoá một nhóm biến tên trùng nhau một số kí tự: clear a* % xoá các biến có tên bắt đầu là a. 3
  4. - Xoá tất cả các biến trong không gian làm việc: clear Dùng lệnh trên tất cả các biến bị xoá không khôi phục được, do vậy ta phải thận trọng khi dùng nó. 4. Câu gải thích và sự chấm câu * Câu giải thích: Câu giải thích được viết sau dấu % >> a=100 % a nhận giá trị 100 * Có thể viết nhiều lệnh trên một dòng, chúng được ngăn cách bởi dấu phẩy hặc dấu chấm phẩy. Dấu phẩy là yêu cầu hiển thị kết qủa trên màn hình, còn dấu chấm phẩy là không hiển thị kết quả trên màn hình.Ví dụ: >> A=2,B='abcde',x=456.32;y='mnopq' A= 2 B= abcde y= mnopq * Dùng dấu ba chấm ( . . . ) viết sau phép toán để chỉ câu lệnh được tiếp tục ở hàng dưới. Không dùng dấu ba chấm cho các trường hợp khác, hay cho câu giải thích. >> x=10,y=20 x= 10 y= 20 >> z=x+... y z= 30 5. Các phép toán số học Các phép tính số học của Matlab được cho trong bảng sau : Kí hiệu Ví dụ Phép tính Phép cộng + 5+4 Phép trừ - 8-2 Phép nhân * 3*5 Phép chia / ( chia trái) ,\ (chia phải) 4/2=2 hoặc 2\4=2 Phép luỹ thừa ^ 2^3 4
  5. Các phép tính trên có mức độ ưu tiên như sau : 1. Phép luỹ thừa. 2. Phép nhân, phép chia 3. Phép công, phép trừ. >> x=2+10/5+4^2-6*2 x= 8 6. Số phức Một trong các ưu thế của Matlab là làm việc với số phức. Số phức của Matlab được định nghĩa theo nhiều cách. * Cách 1 : Chèn kí tự i hoặc j vào phần ảo. >> c1=1+3i c1 = 1.0000 + 3.0000i >> c1=2-4j c1 = 2.0000 - 4.0000i * Cách 2 : Dùng căn bậc hai của số âm. >> c2=3+sqrt(-1) c2 = 3.0000 + 1.0000i >> c2=4-sqrt(-4) c2 = 4.0000 - 2.0000i * Cách 3 : Dùng biểu thức *i hoặc *j >> c3=2-sin(1)*j c3 = 2.0000 - 0.8415i >> c3=3+cos(1)*i c3 = 3.0000 + 0.5403i >> c3=4+2*i c3 = 4.0000 + 2.0000i >> c3=4+(6/3)*i c3 = 4.0000 + 2.0000i 5
  6. * Các phép toán đối với số phức đều thao tác tương tự như số thực. >> a=2+3i a= 2.0000 + 3.0000i >> b=1+4i b= 1.0000 + 4.0000i >> a+b ans = 3.0000 + 7.0000i >> a-b ans = 1.0000 - 1.0000i >> a/b ans = 0.8235 - 0.2941i >> a*b ans = -10.0000 +11.0000i * Có thể biểu diễn số phức ở dạng cực ( độ lớn và góc) M∠θ ≡ M.eiθ = a+bi Ở trên số phức biểu diễn bằng độ lớn M và góc θ, quan hệ giữa các đại lượng này và phần thực, phần ảo được biểu diễn dưới dạng đại số: M: dùng hàm abs để tính độ lớn, M=abs(so phuc). θ= tan-1(b/a): dùng hàm angle tính góc, θ = angle(so phuc) a= Mcosθ b= Msinθ Ví dụ: >> c=1+2i c= 1.0000 + 2.0000i >> M=abs(c) M= 3.1623 6
  7. % góc θ tính bằng radian >> goc=angle(c) goc = 1.1071 % radian >> goc_do=goc*180/pi % chuyển góc θ sang độ goc_do = 63.4349 % góc tính bằng độ 7. Các hàm toán học thông thường Kí hiệu hàm Ý nghĩa abs(x) Tính argument (độ lơn M) của số phức x acos(x) arccos x angle(x) Tính góc của số phức asin(x) arcsin x atan(x) arctang x atan(x,y) arctang của phần thực của x và y ceil(x) Xấp xỉ dương vo cùng conj(x) Số phức liên hợp cos(x) cosin x ex exp(x) fix(x) Xấp xỉ không floor(x) Xấp xỉ âm vô cùng gcd(x,y) Ước số chung lớn nhất của 2 số nguyên x và y imag(x) Hàm trả về phần ảo của số phức lcm(x,y) Bội số chung nhỏ nhất của 2 số nguyên x và y log(x) Lnx log10x log10(x) real(x) Hàm trả về phần thực của x rem(x,y) Phần dư của phép chia x/y round(x) Hàm làm tròn về số nguyên sign(x) Hàm cho dấu của x sin(x) sin x sqrt(x) Căn bậc hai của x tan(x) tang x 7
  8. >> x=abs(-2)/2 x= 1 >> x=sqrt(2)/2 x= 0.7071 >> y= sin(x) y= 0.7854 >>4*atan(1) ans= 3.1416 y=rem(10,3) % phần dư y= 1 >>gcd(18,81) % Ước số chung lơn nhất ans= 9 >>lcm(18,81) % bội số chung lớn nhất ans= 162 >> x=3/9+sin(3.14*17/180) x= 0.6256 >> x=3\9+sin(3.14*17/180) x= 3.2922 >> x=asin(3.14/4) x= 0.9027 8
  9. Bài tập chương 1 1. Tính tổng n số tự nhiên đầu tiên S=1+2+3+ ... + 179 2. Giải phương trình bậc 2 : 17x2 + 125x - 69 = 0 3. Giải hệ phương trình sau: 4. Tính hàm y theo công thức sau khi x=3: y= 3x3- 4x2 +7x +12 + 2sin 27o - 5. Tính hàm y theo công thức sau khi x=2 y= asin(x) + Chương 2: Cửa sổ lệnh, quản lý tệp, các cấu trúc điều khiển, hàm 1. Cửa số lệnh trong Matlab 1.1 Quản lý không gian làm việc của Matlab Các biến được tạo trong cửa sổ lệnh, được lưu trong không gian làm việc của Matlab. Ta có thể xem lại hoặc xóa các biến đó. * Xem tên biến dùng lệnh who > who Your variables are: a ans b c y * Để xem chi tiết hơn về các biến ta dùng lệnh whos >> whos Name Size Bytes Class a 1x1 8 double array ans 0x0 0 char array b 1x1 8 double array c 1x1 8 double array y 1x1 8 double array Grand total is 4 elements using 32 bytes 9
  10. * Để xóa các biến ta dùng lệnh clear Lệnh này ta đã xét ở mục 3 chương 1. Các tuỳ chọn khác nhau của lệnh clear ta có thể xem bằng lệnh help clear. >> help clear CLEAR Clear variables and functions from memory. CLEAR removes all variables from the workspace. CLEAR VARIABLES does the same thing. CLEAR GLOBAL removes all global variables. CLEAR FUNCTIONS removes all compiled M- and MEX-functions. CLEAR ALL removes all variables, globals, functions and MEX links. CLEAR ALL at the command prompt also removes the Java packages import list. CLEAR IMPORT removes the Java packages import list at the command prompt. It cannot be used in a function. CLEAR CLASSES is the same as CLEAR ALL except that class definitions are also cleared. If any objects exist outside the workspace (say in userdata or persistent in a locked m-file) a warning will be issued and the class definition will not be cleared. CLEAR CLASSES must be used if the number or names of fields in a class are changed. CLEAR VAR1 VAR2 ... clears the variables specified. The wildcard character '*' can be used to clear variables that match a pattern. For instance, CLEAR X* clears all the variables in the current workspace that start with X. If X is global, CLEAR X removes X from the current workspace, but leaves it accessible to any functions declaring it global. CLEAR GLOBAL X completely removes the global variable X. CLEAR FUN clears the function specified. If FUN has been locked 10
  11. by MLOCK it will remain in memory. Use a partial path (see PARTIALPATH) to distinguish between different overloaded versions of FUN. For instance, 'clear inline/display' clears only the INLINE method for DISPLAY, leaving any other implementations in memory. CLEAR ALL, CLEAR FUN, or CLEAR FUNCTIONS also have the side effect of removing debugging breakpoints and reinitializing persistent variables since the breakpoints for a function and persistent variables are cleared whenever the m-file changes or is cleared. Use the functional form of CLEAR, such as CLEAR('name'), when the variable name or function name is stored in a string. See also WHO, WHOS, MLOCK, MUNLOCK, PERSISTENT 1.2. Ghi và phục hồi dữ liệu * Ghi dữ liệu: Để ghi các dữ liệu( các biến) vào tệp kiểu nhị phân với tên do ta đặt và đuôi tệp là MAT, ta có thể dùng lệnh sau: >> Save Tên_tệp hoặc chọn các mục trên thanh Menu: File / Save Workspace as Ví dụ: >> save luu1 Các biến trong Matlab được lưu trong tệp luu1.mat Có thể ghi một số biến vào tệp theo lệnh sau: >> save tên_tệp biến1 biến2 ... Ví dụ: >>save luu2 a b c Các biến a,b,c được ghi trong tệp luu2.mat * Phục hồi dữ liệu: Để phục hồi dữ liệu (các biến) trong các tệp đã ghi ta dùng lệnh: >> Load tên_tệp Ví dụ: >>Load luu1 11
  12. 1.3. Khuôn dạng hiển thị số Matlab hiển thị kết quả dạng số mặc định: số nguyên và các dạng số khác trừ số thực hiển thị theo đúng dạng đưa vào. Dạng số thực hiển thị với mặc định là 4 chữ số sau dấu phẩy. Để tạo khuôn dạng riêng ta chọn các mục trong Menu: File / Preferences khi đó sẽ có hộp thoại Preferences như sau: Chọn mục Command Windows, trong mục Numeric format dùng để định dạng số có các định dạng sau: short hiện số có 5 chữ số 20.345 long hiện số có 16 chữ số 20.123456789123456 Short e hiện số có 5 chữ số với số mũ e 2.0345e+01 long e hiện số có 16 chữ số với số mũ e 2.0123456789123456e+1 short g chính xác hơn short hoặc short e long g chính xác hơn long hoặc long e hex số hệ 16 12ABF bank hai số thập phân 12.45 + hiện dương, âm hoặc bằng không + rational hiện ra dạng phân số nếu số thực co phần thập phân , ví du a=12.25 thì hiển thị kết quả trên màn hình là 48/4 12
  13. 2. Script file hay M-file Trong Matlab ta gõ lệnh vào từ cửa sổ lệnh, các lệnh sẽ được thực hiện ngay, nếu muôn thực hiện lại các lệnh ta lại phải gõ lại, như vậy không tiện lợi. Đẻ thuận lợi cho việc gõ các lệnh và lưu trữ lại các lệnh Mtlab cho phép mở file dạng văn bản để ghi các lệnh, file này gọi là Script file hay M_file, phần mở rộng ( đuôi file) là m. * Các lệnh về M-file: - Mở tệp m-file mới: chọn các mục trong menu: File / new / M-file - Mở tệp m-file cũ: chọn các mục trong menu: File / Open sau đó chọn tên tệp m-file cần mở. - Ghi tệp m-file : chọn các mục trong menu: File / save sau đó gõ vào tên tệp m-file. - Để chạy các lệnh của M-file , trên cửa số của script file ta chọn các mục Debug / Run , nhập dữ liệu từ cửa sổ lệnh (Command windows ) - Matlab cung cấp một số hàm sử dụng trong m-file: Display(tên_biến) hiển thị kết quả không có tên biến Echo điều khiển cửa sổ lặp lại các lệnh của script file Input sử dụng dấu nhắc để đưa dữ liệu vào Keyboard trao điều khiển tạm thời cho bàn phím Pause dừng lại cho đến khi người dùng nhấn một phím bất kỳ Pause(n) dừng lại n giây Waitforbuttonpress dừng lại cho đến khi người dùng nhấn một phím bất kỳ. Ví dụ 1: tạo một m-file có tên là thu1.m chứa các lệnh tính diện tich tam giác khi biết đường cao và cạnh đáy. Chọn các mục File / new / M-file, tại cửa sổ Script file ta nhập vào các lệnh tính như sau Sau đó chọn File / save và gõ vào tên tệp là thu1.m Chọn Debug / Run để chạy hàm, nhập dữ liệu cho chiều cao, cạnh đáy của tâm giác từ cửa sổ lệnh. Ví dụ 2: tạo một m-file có tên là tinhham.m, nội dung chứa các câu lệnh sau: 13
  14. Sau đó chọn Debug / Run để chạy hàm, nhập dữ liệu cho a, b, c từ cửa sổ lệnh. * Một số lệnh quản lý tệp : - cd hiển thị thư mục hiện thời - cd tên_thư_mục thay đổi thư mục đưa ra - dir danh sách các file trong thư mục hiện thời - edit tên_tệp_m_file mở tệp để sọan thảo - delete tên_tệp_m_file xoá tệp - path hiển thị hoặc sửa đường dẫn - type tên_tệp_m_file hiển thị nội dung M-file trong cửa sổ lệnh - what hiện danh sách các m-file và MAT-file 3. Các cấu trúc điều khiển 3.1. Cấu trúc rẽ nhánh IF ... End * Trường hợp đơn giản: If biểu thức điều kiện khối lệnh end Nếu biểu thức điều kiện là đúng thì khối lệnh được thực hiện. Ví dụ: >> a=10 >> if a>0 x=3*a end >> x x= 30 * Trường hợp có hai điều kiện thay đổi: if biểu thức điều kiện khối lệnh 1 else khối lệnh 2 end Nếu biểu thức điều kiện đúng thì thực hiện khối lệnh 1, còn sai thì thực hiện khối lệnh 2. 14
  15. Ví dụ: Tìm nghiệm thực của phương trình bậc 2 function giaiptbac2() a=input('a='); b=input('b='); c=input('c='); d=b*b-4*a*c if d
  16. Ví dụ: Tính tiền điện, giả sử tính theo cách 50 số đầu 500 đồng 1 số, 50 số tiếp theo 700 đồng 1 số, 50 số tiếp theo 1000 đồng 1 số, 50 số tiếp theo 1500 đồng 1 số, các sô tiếp theo 2000 đồng 1 số function tinhtiendien() csd=input('chi so dau ='); csc=input('chi so cuoi ='); sd=csc-csd if sd
  17. Ví dụ: Hiện ra thời khoá biểu khi ta nhập vào thứ (là số) function thoikhoabieu() t=input('nhap vao thu ='); switch t case 2 'Tin, Toan, Anh' case 3 ' Sinh, Su, Dia' case 4 ' Hoa, Ly, Anh' case 5 ' Toan, Tin, Ly' case 6 ' Van, Hoa, Dia' case 7 ' Toan, Su, Tin' otherwise ' Nghi o nha' end 3.3. Vòng lặp For Vòng lặp For cho phép một khối lệnh thực hiện lặp lại một số lần cố định. Cú pháp của vòng lặp For như sau; For biến=mang khối lệnh end Biến lần lượt nhận các giá trị của mảng, mỗi lần như vậy khối lệnh được thực hiện 1 lần. Số lần lặp của khối lệnh sẽ bằng số phần tử của mảng. Ví dụ 1 : s= 1+2+3+4+ . . . +10 s=0; for i=1:10 s=s+i; end s Ví dụ 2: Tính p= n !=1*2*3* ...*n n=input(‘ Nhap vao n: ‘) p=1; for i=1:n p=p*i; end p 17
  18. 3.4. Vòng lặp While Vòng lặp while thực hiện lặp lại khối lệnh với số lần lặp không biết trước. Cú pháp của vòng lặp này như sau : While biểu thức điều kiện khối lệnh end Khi biểu thức điều kiện còn đúng thì khối lệnh được thực hiện, còn biểu thức điều kiện sai kêt thúc vòng lặp. Ví dụ : Tính q= 1+1/2+ 1/3 + ... + 1/n n= input(‘nhap vao n : ‘) q=0; i=1; while i
  19. - Nếu các hàm muốn dùng chung các biến thì các biến đó phải khai báo là biến toàn cục : Global tên_biến - Trong hàm có thể gặp dòng lệnh Return, cho phép kết thúc một hàm mà không cần phải thi hành hết các lệnh của hàm đó. - Hàm error của Matlab cho hiển thị chuỗi kí tự trên cửa sổ lệnh và dừng thực hiện hàm. Hàm này thường được dùng để cảnh báo việc sử dụng hàm không đúng. Ví dụ hàm phải đưa vào 3 tham số, nếu đậ ít hơn sẽ có lỗi : if nargin
  20. 5. Các phép tính logic, quan hệ, xâu kí tự, thời gian 5.1. Các toán tử quan hệ Toán tử quan hệ ý nghĩa < nhỏ hơn lớn hơn >= lớn hơn hoặc bằng == bằng ~= khác Kết quả của toán tử quan hệ cho giá trị 1 (đúng : true) hoặc giá trị 0 (sai :false). Ví dụ : >> a=4 >> b=6 >> a==b ans = 0 >> a~=b ans = 1 >> a> a=5 >> b=-2 >> (a>0)&(b
nguon tai.lieu . vn