Giáo trình Matlab và ứng dụng
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Matlab và ứng dụng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
giao_trinh_matlab_va_ung_dung.pdf
Nội dung text: Giáo trình Matlab và ứng dụng
- Giáo trình Matlab và ứng dụng Phần 1 - Cơ sở Matlab Ch•ơng 1 – Khái niệm chung 1.1- Giới thiệu MATLAB là 1 phần mềm ứng dụng chạy trong môi tr•ờng Windows do hãng MathWorks sản xuất và cung cấp. Có thể coi Matlab là ngôn ngữ của kỹ thuật. Nó tích hợp các công cụ rất mạnh phục vụ tính toán, lập trình, thiết kế, mô phỏng, trong một môi tr•ờng rất dễ sử dụng trong đó các bài toán và các lời giải đ•ợc biểu diễn theo các ký hiệu toán học quen thuộc. Các ứng dụng điển hình là: - Toán học và tính toán. - Phát triển thuật toán. - Tạo mô hình, mô phỏng và tạo giao thức. - Khảo sát, phân tích số liệu. - Đồ hoạ khoa học kỹ thuật. - Phát triển ứng dụng, gồm cả xây dựng giao diện ng•ời dùng đồ hoạ GUI. Matlab là một hệ thống t•ơng tác mà phần tử dữ liệu cơ bản là một mảng (array) không cần khai báo kích th•ớc. Điều này cho phép bạn giải nhiều bài toán tính toán kỹ thuật đặc biệt là các bài toán liên quan đến ma trận và véc tơ. Matlab là viết tắt của hai từ tiếng Anh Matrix Laboratory (Phòng thí nghiệm ma trận). Ban đầu Matlab đ•ợc viết chỉ để phục vụ cho việc tính toán ma trận. Trải qua thời gian dài, nó đã đ•ợc phát triển thành một công cụ hữu ích, một ngôn ngữ của kỹ thuật. Trong môi tr•ờng đại học, nó là một công cụ chuẩn cho các khoá học mở đầu và cao cấp về toán học, khoa học và kỹ thuật. Trong công nghiệp, nó là công cụ đ•ợc lựa chọn cho việc phân tích, phát triển và nghiên cứu hiệu suất cao. Matlab cung cấp một họ các giải pháp theo h•ớng chuyên dụng hoá đ•ợc gọi là các Toolbox (hộp công cụ). Các toolbox cho phép ng•ời sử dụng học và áp dụng các kỹ thuật chuyên dụng cho một lĩnh vực nào đó. Toolbox là một tập hợp toàn diện các hàm của Matlab (M-file) cho phép mở rộng môi tr•ờng Matlab để giải các lớp bài toán cụ thể. Các lĩnh vực trong đó có sẵn các toolbox bao gồm: Xử lý tín hiệu, hệ thống điều khiển, logic mờ, mô phỏng, Hệ thống Matlab gồm có 5 phần chính: 1
- Giáo trình Matlab và ứng dụng - Ngôn ngữ Matlab: là một ngôn ngữ ma trận/ mảng cấp cao với các câu lệnh, hàm, cấu trúc dữ liệu, vào/ ra, các tính năng lập trình h•ớng đối t•ợng. Nó cho phép lập trình các ứng dụng từ nhỏ đến các ứng dụng lớn và phức tạp. - Môi tr•ờng làm việc Matlab: Đây là một bộ các công cụ và ph•ơng tiện mà bạn sử dụng với t• cách là ng•ời dùng hoặc ng•ời lập trình Matlab. Nó bao gồm các ph•ơng tiện cho việc quản lý các biến trong không gian làm việc Workspace cũng nh• xuất nhập khẩu dữ liệu. Nó cũng bao gồm các công cụ phát triển, quản lý, gỡ rối và định hình M-file, ứng dụng của Matlab. - Xử lý đồ hoạ: Đây là hệ thống đồ hoạ của Matlab. Nó bao gồm các lệnh cao cấp cho trực quan hoá dữ liệu hai chiều và ba chiều, xử lý ảnh, ảnh động, Nó cũng cung cấp các lệnh cấp thấp cho phép bạn tuỳ biến giao diện đồ hoạ cũng nh• xây dựng một giao diện đồ hoạ hoàn chỉnh cho ứng dụng Matlab của mình. - Th• viện toán học Matlab: Đây là tập hợp khổng lồ các thuật toán tính toán từ các hàm cơ bản nh• cộng, sin, cos, số học phức, tới các hàm phức tạp hơn nh• nghịch đảo ma trận, tìm trị riêng của ma trận, phép biến đổi Fourier nhanh. - Giao diện ch•ơng trình ứng dụng Matlab API (Application Program Interface): Đây là một th• viện cho phép bạn viết các ch•ơng trình C và Fortran t•ơng thích với Matlab. Simulink, một ch•ơng trình đi kèm với Matlab, là một hệ thống t•ơng tác với việc mô phỏng các hệ thống động học phi tuyến. Nó là một ch•ơng trình đồ hoạ sử dụng chuột để thao tác cho phép mô hình hoá một hệ thống bằng cách vẽ một sơ đồ khối trên màn hình. Nó có thể làm việc với các hệ thống tuyến tính, phi tuyến, hệ thống liên tục theo thời gian, hệ gián đoạn theo thời gian, hệ đa biến, 1.2- Cài đặt ch•ơng trình: 1.2.1- Khởi động windows. Matlab là một phần mềm chạy trong môi tr•ờng Windows nên qui trình cài đặt Matlab cũng t•ơng tự nh• việc cài đặt các ch•ơng trình phần mềm khác trong Windows, chỉ cần làm theo các h•ớng dẫn của ch•ơng trình cài đặt. 1.2.2- Tiến hành cài đặt - Đ•a đĩa CD vào ổ đĩa (nếu cài từ đĩa CD-ROM) 2
- Giáo trình Matlab và ứng dụng Do ch•ơng trình đ•ợc cấu hình theo chế độ Autorun (tự chạy) nên khi đ•a đĩa CD vào ổ đĩa thì trình Setup tự động đ•ợc kích hoạt. Tr•ờng hợp chế độ Autorun không đ•ợc kích hoạt (do tập tin Autorun bị lỗi), dùng. Hoặc ta có thể kích chuột vào nút Start trên thanh tác vụ (Task bar) của windows, chọn lệnh run, gõ vào đ•ờng dẫn của file, nhấn Enter hoặc kích vào nút lệnh Run. Sau đó làm theo các h•ớng dẫn của trình cài đặt của Windows. - Tr•ờng hợp cài đặt Matlab từ đĩa cứng: Hình 1. Cài đặt Matlab trong Windows và màn hình Welcome Tr•ờng hợp này yêu cầu phải có sẵn bộ cài đặt trong đĩa cứng. Khi đó, ta sử dụng Windows Explorer hây My Computer để duyệt ổ cứng, tìm đến th• mục (folder) cài đặt rồi kích đúp chuột vào file (tập tin) Setup.exe. Sau đó làm theo các h•ớng dẫn của trình cài đặt của Windows. Sau khi file setup.exe đ•ợc kích hoạt, cửa sổ Welcom to MATLAB Setup hiện lên trong giây lát. Kích vào nút lệnh Next để chuyển sang cửa sổ cài đặt kế tiếp. Hình 1.2. Cửa sổ Software License Agreement và cửa sổ thông tin về khách hàng 3
- Giáo trình Matlab và ứng dụng 1.2.3- Nhập thông tin của ng•ời dùng và Personal License Password. Cửa sổ thứ hai thể hiện các thông tin về bản quyền của ch•ơng trình. Kích Yes để sang cửa sổ cài đặt kế tiếp. Trong cửa sổ thông tin về khách hàng Customer Information (hình 1.2), nhập họ tên vào khung Name, địa chỉ hoặc tên công ty vào khung Company. Nhập mã khoá (Serial Key) của ch•ơng trình vào khung Personal License Password. Kích chuột vào Next để tiếp tục quá trình cài đặt. 1.2.4. Lựa chọn các thành phần sẽ cài đặt: Trong cửa sổ Select Matlab Components (hình 1.3), bỏ đánh dấu những thành phần không cần thiết trong ch•ơng trình để tiết kiệm dung l•ợng đĩa cứng. Muốn kiểm tra dung l•ợng của ch•ơng trình, kích vào Disk Space để quan sát. Muốn thay đổi th• mục cài đặt Matlab, kích chuột vào nút Browse và tạo Hình 1.3. Lựa chọn các thành phần của Matlab sẽ đ•ợc cài đặt đ•ờng dẫn tới địa chỉ cần đặt th• mục Matlab. Th• mục mặc định là C:\MATLABR11. Để tiếp tục kích Next, màn hình hiện khung thông tin Setup và trình setup bắt đầu copy các tập tin vào th• mục cài đặt. 1.2.5- Hoàn thành cài đặt Sau khi hoàn thành Hình 1.4. Quá trình copy file của ch•ơng trình vào th• mục cài đặt 4
- Giáo trình Matlab và ứng dụng quá trình Copy các file của ch•ơng trình vào th• mục cài đặt, màn hình hiện khung thoại Setup Complete. Bỏ đánh dấu ở ô ‚Yes, launch the Help Desk to view the Release Note‛ nếu không muốn trình setup khởi động Help Desk (phần trợ giúp). Bỏ đánh dấu ở ô ‚Yes, launch Matlab‛ nếu ch•a muốn khởi động Matlab ngay. Kích Finish để kết thúc qúa trình cài đặt. Sau khi kết thúc cài đặt cửa sổ kế tiếp là Internet Explorer (nếu không bỏ đánh dấu ở ô ‚Yes, launch the Help Desk to view the Release Note‛). Kích Close để trở về cửa sổ nền Desktop của windows, biểu t•ợng của Matlab sẽ đ•ợc tự động đ•a ra Desktop của windows. 1.3- Môi tr•ờng làm việc của Matlab Matlab vừa là một ngôn ngữ vừa là một môi tr•ờng làm việc. Là một môi tr•ờnglàm việc, Matlab bao gồm các ph•ơng tiện để quản lý các biến trong không gian làm việc (Workspace) của bạn và để xuất nhập dữ liệu. Matlab cũng bao gồm các công cụ để phát triển và quản lý M-file, các ứng dụng của Matlab. 1.3.1- Khởi động và thoát khỏi Matlab 1.3.1.1- Khởi động MATLAB: Cũng nh• các ch•ơng trình ứng dụng khác chạy trên nền Windows, có rất nhiều cách để khởi động Matlab. Kích đúp chuột vào biểu t•ợng Matlab5.3 trên màn hình Desktop của Windows: hoặc kích chuột theo trình tự nh• sau: Start/ Programs/ Matlab/ Matlab 5.3 Sau khi khởi động xong cửa sổ Matlab Command Window hiện ra nh• hình 1.4. Cũng nh• các ch•ơng trình chạy trong môi tr•ờng Windows khác Matlab cũng có những thành phần giao diện của ch•ơng trình. Dòng trên cùng là thanh tiêu đề gồm: + Tận trái là biểu t•ợng ch•ơng trình. Khi kích vào biểu t•ợng này Matlab hiện menu xổ chứa các lệnh liên quan tới việc xử lý khung cửa sổ ch•ơng trình cũng nh• thoát khỏi ch•ơng trình. + Kế tiếp biểu t•ợng là tên ch•ơng trình cùng với cửa sổ ch•ơng trình. Tận cùng là ba biểu t•ợng có chức năng phong to, thu nhỏ và thoát khỏi ch•ơng trình. 5
- Giáo trình Matlab và ứng dụng Dòng thứ hai là thanh menu (Menu bar – thanh thực đơn) của ch•ơng trình gồm các menu chính chứa các lệnh liên quan đến việc tạo, xử lý, gán thuộc tính, cho các đối t•ợng, thiết lập cấu hình phần mềm, Dòng thứ ba là thanh công cụ (Tool bar – thanh công cụ) chứa biểu t•ợng đ•ờng tắt (Shortcut) của các lệnh th•ờng sử dụng, giúp ng•ời sử dụng truy cập nhanh vào các lệnh của Matlab. Phần chiếm gần chọn màn hình là cửa sổ lệnh, là nơi nhập các lệnh và hiển thị kết quả cũng nh• các thông tin khác. Cuối cùng là thanh tác vụ hay thanh trạng thái (status bar) hiện thông tin về tình trạng đang xử lý, thực hiện đối với đối t•ợng. Hình 1.4. Cửa sổ Command Windows của Matlab 1.3.1.2- Thoát khỏi MATLAB: Trong Windows, có rất nhiều cách để thoát khỏi một ch•ơng trình ứng dụng, để thoát khởi Matlab ta có thể sử dụng một trong những cách sau: Từ cửa sổ lệnh Matlab Command Window đánh lệnh quit hoặc kích biểu t•ợng close nằm ngay góc phải trên thanh tiêu đề Matlab. Hoặc kích chuột theo đ•ờng dẫn sau: File / Exit MATLAB Hoặc nhấn tổ hợp phím : Ctrl + Q. 6
- Giáo trình Matlab và ứng dụng 1.3.2- Cửa sổ lệnh của Matlab (Matlab Command Window) Cửa sổ lệnh là cửa sổ chính trong đó ng•ời sử dụng giao tiếp với Matlab. Trình dịch của Matlab hiển thị một dấu nhắc >> để biểu thị rằng nó đã sẵn sàng nhận và thực hiện lệnh của bạn. Ví dụ, khi muốn nhập dòng lệnh gán biến x=5, ta gõ nh• sau: >>x=5 Sau khi nhấn phím enter ( ), Matlab đáp ứng nh• sau: >>x=5 x= 5 1.3.2.1- Hiệu chỉnh, sửa đổi dòng lệnh Các phím mũi tên, các phím điều khiển trên bàn phím cho phép gọi lại, sửa đổi và tái sử dụng các lệnh đã gõ vào tr•ớc đó. Ví dụ, giả sử ta gõ vào dòng lệnh: >>a=(1+sqt(5))/2 %sqrt(x) là hàm tính giá trị căn bậc hai của x Do ta gõ thiếu chữ r trong cú pháp của hàm sqrt nên Matlab báo lỗi nh• sau: Undefined function or variable ‘sqt’ có nghĩa là hàm hoặc biến ‘sqt’ không được định nghĩa. Thay vì gõ lại cả dòng lệnh, đơn giản là ta nhấn phím , câu lệnh bị sai ở trên sẽ đ•ợc hiển thị lại. Sử dụng phím (hoặc dùng chuột) để di chuyển con trỏ đến vị trí giữa chữ q và chữ t rồi chèn vào chữ r sau đó nhấn enter, kết quả là: >>a=(1+sqrt(5))/2 a= 1.6180 Ta có thể sử dụng phím nhiều lần để tìm các lệnh đã gõ tr•ớc đó. Cũng có thể gọi nhanh lại một câu lệnh đã thực hiện tr•ớc đó bằng cách gõ ký tự đầu của dòng lệnh rồi nhấn . Ví dụ, để gọi lại chính xác lệnh ở trên nh• sau: >>a 1.3.2.2- Xoá cửa sổ lệnh Sử dụng lênh clc để xoá cửa sổ lệnh (xoá màn hình). Lệnh này không xoá nội dung trong không gian làm việc Workspace, mà chỉ xoá màn hình. Sau khi sử dụng clc ta có thể sử dụng phím để gọi lại lệnh cũ. 7
- Giáo trình Matlab và ứng dụng 1.3.2.3- Dừng một ch•ơng trình đang chạy Về nguyên tắc có thể dừng một ch•ơng trình đang chạy trong Matlab tại bất kỳ thời điểm nào bằng cách nhấn tổ hợp phím Ctrl + C. Tuy nhiên, ta vẫn có thể phải đợi cho đến khi một hàm đang thực thi bên trong hoặc MEX-file kết thúc hoạt động của nó. 1.3.2.4- Định dạng số Các phép tính trong Matlab đ•ợc thực hiện với độ chính xác rất cao. Ta có thể định dạng cho các số xuất ra màn hình tuỳ theo ý muốn bằng cách sử dụng lệnh format. Lệnh này chỉ ảnh h•ởng đến việc hiển thị của các số mà không ảnh h•ởng đến việc tính toán và l•u giữ của Matlab nghĩa là không ảnh h•ởng đến độ chính xác của phép tính. Ta lấy ví dụ với số 4/3: tại cửa sổ lệnh gõ vào dòng lệnh >>4/3 format short ( đây là chế độ mặc định ): a = 1.3333 format short e a = 1.3333e + 000 format long a = 1.33333333333333 format long e a = 1.33333333333333e + 000 format bank a = 1.33 format hex a = 3ff5555555555555 format rat a=4/3 Để thay đổi chế độ định dạng mặc định ta có thể Preferences từ menu File, chọn định dạng số mong muốn từ thẻ (tap) General. Ngoài các định dạng số ở trên, còn có hai định dạng để bỏ đi hoặc thêm vào các dòng trắng giữa các kết quả của lệnh hoặc giữa các dòng lệnh: format compact lệnh này xoá bỏ các dòng trắng làm cho ta có thể quan sát đ•ợc nhiều thông tin hơn trên màn hình hoặc cửa sổ. format loose sẽ thêm vào các dòng trắng. 8
- Giáo trình Matlab và ứng dụng 1.3.2.5- Ngăn không cho hiển thị kết quả tính toán ra màn hình Nếu bạn chỉ đơn giản là gõ vào một câu lệnh (phép tính) và nhấn , Matlab sẽ tự động hiển thị kết quả của câu lệnh (phép tính) đó ra màn hình. Tuy nhiên nếu bạn kết thúc dòng lệnh với một dấu (;) thì Matlab sẽ thực hiện việc tính toán nh•ng không hiển thị kết quả ra màn hình. Điều này đặc biệt có ích khi thực hiện tính toán với các véc tơ hoặc Matlab trận có số phần từ rất lớn. 1.3.2.6- Dòng lệnh dài Nếu một câu lệnh quá dài, không vừa trên một dòng, ta sử dụng một toán tử ba chấm ( ) sau đó nhấn để biểu thị rằng câu lệnh còn tiếp tục ở dòng kế tiếp. Ví dụ: s = 1 – 1/2 + 1/3 – 1/4 + 1/5 – 1/6 + 1/7 – 1/8 + 1/9 – 1/10 + 1/11 – 1/12; Số ký tự tối đa cho phép trên một dòng là 4096 ký tự. Các khoảng trắng (dấu cách) xung quanh các dấu =, +, -, *, /, là tuỳ ý (không nhất thiết phải có) nh•ng chúng giúp ta dễ đọc hơn. 1.3.3- Không gian làm việc của Matlab (Matlab Workspace) Không gian làm việc của Matlab chứa một tập các biến (các mảng đ•ợc đặt tên) mà bạn có thể thao tác từ dòng lệnh của Matlab. Có thể sử dụng lệnh who và whos để xem nội dung của workspace. Lệnh who cho một danh sách tóm tắt các biến còn lệnh whos cho biết các thông tin cả về kích th•ớc và kiểu dữ liệu. Sau đây là ví dụ về lệnh whos trên một workspace chứa 8 biến thuộc các kiểu dữ liệu khác nhau: whos Name Size Bytes Class A 4x4 128 double array D 3x5 120 double array M 10x1 40 cell array S 1x3 628 struct array h 1x11 22 char array n 1x1 8 double array s 1x5 10 char array v 1x14 28 char array Grand total is 93 elements using 984 bytes Để xoá tất cả các biến đang tồn tại trong Workspace, gõ >>clear 9
- Giáo trình Matlab và ứng dụng Matlab có các lệnh cho phép ng•ời sử dụng l•u nội dung của Workspace ở bất kỳ thời điểm nào trong phiên làm việc và sau đó có thể nạp dữ liệu trở lại Matlab trong phiên làm việc đó hoặc phiên làm việc sau đó. L•u và nạp dữ liệu cũng có thể xuất nhập các file dữ liệu kiểu text. 1.3.3.1- L•u không gian làm việc (Saving the Workspace) Để l•u Workspace, chọn lệnh Save Workspace as từ menu File hoặc gõ lệnh trực tiếp từ cửa sổ lệnh. Lệnh l•u dữ liệu sẽ l•u nội dung của Workspace thành một file nhị phân có phần mở rộng là .mat. Ví dụ: >>save data l•u toàn bộ nội dung Workspace vào file data.mat. Nếu muốn có thể chỉ l•u một số biến nhất định bằng cách đ•a thêm tên các biến vào sau tên file: >>save data x, y, z chỉ l•u các biến x, y, z vào file data.mat. 1.3.3.2- Nạp không gian làm việc (Loading the Workspace) Lệnh nạp sẽ nạp một MAT-file đã đ•ợc tạo ra tr•ớc đó bằng lệnh save. Ví dụ: >>load data nạp nội dung file data.mat vào không gian làm việc. Nếu file data.mat chứâ các biến a, b, c thì các biến này sẽ đ•ợc đ•a trở lạ vào Workspace. Nếu các biến này đã tồn tại trong Workspace thì chúng sẽ bị ghi đè. Trong Windows, nạp lại Workspace có thể thực hiện bằng cách chọn lệnh Load Workspace từ menu File. 10
- Giáo trình Matlab và ứng dụng Ch•ơng 2 - Các menu của MATLAB 2.1- Menu File Kích chuột vào File hoặc nhấn tổ hợp phím Alt- F, xuất hiện menu xổ chứa các lệnh liên quan đến việc tạo mới, quản lý, gán thuộc tính cho đối t•ợng (các tập tin - file) đã có sắn, thiết lập cấu hình phần mềm 2.1.1- New (hình 2.1): Hiện menu chứa ba lệnh để tạo đối t•ợng mới. Đối t•ợng ở đây có thể là một script, một cửa sổ đồ hoạ hay một mô hình mô phỏng hệ thống. M-file: Hiện cửa sổ Editor/ Debugger (hình 1.6). Đây là môi tr•ờng bạn tạo mới cũng nh• sửa đổi, gỡ rối các tập tin ch•ơng Hình 2.1. Menu File và menu con của trình nh• M-file hoặc MEX-file hoặc các đối lệnh New t•ợng nào đó để thực hiện một nhiện vụ nào đó. Để có thể tạo đ•ợc các tập tin này, bạn phải dùng ngôn ngữ lập trình C hoặc FORTRAN. Figure (hình 2.2): Đây là môi tr•ờng đồ hoạ để bạn tự vẽ các đối t•ợng hoặc để Matlab vẽ các đồ thị theo hàm lệnh bạn nhập từ khung cửa sổ lệnh của MATLAB hoặc mở đồ thị cũ với lệnh Open của Matlab. Hình 2.2. Cửa sổ MATLAB Editor/Debuger Hình 2.3. Cửa sổ đồ hoạ của MATLAB 11
- Giáo trình Matlab và ứng dụng Model (hình 2.4): Gọi trình Simulink (mở cửa sổ th• viện khối Simulink) phục vụ cho việc thiết kế mô hình mô phỏng hệ thống. Hình 2.6. Cửa sổ Simulink và cửa sổ th• viện Simulink 2.1.2- Open (hình 2.5): Mở tập tin đồ thị hoặc hình ảnh trong cửa sổ Figure để xử lý. Trong cửa sổ Matlab Command windows kích: File/Open. Xuất hiện khung thoại Open. Từ khung thoại, gõ địa chỉ của file vào ô file name, nhấn open hoặc kích chọn tên tập tin cùng kiểu tập tin (file type) muốn mở và kích Open. Hình 2.7. Cửa sổ Open files 2.1.3- Open Selection: Có chức năng mở những đối t•ợng đã chọn riêng và l•u thành một tập tin riêng. 2.1.4- Run Script : Chạy một ch•ơng trình đã l•u thành một tập tin. 12
- Giáo trình Matlab và ứng dụng Trong cửa sổ Matlab Command window kích: File/Run Script. Trên màn hình Hình 2.9. Khung thoại Run Script và hộp thoại Browse xuất hiện khung thoại Run Script (hình 2.9). Go địa chỉ và tên tập tin vào trong khung nhập lệnh Run rồi kích OK. Để tìm kiếm các tập tin đã l•u trong máy, kích vào nút để duyệt. Từ khung thoại Browse chọn nguồn chứa và tên tập tin cần mở rồi kích vào Open để về khung thoại Run Script với toàn bộ đ•ờng dẫn cùng tên tập tin muốn mở. Kích OK. 2.1.5- Load Workspace: Tải (load) tập tin *.mat vào bộ nhớ của ch•ơng trình (đ•ợc gọi là Workspace). Trong cửa sổ Matlab Command Windows kích: File/Load Workspace. Màn hình xuất hiện khung thoại Load .mat file. Hình 2.10. Hộp thoại Load .mat file Từ khung thoại, kích chọn tên tập tin và kích Open. Bạn có thể dùng lệnh Load Workspace để du nhập các tập tin từ những nguồn chứa khác nhau bằng cách cũng trong khung thoại Load .mat file, kích vào mũi tên của Look in để tìm nguồn chứa, chọn tập tin muốn du nhập. Ghi chú: Để có thể du nhập các tập tin khác vào MTALAB, điều bắt buộc là các tập tin đó phải đ•ợc soạn theo hệ mã ASCII. 2.1.6- Save Workspace as : Hình 2.11. Hộp thoại Save Workspace as. 13
- Giáo trình Matlab và ứng dụng L•u các nội dung trong cửa sổ lệnh của MATLAB theo Workspace. Nhập các lệnh trong cửa sổ lệnh của MATLAB nh• bình th•ờng. Từ menu File, chọn Save Workspace as. Màn hình hiện khung thoại Save Workspace as (hình 2.11). Từ khung thoại, đánh tên tập tin muốn l•u (nếu cần thiết chọn nguồn chứa với Save in). Kích Save. Nên nhớ là tập tin này đ•ợc l•u theo dạng *.mat và cũng là tập tin ch•ơng trình gốc. 2.1.7- Show Workspace : Hiện nội dung của tập tin Workspace lên màn hình bằng cách từ menu File, chọn Save Workspace. Trong cửa sổ Save Workspace sẽ Hình 2.12. Cửa sổ Workspace Browser hiện nội dung của tập tin Workspace đã ghi. 2.1.8- Show graphics proprty editor (hình 2.13): Hiện cửa sổ thay đổi thuộc tính mặc định của hình ảnh để áp dụng cho tất cả các hình ảnh sẽ đ•ợc thiết kế sau này hoặc chỉ riêng theo từng nhiệm vụ. Từ cửa sổ lệnh MATLAB kích : File/Show Graphics Property Editor. Màn hình xuất hiện cửa sổ Show Graphics Property Editor. Chọn thuộc tính cần thay đổi và kích Close. Thí dụ, thay đổi thuộc tính Echo từ Hình 2.13. Cửa sổ Graphics Property Editor mặc định là on thành off 2.1.9- Show GUI Layout Tool (hình 2.14): Hiển thị danh mục các công cụ phục vụ cho việc thiết kế giao diện ng•ời dùng đồ hoạ GUI (Graphical User Interface) trong cửa sổ Guide Control Panel. Từ cửa sổ này, bạn có thể thêm các biểu t•ợng công cụ tự tạo mới, gán biểu t•ợng biểu t•ợng công cụ vào đối t•ợng để thực hiện nhanh bằng cách kích chọn biểu t•ợng trong khung biểu t•ợng Guide Tool để hiện thông tin và từ đây gán nhãn cũng nh• các thuộc tính khác cho công cụ vừa chọn và kích Apply. 14
- Giáo trình Matlab và ứng dụng Hình 2.14. Cửa sổ Guide Control Panel và Guide Menu Editor 2.1.10- Set Path: Gán tập tin vào th• mục bất kỳ trong MATLAB. Từ menu File chọn Set Path. Màn hình hiện cửa sổ Path Browser. Cửa sổ này liệt kê các danh sách các đ•ờng dẫn th• mục nằm trong khung cửa bên trái và danh sách tên tập tin nằm bên phải. Chọn tên đ•ờng dẫn th• mục trong khung cửa sổ Path và chọn tên tập tin muốn thay đổi vị trí chứa trong khung cửa sổ hoặc đánh trực tiếp vào khung nhập lệnh Current Directory. Từ menu File của cửa sổ Path Browser, chọn Save để l•u những thay đổi. 2.1.11- Preferenes: Hiện khung thoại với 3 tuỳ chọn để ng•ời sử dụng có thể thay đổi tham số cho phù hợp nhiệm vụ. General: Hiện khung thoại ngay khi kích chọn lệnh Preferences từ menu File của Hình 2.15. Cửa sổ Path Browser khung cửa sổ lệnh MATLAB. Kích chọn các loại tham số muốn thay đổi hoặc gán thêm Hình 2.16. Cửa sổ Preferences, thẻ General 15
- Giáo trình Matlab và ứng dụng và kích OK. Command Windows Font: Hiện khung danh mục font cùng thuộc tính để ng•ời sử dụng thay đổi font mặc định thành font quen thuộc. Copy Options : Hiện khung thông tin để ng•ời sử dụng tuỳ chọn định dạng đối t•ợng muốn sao chép. Hình 2.17. Táp Command Windows Font và thẻ Copy Options của cửa sổ Preferences 2.1.12- Print Setup : Hiện khung thoại Print cùng các chức năng phụ liên quan đến việc in ấn (hình 2.18). 2.1.13- Exit MATLAB ( Ctrl + Q ): Thoát khỏi ch•ơng trình MATLAB để và trở về Windows 2.2- Menu Edits: Hình 2.18. Cửa sổ Print setup Hiện menu con chứa các lệnh liên quan đến việc xử lý các đối t•ợng (hình 2.19). 2.2.1- Undo: Huỷ lệnh hoặc thao tác đã thực hiện tr•ớc đó. Sau khi chọn lệnh Undo để huỷ lệnh, lệnh sẽ đổi thành Redo để ng•ời sử dụng khôi phục những gì đã huỷ tr•ớc đó với lệnh Undo. Hình 2.19. Menu Edit 16
- Giáo trình Matlab và ứng dụng 2.2.2- Cut (Ctrl +X): Xoá tạm thời đối t•ợng trong khung cửa sổ lệnh hiện hành và đ•a vào bộ nhớ đệm của ch•ơng trình, sau đó có thể dán đối t•ợng trở lại vào vị trí đ•ợc chọn. Đối t•ợng đ•ợc cắt có thể là một công thức, một chuỗi ký tự, hàm lệnh Chọn đối t•ợng muốn cắt trong khung cửa sổ lệnh MATLAB và ấn Ctrl + X hoặc chọn Cut từ menu Edit. Đối t•ợng sẽ tạm biến mất tại vị trí hiện hành. Chọn vị trí cần dán rồi nhấn Ctrl + V hoặc Paste. Đối t•ợng sẽ đ•ợc dán vào vị trí đã chọn. 2.2.3- Copy (Ctrl + C): Sao chép đối t•ợng trong khung cửa sổ lệnh MATLAB và sau đó dán vào vị trí đã chọn. Đối tượng được Copy có thể là một công thức, một chuỗi ký tự, hàm lệnh Chọn đối t•ợng cần Copy tại cửa sổ lệnh MATLAB và sau đó ấn Ctrl + C hoặc Copy. Chọn vị trí cần copy đến và ấn Ctrl + V hoặc chọn Paste từ menu Edit. 2.2.4- Paste (Ctrl + V): Dán đối t•ợng đã đ•ợc Cut hoặc Copy vào vị trí đã chọn. Ngoài ra , , bạn còn có thể dùng lệnh Paste của MATLAB để dán các đối t•ợng khác vào MATLAB. 2.2.5- Clear: Xoá đối t•ợng đã đ•ợc chọn trong khung cửa sổ MATLAB. 2.2.6- Select All: Chọn toàn bộ nội dung trong khung cửa sổ lệnh của MATLAB. 2.2.7- Clear Session: Xoá toàn bộ nội dung của cửa sổ lệnh MATLAB sau khi chọn với lệnh Select All. Lệnh này cho phép xoá tất cả các thông tin trong bộ nhớ của ch•ơng trình, t•ơng tự nh• việc ta đóng Matlab lại sau đó khởi động lại Matlab. 2.3- Menu View: Đánh dấu chọn để hiện hay ẩn thanh công cụ trong khung cửa sổ lệnh MATLAB COMMAND WINDOW. 2.4- Menu Window: Hình 2.20. Menu View Hiện thông tin về số tập tin đang mở trong khung cửa sổ lệnh MATLAB. 17
- Giáo trình Matlab và ứng dụng Ch•ơng 3 - Các khái niệm cơ bản 3.1-Một số phím chuyên dụng và lệnh thông dụng - Hoặc Ctrl + p : Gọi lại các lệnh đã thực hiện tr•ớc đó. - Hoặc Ctrl +n : Gọi lại lệnh vừa thực hiện tr•ớc đó. - Hoặc Ctrl + f : chuyển con trỏ sang bên phải 1 ký tự. - hoặc Ctrl + b: chuyển con trỏ sang trái một ký tự. - Dấu ‚;‛ dùng trong [ ] để kết thúc một hàng của ma trận hoặc kết thúc một biểu thức hoặc câu lệnh mà không hiển thị kết quả ra mà hình. - nhảy xuống dòng d•ới - Ctrl + A hoặc Home : chuyển con trỏ về đầu dòng. - Ctrl + E hoặc End: Chuyển con trỏ đến cuối dòng. - BackSpace: Xoá ký tự bên trái con trỏ. - Esc: xoá dòng lệnh. - Ctrl + K : Xoá từ vị trí con trỏ đến cuối dòng. - Ctrl + C : Dừng ch•ơng trình đang thực hiện. - Clc : lệnh xoá màn hình. - Clf: Lệnh xoá màn hình đồ hoạ. - Input: lệnh nhập dữ liệu vào từ bàn phím. - Demo: lệnh cho phép xem các ch•ơng trình mẫu. - Help: lệnh cho phép xem phần trợ giúp. - Ctrl – c: Dừng ch•ơng trình khi nó bị rơi vào trạng thái lặp không kết thúc. - Dòng lệnh dài: Nếu dòng lệnh dài quá thì dùng để chuyển xuống dòng d•ới. 3.2- Biến trong MATLAB Đặc điểm của biến trong Matlab: - Không cần khai báo biến và kiểu của biến. Tuy nhiên tr•ớc khi gán một biến thành một biến khác thì cần đảm bảo rằng biến ở bên phải của phép gán có một giá trị xác định. - Bất kỳ một phép toán nào gán một giá trị vào một biến sẽ tạo ra biến đó nếu cần (biến đó ch•a xác định) hoặc ghi đè lên giá trị hiện tại nếu nó đã tồn tại trong Workspace. 18
- Giáo trình Matlab và ứng dụng - Tên biến bao gồm một chữ cái sau một số bất kỳ các chữ cái, chữ số và dấu gạch d•ới. Matlab phân biệt chữ in hoa và chữ in th•ờng, vì vậy X và x là hai biến phân biệt. 3.2.1- Tên biến: Là một dãy ký tự bao gồm các chữ cái hay các chữ số hoặc một số ký tự đặc biệt dùng để chỉ tên của biến hoặc tên của hàm. Chúng phải đ•ợc bắt đầu bằng chữ cái sau đó có thể là các chữ số hoặc một vài ký tự đặc biệt. Chiều dài tối đa của tên là 31 ký tự. Bình th•ờng Matlab có sự phân biệt các biến tạo bởi chữ cái th•ờng và chữ cái in hoa. Các lệnh của Matlab nói chung th•ờng sử dụng chữ cái th•ờng. Việc phân biệt đó có thể đ•ợc bỏ qua nếu chúng ta thực hiện lệnh : >> casensen off 3.2.2- Một số lệnh với biến: - clear: lệnh xoá tất cả các biến đã đ•ợc định nghĩa tr•ớc trong ch•ơng trình . - clear biến1, biến 2 : xoá các biến đ•ợc liệt kê trong câu lệnh. - Who: hiển thị các biến đã đ•ợc định nghĩa trong ch•ơng trình. - Whos: hiển thị các biến đã đ•ợc định nghĩa trong ch•ơng trình cùng với các thông số về biến. - Size (tên biến đã đ•ợc định nghĩa): cho biét kích cỡ của biến d•ới dạng ma trận với phần tử thứ nhất là số hàng của ma trận, phần tử thứ 2 là số cột của ma trận. - Save: L•u giữ các biến vào một File có tên là Matlab. mat. - Load: Tải các biến đã đ•ợc l•u giữ trong một File đ•a vào vùng làm việc. 3.2.3- Một số biến đã đ•ợc định nghĩa tr•ớc: - ans: Answer - tự động gán tên này cho kết quả của một phép tính mà ta không đặt tên. VD >> [ 1 2] ans = 1 2 - pi = 3.1415926535897 - realmax: đ•a ra giá trị của số lớn nhất mà máy tính có thể tính toán đ•ợc. - realmin: đ•a ra giá trị của số nhỏ nhất mà máy tính có thể tính toán đ•ợc. - i, j: Đơn vị ảo của số phức. - inf: infinity- vô cùng lớn. - NaN: Not a number – biểu diễn dạng 0/0, / 19
- Giáo trình Matlab và ứng dụng - eps: Độ chính xác t•ơng đối của dấu phẩy động. Đây là dung sai Matlab sử dụng trong các tính toán của nó. 3.2.4- Biến toàn cục (global variables) Matlab cho phép sử dụng cùng một biến cho các hàm hoặc giữa các hàm và ch•ơng trình chính của Matlab, điều này đ•ợc thực hiện thông qua việc khai báo biến toàn cục: Global tên1 tên2 tên3 . (Tên các biến cách nhau bắng dấu khoảng trống, không sử dụng dấu phẩy). Việc khai báo biến toàn cục phải đ•ợc thực hiện ở ch•ơng trình chính hoặc ở file lệnh (script) hoặc ở file hàm (function) có sử dụng các biến. Biến toàn cục có tác dụng cho đến khi kết thúc quá trình tính toán hoặc khi toàn bộ Workspace đ•ợc xoá. Không đ•ợc đ•a tên biến toàn cục vào danh sách các đối số của hàm. Khi sử dụng biến toàn cục các lệnh sau tỏ ra rất cần thiết: Clear global : Lệnh này cho phép loại bỏ các biến toàn cục. Isglobal(Tên biến) : Lệnh này cho phép kiểm tra xem một biến nào đó có phải là biến toàn cục hay không. Nếu là biến toàn cục thì giá trị trả về sẽ là 1. 3.3- Các phép toán trong matlab 3.3.1- Phép toán số học: Matlab có hai kiểu phép toán số học, đó là phép toán ma trận (matrix arithmetic operation) và phép toán mảng (array arithmetic operation). Phép toán ma trận đ•ợc định nghĩa bởi các luật của đại số tuyến tính. Phép toán mảng đ•ợc thực hiện t•ơng ứng từng phần tử, chẳng hạn phép nhân mảng hai ma trận A có các phần tử là a(i,j) và B có các phần tử là b(i,j) đ•ợc thực hiện bằng cách nhân t•ơng ứng từng phần tử của A và B: c(i,j) = a(i,j)b(i,j) Để phân biệt giữa phép toán ma trận và phép toán mảng ng•ời ta đ•a thêm vào tr•ớc các toán tử một dấu chấm ‚.‛. Phép toán ma trận Phép toán mảng Phép toán Toán tử Phép toán Toán tử Cộng + Cộng + Trừ. - Trừ. - 20
- Giáo trình Matlab và ứng dụng Nhân. * Nhân. .* Chia phải / Chia phải ./ Chia trái \ Chia trái .\ Luỹ thừa. ^ Luỹ thừa. .^ Phép gán. = Phép gán. = 3.3.2- Thứ tự •u tiên trong phép toán số học: 1. ngoặc đơn. 2. luỹ thừa 3. nhân, chia. 4. Cộng, trừ. 3.3.3- Các phép toán quan hệ và phép toán logic 3.3.3.1- Các phép toán quan hệ: Các phép toán quan hệ bao gồm: - Nhỏ hơn: - Lớn hơn hoặc bằng: >= - Bằng: == - Không bằng (khác): ~= Biểu thức có các toán tử quan hệ nhận gia trị đúng là (true) hoặc sai (false). Trong Matlab, biểu thức đúng sẽ có giá trị là 1, biểu thức sai có gia trị là 0. Ví dụ1: >>12.2>12 >> A=[ 1:3;4:6;7:9] >> A=[ 1:3;4:6;7:9] ans = A = A = 1 1 2 3 1 2 3 >>1~=1 4 5 6 4 5 6 ans = 7 8 9 7 8 9 0 >> B=[1:3;2:4;10:12] >> A==B B = ans = 21
- Giáo trình Matlab và ứng dụng 1 2 3 1 1 1 2 3 4 0 0 0 10 11 12 0 0 0 >>12.2>12 ans = 1 >>1~=1 ans = 0 >> A=[ 1:3;4:6;7:9] A = 1 2 3 4 5 6 7 8 9 Ví dụ 2: Cho một quả cầu nặng có khối l•ợng là v m=2kg đ•ợc buộc vào một sợi dây có chiều dài l=1.5m (hình 3.5). Một ng•ời nắm vào đầu dây và quay tròn quả cầu theo ph•ơng thẳng đứng.Vận tốc dài của quả cầu ở vị trí cao nhất là v =6m/s. lực kéo T trên sợi dây thay đổi theo góc nghiêng của dây với ph•ơng nằm ngang xác định theo công thức sau: Hình 3.5. Minh hoạ ví dụ 2 mv 2 T = + mg(2 3sin ) l Cho biết khi lực kéo T > 145N thì sơi dây bị đứt. Hãy xác định những vị trí dây bị đứt. Ch•ơng trình nh• sau: function y = tinhluc(theta,T) m=2;l=1.5;Tmax=145;v=6;g=9.8; theta=0:10:360; rad=pi*theta/180; 22
- Giáo trình Matlab và ứng dụng T=m*(v^2/l+g*(2-3*sin(rad))); bang=[theta;T>Tmax] plot(theta,T); grid on >>Tinhluc bang = Columns 1 through 12 0 10 20 30 40 50 60 70 80 90 100 110 0 0 0 0 0 0 0 0 0 0 0 0 Columns 13 through 24 120 130 140 150 160 170 180 190 200 210 220 230 0 0 0 0 0 0 0 0 0 0 0 0 Columns 25 through 36 240 250 260 270 280 290 300 310 320 330 340 350 0 0 1 1 1 0 0 0 0 0 0 0 Column 37 360 0 Từ kết quả trên ta thấy tại các vị trí ứng với các góc 2600, , , 2700, , 2800, thì biểu thức logic T>Tmax có giá trị là 1, tức tại đó dây có thể sẽ bị đứt. 3.3.3.2- Các phép toán logic Các phép toán logic và, hoặc, đảo đ•ợc thực hiện bởi các toán tử sau: - Phép và( and): Ký hiệu là & VD: phép & 2 ma trận cùng cỡ A, B là một ma trận có các phần tử bằng 1 nếu các phần tử t•ơng ứng của cả 2 ma trận đầu đều khác 0 và bằng 0 nếu 1 trong 2 phần tử t•ơng ứng của 2 ma trận bằng 0. >>A=[1 2 7; 0 4 9;1 3 5]; B=[0 2 4; 2 4 6; 3 0 7]; C=A&B C = 0 1 1 0 1 1 1 0 1 - Phép hoặc (or) : Ký hiệulà | 23
- Giáo trình Matlab và ứng dụng VD : phép or 2 ma trận cùng cỡ A,B là một ma trận có các phần tử bằng 0 nếu các phần tử t•ơng ứng của cả 2 ma trận đầu đều bằng 0 và bằng 1 nếu 1 trong 2 phần tử t•ơng ứng của 2 ma trận khác 0. >>A=[0 2 7; 0 4 9;1 3 0]; >> B=[0 2 4; 2 4 6; 3 0 0]; >> C=A | B C = 0 1 1 1 1 1 1 1 0 - Phép đảo( not): Ký hiệu là ~ Ví Dụ : phép đảo của một ma trận là một ma trận có cùng cỡ với các phần tử có giá trị bằng 1 nếu các phần tử của ma trận đầu có giá trị bằng 0 và bằng 0 nếu các phần tử của ma trận đầu có giá trị khác 0. >>A=[0 2 7; 0 4 9;1 3 0] >> B=~A B = 1 0 0 1 0 0 0 0 1 3.3.4- Các ví dụ: Ví dụ 1: Giải ph•ơng trình bậc hai ax2 +bx +c = 0 Ta biết các nghiệm của ph•ơng trình này có dạng: b b 2 4ac x = 2a Vì Matlab là một ch•ơng trình tính toán số nên chúng ta phải xác định các giá trị a, b, c. Dấu = đ•ợc sử dụng để gán giá trị của a, b, c nh• sau ( gõ phím Enter ở cuối mỗi hàng) >>a = 2 a = 2 24
- Giáo trình Matlab và ứng dụng >>b = 5; >>c = -3; %Dấu ‚;‛ ở cuối dòng thì Matlab sẽ không hiển thị lại giá trị vừa nhập. >> x1= (-b + sqrt(b^2- 4*a*c))/(2*a) x1 = 0.5000 >> x2= (-b - sqrt(b^2- 4*a*c))/(2*a) x2 = -3 Ví dụ 2: Tính giá trị của đa thức. >> a = x^3 -2*x^2 - 6; >>b = x^2 + 5*x -7; >>x=3; >> w = a/b w = 0.1765 3.4- Số phức và các phép toán về số phức. Matlab chấp nhận số phức biểu thị bởi hàm đặc biệt i và j, cả hai là toán tử và các hàm. 3.4.1- Biểu diễn số phức: Tên = Phần thực + phần ảo i hoặc Tên = Phần thực + phần ảo j Vidụ: >> a = 3 +4i 3.4.2- Các phép toán đối với số phức: Cộng, trừ, nhân số phức: C1= a1+b1i ; C2=a2+b2i Cộng : c1+c2 Trừ : c1 - c2 Nhân: c1*c2 Chia: c1/c2 Các hàm đặc biệt: 25
- Giáo trình Matlab và ứng dụng real(x) : tìm phần thực của số phức x. imag(x): tìm phần ảo của số phức x. conj(x): tìm số phức liên hợp của số phức x. abs(x): Tìm giá trị tuyệt đối của số phức x ( độ lớn ) angle(x): góc tạo bởi giữa trục thực và ảo. Ví dụ: >> a =3.0000 + 4.0000i a = 3.0000 + 4.0000i >> thuc=real(a); >> ao=imag(a); >> lienhop=conj(a); >> dolon=abs(a); >> goc =angle(a); 3.5- Sử dụng các file lệnh (lập trình M-file) Những lệnh của Matlab có thể đ•ợc đ•a vào một file. Sau đó bạn sẽ h•ớng dẫn Matlab làm việc với các lệnh đó. Bây giờ, với ví dụ 1, chúng ta sẽ đ•a toàn bộ các lệnh trên vào một file lấy tên là vidu.m. Tên của file phải đ•ợc bắt đầu bằng một ký tự và phần mở rộng là .m. Các b•ớc nh• sau: B•ớc 1: File / New/ M-file, Môi tr•ờng soạn thảo Editor / Debugger sẽ xuất hiện B•ớc 2: Trên màn hình soạn thảo, ta gõ các lệnh của Matlab. a = 2; b = 5; c=-3; x1= (-b + sqrt(b^2- 4*a*c))/(2*a) x2= (-b - sqrt(b^2- 4*a*c))/(2*a) B•ớc 3: Ghi lại nội dung tập tin với tên vidu.m rồi thoát khỏi môi tr•ờng soạn thảo để trở về cửa sổ lệnh (Matlab Command window). B•ớc 4: Tại cửa sổ lệnh ta gõ tên tập tin. >>vidu.m 26
- Giáo trình Matlab và ứng dụng 3.6 - Dòng nhắc gán giá trị các biến: Để thay đổi các giá trị a,b,c ta phải soạn thảo lại file vidu.m rồi chạy lại. Ta sửa lại ch•ơng trình để có dòng nhắc nhập a,.b,c với các lần chạy ch•ơng trình khác nhau. B•ớc 1: File / New/ M-file, Môi tr•ờng soạn thảo Editor/Debugger sẽ xuất hiện (hình 3.1) B•ớc 2: Soạn thảo những Hình 3.1. Cửa sổ Matlab Editor/Debugger dòng lệnh sau trong cửa sổ Matlab Editor/Debugger: a=input('nhap a= '); b=input('nhap b= '); c=input('nhap c= '); x1= (-b + sqrt((b^2- 4*a*c))/(2*a) x2= (-b - sqrt((b^2- 4*a*c))/(2*a) B•ớc 3: L•u lại nội dung tập tin với tên vidu.m B•ớc 4: Quay lại cửa sổ Matlab Command Windows. Tại cửa sổ lệnh ta gõ tên Hình 3.2. Kết quả khi chạy tập tin Vidu tập tin. >>vidu nhap vao a= 3 nhap vao b= -4 nhap vao c= 1 x1 = 1 x2 = 0.3333 27 Hình 3.3. Minh hoạ tr•ờng hợp nghiệm ảo
- Giáo trình Matlab và ứng dụng Hai nghiệm ứng với các gia trị a,b,c vừa nhập vào và là nghiệm thực. Hình 3.3 là tr•ờng hợp ph•ơng trình có nghiệm ảo. VD về Script file: Giải bài tập mạch: cho mạch điện nh• hình vẽ R L C u Hãy tính dòng trong mạch và điện áp trên từng phần tử . Hãy vào cửa sổ soạn thảo và trong cửa sổ này ta viết ch•ơng trình nh• sau: R=input( 'nhap gia tri cho R = ') C=input( 'nhap gia tri cho C = ') L=input( 'nhap gia tri cho L = ') U=input( 'nhap gia tri cho U = ') ZL=2*50*pi*L*i ZC=1/(2*50*pi*C*i) Z=R+ZL+ZC i= U/Z UR=i*R UL=i*ZL UC=i*ZC Sau khi viết xong ch•ơng trình ta kích vào biểu t•ợng save trong cửa sổ soạn thảo và tên là vd1. Muốn chạy ta trở lại cửa sổ MATLAB command Window và từ dấu nhắc lệnh: >> vd1 nhap gia tri cho R = 1000 R = 1000 nhap gia tri cho C = 0.1 C = 0.1000 nhap gia tri cho L = 0.2 L = 0.2000 nhap gia tri cho U = 220 28
- Giáo trình Matlab và ứng dụng U = 220 ZL = 0 +62.8319i ZC = 0 - 0.0318i Z = 1.0000e+003 +6.2800e+001i i = 0.2191 - 0.0138i UR = 2.1914e+002 -1.3762e+001i UL = 0.8647 +13.7687i UC = -0.0004 - 0.0070i 3.7- Cách tạo một hàm: Mỗi một file hàm của Matlab (M - file) đều đ•ợc khai báo nh• sau: Function [Tên kết quả] = tên hàm (danh sách các biến). Phần thân của ch•ơng trình trong hàm là các lệnh của Matlab thực hiện việc tính toán giá trị của đại l•ợng đ•ợc nêu trong phần tên kết quả theo các biến đ•ợc nêu tronhg phần danh sách biến. Các biến chỉ có tác dụng nội trong hàm vừa đ•ợc khai báo. Tên của các biến d•ợc cách nhau bằnh dấu phẩy (,). Ví dụ ta thành lập hàm đổi từ độ sang radian: function rad = change(do) rad = do*pi/180; % doi do sang radian Trong Matlab các dòng ghi chú sau dấu % không có tác dụng thực thi, chúng đơn giản là những dòng nhắc để ng•ời đọc ch•ơng trình dễ hiểu mà thôi. File.m th•ờng lấy tên là tên của hàm, ta đặt tên file hàm vừa lập là change.m. Nếu muốn đổi 450 sang radian, chỉ cần gõ: >>rad = change(45) rad = 0.7854 Ví du: tạo hàm giải ph•ơng trình bậc hai, tên tập tin đ•ợc đặt là bachai.m. function [x1,x2] = bachai(a,b,c) delta = b^2-4*a*c; x1 = (-b + sqrt(delta))/(2*a); x2 = (-b - sqrt(delta))/(2*a); >>[x1,x2]=bachai1(4,6,-7) x1 = 29
- Giáo trình Matlab và ứng dụng 0.77707 x2 = -2.2707 3.8- Vẽ các hàm Khi muốn vẽ một hàm nào đó, phải xác định hàm đó trong một file.m sau đó sử dụng lệnh : Fplot(‘tên hàm’,[khoange vẽ]) Ví dụ vẽ hàm y = 4x2+6x-7 trong đoạn [-6, 6], ta lập file bachai1.m. function y = bachai1(x) a = 4;b = 6; c = -7; y =a*x^2 + b*x + c; Hình 3.4. Kết quả của lệnh fplot(‘bachai1’, [-6,6]) >>fplot(‘bachai1’, [-6,6]) 3.9- L•u và lấy dữ liệu: Ta có thể có thể tạo lập một file dữ liệu, sau đó khi cần dùng thì lấy ra. Ví dụ tạo lập một ma trận A: 1 1.1 1.2 2 2.1 2.2 3 3.2 3.2 Sau đó ta l•u ma trận vào một file có tên là dulieu1. >>A = [1 1.1 1.2;2 2.1 2.2;3 3.2 3.2] A = 1.0000 1.1000 1.2000 2.0000 2.1000 2.2000 3.0000 3.2000 3.2000 >>save dulieu1 Nh• vậy, ta đã có một file dữ liệu (file này nằm trong th• mục work của Matlab). Khi cần sử dụng file dữ liệu này, ta lấy nh• sau: >>load d•lieu Sau lệnh load, ta có thể lấy dữ liệu để sử dụng: 30
- Giáo trình Matlab và ứng dụng >>A A = 1.0000 1.1000 1.2000 2.0000 2.1000 2.2000 3.0000 3.2000 3.2000 3.10- Cấu trúc câu lệnh điều kiện: Lệnh if đơn: Cú pháp: if Nhóm lệnh; end Nếu biểu thức logic đúng nhóm lệnh sẽ đ•ợc thực hiện. Nếu biểu thức logic sai thì ch•ơng trình chuyển đến lệnh sau end. VD: function y=f(a,b,c) if a > ht(2,4,2) hinh thang nguoc ans = 6 Cấu trúc lệnh if lồng nhau: Cú pháp: if Nhóm lệnh 1; if Nhóm lệnh 2; end Nhóm lệnh 3; 31
- Giáo trình Matlab và ứng dụng end Nhóm lệnh 4; Nếu biểu thức logic 1 đúng thì - Thực hiện nhóm lệnh 1. - Kiểm tra biểu thức logic 2. - Nếu đúng thực hiện nhóm lệnh 2 - Nếu sai bỏ qua nhóm lệnh 2 - Thực hiện nhóm lệnh 3. Nếu biểu thức logic 1 sai thì - Thực hiện nhóm lệnh 4. Lệnh else: Cú pháp: if Nhóm lệnh A; else Nhóm lệnh B; end Nhóm lệnh A sẽ đ•ợc thực hiện nếu biểu thức logic đúng. Nếu không nhóm lệnh B sẽ đ•ợc thực hiện. Lệnh elseif Cú pháp: if Nhóm lệnh A; elseif Nhóm lệnh B; elseif Nhóm lệnh C; end Nếu BT logic 1 đúng nhóm lệnh A sẽ đ•ợc thực hiện. Nếu sai kiểm tra Btlogic 2, nếu đúng thực hiện nhóm lệnh B. Nếu sai kiểm tra BT logic3,nếu đúng thực hiện nhóm lệnh C Nếu không có biểu thức logic nào đúng thì không có lệnh nào trong cấu trúc trên đ•ợc thực hiện. Kết hợp cấu trúc elseif và else 32
- Giáo trình Matlab và ứng dụng Cú pháp: if Nhóm lệnh A; elseif Nhóm lệnh B; elseif Nhóm lệnh C; else Nhóm lệnh n; end Nếu BT logic 1 đúng nhóm lệnh A sẽ đ•ợc thực hiện. Nếu sai kiểm tra Btlogic 2, nếu đúng thực hiện nhóm lệnh B. Nếu sai kiểm tra BT logic3, nếu đúng thực hiện nhóm lệnh C Nếu không có biểu thức logic nào đúng thì nhóm lệnh n đ•ợc thực hiện. a=input(' vao a=') b=input(' vao b=') c=input(' vao c=') d=b^2-4*a*c if d break end thoát khỏi vòng lặp nếu điều kiện logic đúng. Ng•ợc lại sẽ thực hiện lệnh tiếp theo trong vòng lặp. 33
- Giáo trình Matlab và ứng dụng 3.11- Cấu trúc vòng lặp. Vòng lặp for: cú pháp: for chỉ số = biểu thức nhóm lệnh ; end Ví dụ 1: Tính tổng của n số tự nhiên liên tiếp, n vào từ bàn phím (viết trong Script file): n=input('vao so tu nhien n='); s=0; for i=1:n; s=s+i; end disp(s) Ví dụ 2: b•ớc tính của biến có thể khác 1: n=input('vao so tu nhien n='); s=0; for i=1:5:n; s=s+i; end disp(s) Vòng lặp for lồng nhau: cú pháp: for chỉ số 1 = biểu thức 1 for chỉ số 2 = biểu thức 2 nhóm lệnh 2 end nhóm lệnh 1; end Ví dụ: n=input(' vao n='); m=input(' vao m='); for i=1:n; for j=1:m; a(i,j)=i+j; disp([a(i,j)]) end disp(i) end VD3: n=4 a = zeros(n,n) % Tạo ma trận không for i = 1:n for j = 1:n 34
- Giáo trình Matlab và ứng dụng a(i,j) = 1/(i+j –1); end end disp(‘Ket qua =’) disp(a) Vòng lặp While Cú pháp: while Nhóm lệnh A; end Nếu biểu thức đúng thì thực hiện nhóm lệnh A. Khi thực hiện xong thì kiểm tra laị điều kiện. Nếu điều kiện vẫn đúng lại thực hiện nhóm lệnh A. Nếu sai vòng lặp kết thúc. * Các lệnh break, return, error: Lệnh break: kết thúc sự thự thi vòng lặp for hoặc while Lệnh return: th•ờng đ•ợc sử dụng trong các hàm của Matlab. Lệnh return sẽ cho phép quay trở về thực thi những lệnh nằm trong tác dụng của lệnh return. Lệnh error (‘dòng nhắn’): kết thúc thực thi lệnh và hiển thị dòng nhắn trên màn hình. Ví dụ: Chọn một số d•ơng bất kỳ. Nếu số đó là số chẵn thì chia hết cho hai. Nếu số đó là số lẻ thì nhân với 3 rồi cộng 1. Lặp lại quá trình đó cho đến khi kết quả là 1. Ch•ơng trình: while 1 n=input ('Nhap vao mot so : '); if n 1 if rem(n,2)== 0% phan du cua n chia cho 2 n=n/2 else n= 3*n+1 end end Khi chạy ch•ơng trình ta sẽ thấy tác dụng của lệnh break (dừng ch•ơng trình khi nhập số âm hoặc số 0) 3.12- Một số hàm toán học: Mục này chỉ giới thiệu một số hàm đơn giản và th•ờng gặp trong khi lập trình: 35
- Giáo trình Matlab và ứng dụng Tên hàm Cú pháp Giải thích sin sin(x) hàm sin cos cos(x) hàm cos tan tan(x) hàm tang asin asin(x) hàm arcsin acos acos(x) hàm arccos atan atan(x) hàm arctang acos acos(x) hàm arccos sinh sinh(x) hàm sin hyperbolic cosh cosh(x) hàm cos hyperbolic tanh tanh(x) hàm tang hyperbolic asinh asinh(x) hàm arcsin hyperbolic acosh acosh(x) hàm arccos hyperbolic atanh atanh(x) hàm arctang hyperbolic abs abs (x) Lấy giá trị tuyệt đối hoặc độ lớn của số phức round round(x) làm tròn đến số nguyên gần nhất fix fix(x) làm tròn h•ớng về không floor floor(x) làm tròn h•ớng về - ceil ceil(x) làm tròn h•ớng về + rem rem(x) phần d• sau khi chia gcd gcd(x) •ớc số trung lớn nhất lcm lcm(x) bội số trung nhỏ nhất exp exp(x) luỹ thừa e log log(x) logarit cơ số e log2 log2(x) logarit cơ số 2 log10 log10(x) logarit cơ số 10 36
- Giáo trình Matlab và ứng dụng ch•ơng 4 - Ma trận và các phép toán về ma trận 4.1- Khái niệm: Trong MATLAB dữ liệu để đ•a vào xử lý d•ới dạng ma trận. Ma trận là một mảng hai chiều mà các phần tử có thể là số thực hoặc số phức. Thông th•ờng hai thuật ngữ ma trận và mảng đ•ợc sử dụng thay thế cho nhau. Chính xác hơn thì ma trận là một mảng hai chiều hình chữ nhật với các phần từ là các số thực hoặc số phức. Các phép toán đại số tuyến tính về ma trận đ•ợc sử dụng rất rộng rãi trong các lĩnh vực kỹ thuật. Trong Matlab, các phần tử của ma trận có thể là các chữ số cũng có thể là các ký tự không số (symbol - biểu t•ợng). - Ma trận A có n hàng, m cột đ•ợc gọi là ma trận cỡ (kích th•ớc) n m và đ•ợc ký hiệu là An m - Phần tử aij (i = 1 n, j = 1 m) của ma trận An m là phần tử nằm ở hàng thứ i, cột j. - Ma trận đơn (số đơn lẻ) là ma trận 1 hàng 1 cột. Nói cách khác, mỗi một số vô h•ớng (số nguyên, số thực hoặc số phức) đ•ợc coi là một ma trận đơn có kích th•ớc (1x1). - Một véc tơ hàng là một ma trận có kích th•ớc (1xm) và đ•ợc biểu diễn nh• sau: a11 a12 a1m - Một véc tơ cột là một ma trận có kích th•ớc (nx1) và đ•ợc biểu diễn nh• sau: a11 a21 an1 4.1.1- Các qui định để định nghĩa một ma trận: - Tên ma trận là một chuỗi ký tự dài tối đa 31 ký tự. Tên phải bắt đầu bằng chữ cái sau đó có thể là số, chữ cái, một số ký tự đặc biệt trừ các ký tự: +, -, *, /, & Tên đặt bên trái dấu bằng , , bên phải dấu bằng là các phần tử của ma trận. - Bao quanh các phần tử của ma trận bằng dấu ngoặc vuông [aij]. - Các phần tử trong một hàng của ma trận đ•ợc cách nhau bởi ký tự trắng (space) hoặc dấu phẩy ( , ,). 37
- Giáo trình Matlab và ứng dụng - Kết thúc một hàng trong ma trận bởi dấu (;). Nói cách khác dấu (;) phân cách giữa các hàng của ma trận 4.1.2- Các cách để nhập một ma trận: - Liệt kê trực tiếp: VD: >>A =[1 2 3; 4 5 6 ; >> B =[1 2 3; 4 5 6 ; 7 8 9] - Nhập thông qua lệnh input: >> input('Nhap gia tri cho ma tran C = ') Nhap gia tri cho ma tran C = [1 3 4;4 5 7;7 5 8] ans = 1 3 4 4 5 7 7 5 8 Chú ý: - Khi kết thúc một câu lệnh có thể dùng dấu (; ) hoặc không dùng dấu (;). Nếu dùng dấu (;) câu lệnh đ•ợc thực hiện nh•ng kết quả không hiện ra màn hình. Nếu không dùng dấu ( ; ) câu lệnh đ•ợc thực hiện và kết quả đ•ợc hiện ra màn hình. - Trong cả 2 tr•ờng hợp trên sau khi câu lệnh đ•ợc thực hiện (sau khi nhấn enter) kết quả đều đ•ợc l•u trong không gian làm việc Workspace và có thể sử dụng cho các câu lệnh tiếp theo. Vd: >>a = [1 2 3;3 2 4;4 5 1]; >> b = [1 2 3;4 5 6;7 8 9] b = 1 2 3 4 5 6 7 8 9 Cả 2 ma trận A, B đều đ•ợc l•u vào trong bộ nhớ và có thể đ•ợc sử dụng cho những câu lệnh tiếp theo. >> c = a*b c = 3 8
- Giáo trình Matlab và ứng dụng 30 36 42 39 48 57 31 41 51 - Các phần tử trong ma trận có thể là các số phức: VD: >> a=[1+3i 2+2i;3+i 1+i] a = 1.0000 + 3.0000i 2.0000 + 2.0000i 3.0000 + 1.0000i 1.0000 + 1.0000i - Các phần tử trong ma trận có thể là các ký tự (symbol). Nh•ng tr•ớc tiên ta phải khai báo các phần tử bằng lệnh syms VD >> syms sinx cosx a %sinx, cosx, a là các biến Symbolic >> b = [ sinx cosx; a cosx] b = [ sinx, cosx] [ a, cosx] >> c=[a sinx; a a] c = [ a, sinx] [ a, a] 4.1.3- Hiển thị lại ma trận: - Để hiển thị lại ma trận ta gõ tên ma trận sau đó enter. VD >> c c = 30 36 42 39 48 57 31 41 51 - Để hiển thị nội dung của ma trận hoặc lời thông báo (trong dấu nháy đơn) ta dùng lệnh: disp VD >> disp (c) c = 30 36 42 39 48 57 39
- Giáo trình Matlab và ứng dụng 31 41 51 >> disp('hiển thị lời thông báo này') hiển thị lời thông báo này 4.2- Xử lý trong ma trận: 4.2.1- Tạo véctơ: Công thức tổng quát: Biến = giới hạn đầu : b•ớc chạy : gới hạn cuối Giới hạn đầu, giới hạn cuối, b•ớc chạy có thể là các số nguyên hoặc số thực B•ớc chạy có thể d•ơng hoặc âm. VD Tạo 1 vectơ t chạy từ 0 đến 0.6 với b•ớc chạy tiến là 0.1 >> t=0: 0.1:0.6 t = 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 VD: Tạo 1 vectơ t chạy từ 0.6 đến 0 với b•ớc chạy lùi là 0.1 >>t=0.6:-0.1:0 t = 0.6000 0.5000 0.4000 0.3000 0.2000 0.1000 0 Chú ý : Trong tr•ờng hợp giới hạn trên, gới hạn d•ới là các số nguyên và b•ớc chạy bằng 1 thì ta không cần đ•a b•ớc chạy vào trong biểu thức. VD >> C = 1:5 C = 1 2 3 4 5 4.2.2- Gọi các phần tử trong ma trận. MATLAB cho phép ta xử lý đến từng phần tử của ma trận. Để truy cập đến từng phần tử của ma trận ta phải gọi đ•ợc chúng thông qua chỉ số của từng phần tử. Tên của ma trận (Chỉ số hàng, chỉ số cột) VD: >> A = [1:3; 4:6; 7:9] A = 1 2 3 4 5 6 40
- Giáo trình Matlab và ứng dụng 7 8 9 >> B = A(1,1) B = 1 >> A(3,3) = A(2,2) + B A = 1 2 3 4 5 6 7 8 6 Chú ý: Trong tr•ờng hợp ta muốn gọi tất cả các hàng hoặc tất cả các cột ta có thể dùng toán tử hai chấm ( : ) VD: >> A = [1:3; 4:6; 7:9] A = 1 2 3 4 5 6 7 8 9 >> B = A(2,:) B = 4 5 6 >>C = A(:,2) C = 2 5 8 4.2.3- Gọi 1 ma trận con từ một ma trận lớn. VD: >> A = [1:3; 4:6; 7:9] A = 1 2 3 4 5 6 7 8 9 >> B = A ( 2:3,1:2 ) 41
- Giáo trình Matlab và ứng dụng B = 4 5 7 8 >> c =[a(1,1) a(3,3); a(2,3) a(3,1)] c = 1 9 6 7 4.3- Các ma trận đặc biệt: 4.3.1- Ma trận zeros. Tất cả các phần tử trong ma trận đều bằng 0. VD >> C = zeros (2,3) C = 0 0 0 0 0 0 >> d = zeros(3) d = 0 0 0 0 0 0 0 0 0 4.3.2- Ma trận ones. Tất cả các phần tử trong ma trận đều bằng 1 VD >> C = ones (2,3) C = 1 1 1 1 1 1 >> d = ones(3) d = 1 1 1 1 1 1 42
- Giáo trình Matlab và ứng dụng 1 1 1 4.3.3- Ma trận ma ph•ơng Magic Tổng tất cả giá trị các phần tử trên hàng = Tổng tất cả giá trị các phần tử trên cột = Tổng tất cả giá trị các phần tử trên đ•ờng chéo của ma trận Vd >> A = Magic (3) A= 8 1 6 3 5 7 4 9 2 4.3.4- Ma trận eye. Tất cả các phần tử trên đ•ờng chéo có giá trị 1, các phần tử khác có giá trị 0. VD: >> B = eye (3) B = 1 0 0 0 1 0 0 0 1 4.3.5- Ma trận Pascal: >> pascal(4) ans = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 4.4- Các phép toán vector Phép toán Công thức Matlab Cộng, trừ A+B, A-B A+B, A-B Nhân mảng A.B = C A.*B Chia trái mảng B\A B.\A 43
- Giáo trình Matlab và ứng dụng Chia phải mảng A/B A./B Luỹ thừa mảng AB A.^B 4.4.1- Các phần tử là các số thực: >>a=[1 1 2;2 1 1] a = 1 1 2 2 1 1 >> b=[1 2 2; 1 1 1] b = 1 2 2 1 1 1 >> c=a.*b c = 1 2 4 2 1 1 >> d=a./b d = 1.0000 0.5000 1.0000 2.0000 1.0000 1.0000 >> e=a.\b e = 1.0000 2.0000 1.0000 0.5000 1.0000 1.0000 >> f=a.^b f = 1 1 4 2 1 1 4.4.2- Các phần tử là các số phức. >>a=[1+i 2+3i;3-4i 1+3i] a = 44
- Giáo trình Matlab và ứng dụng 1.0000 + 1.0000i 2.0000 + 3.0000i 3.0000 - 4.0000i 1.0000 + 3.0000i >> b=[2+i 2+2i;1-4i 3+3i] b = 2.0000 + 1.0000i 2.0000 + 2.0000i 1.0000 - 4.0000i 3.0000 + 3.0000i >> c=a.*b c = 1.0000 + 3.0000i -2.0000 +10.0000i -13.0000 -16.0000i -6.0000 +12.0000i 4.4.3- Các phần tử là các tham số: >> syms a b c % khai báo các phần tử là các ký tự >>A=[a b; b c] A = [ a, b] [ b, c] >> B=A B = [ a, b] [ b, c] >> C=A.*B C = [ a^2, b^2] [ b^2, c^2] 4.5- Các phép toán về ma trận 4.5.1- Phép chuyển vị Phép chuyển đổi véctơ hàng thành véctơ cột gọi là phép chuyển vị. Thực hiện phép chuyển vị bằng toán tử dấu nháy đơn ( ‘ ). VD: 45
- Giáo trình Matlab và ứng dụng >> A = [1:3; 4:6; 7:9] A = 1 2 3 4 5 6 7 8 9 >> B = A’ B = 1 4 7 2 5 8 3 6 9 Ma trận B đ•ợc gọi là ma trận chuyển vị của ma trận A. Phép chuyển vị biến ma trận hàng (hoặc véc tơ) thành ma trận cột, ma trận cột thành ma trận hàng (hoặc véc tơ). Nếu cả x và y là các véc tơ cột các số thực, thì tích x*y không đ•ợc định nghĩa nh•ng hai tích số x’*y và ‘*x thì giống như tích vô hướng. Đôíi với ma trận hay véc tơ có các phần tử là số phức z, đại lượng z’ biểu thị chuyển vị liên hợp của z. Phép chuyển vị không liên hợp của số phức biểu thị bởi z.’ tương tự như các phép toán mảng khác. Ví dụ: >>z = [1+2i 3+4i] >>z’ ans = 1-2i 3-4i >>z.’ ans = 1+2i 3+4i Đối với các véc tơ phức, hai tích vô hướng x’*y và y’*x là liên hợp phức của nhau và tích vô hướng của một véc tơ số phức với chính nó x’*x là một số thực. 4.5.2- Phép nghịch đảo ma trận Nếu A là một ma trận vuông và không duy nhất, các ph•ơng trình AX = I và XA = I có cùng một lời giải. Lời giải này đ•ợc gọi là phép nghịch đảo của A, đ•ợc biểu diễn bởi A-1 và đ•ợc tính toán bởi hàm inv. Cú pháp: B=inv(A) Vd: 46
- Giáo trình Matlab và ứng dụng >> A=[1:2;2:3] A = 1 2 >> B=inv(A) B = -3 2 >> A*B ans = 1 0 2 3 2 -1 0 1 L•u ý trong một số tr•ờng hợp kết quả của phép nghịch đảo có thể không chính xác do sai số làm tròn. Nếu có cảnh báo (Warning) xuất hiện ta phải kiểm tra lại bằng cách nhân hai ma trận tr•ớc và sau khi thực hiện phép nghịch đảo. Nếu A vuông và không duy nhất, không có sai số làm tròn thì X = inv(A)*B về lý thuyết thì giống nh• X=A\B và Y= B*inv(A) giống nh• Y=B/A. Tuy nhiên, các phép toán sử dụng các phép \ và / th•ờng đ•ợc sử dụng hơn vì chúng đòi hỏi thời gian tính toán, bộ nhớ ít hơn và có đặc tính xác định sai số tốt hơn. 4.5.2 3- Phép cộng - trừ ma trận.( + , - ) Phép cộng và trừ ma trận đ•ợc đ•ợc định nghĩa nh• là đối với mảng, cộng hoặc trừ t•ơng ứng từng phần tử. Cộng và trừ yêu cầu cả hai ma trận phải có cùng kích th•ớc hoặc một trong hai ma trận là vô h•ớng. Nếu hai ma trận không cùng kích th•ớc, Matlab sẽ báo lỗi. Cij = Aij + Bij Dij = Aịj - Bij >> A = [1:3; 4:6; 7:9] A = 1 2 3 4 5 6 7 8 9 >> B = A’ B = 1 4 7 2 5 8 3 6 9 >> C = A + B C = 2 6 10 6 10 14 10 14 18 47
- Giáo trình Matlab và ứng dụng 4.5.3 4- Phép nhân, chia ma trận: Phép nhân ma trận đ•ợc định nghĩa theo cách mà phản ánh thành phần của các phép biến đổi tuyến tính cơ bản và cho phép biểu diễn ngắn gọn các hệ ph•ơng trình tuyến tính thuần nhất. Phép nhân ma trận C = A*B đ•ợc định nghĩa khi số hàng của A (ma trận bị nhân) bằng số cột của ma trận B (ma trận nhân). Các phần tử trong ma trận C đ•ợc tính nh• sau: cij = aikbkj VD các phần tử trong ma trận là các số thực. >> A = [1 2 1; 1 0 1] A = 1 2 1 1 0 1 >> B = [1 0 2; 2 1 1; 1 1 1] B = 1 0 2 2 1 1 1 1 1 >> C = A * B C = 6 3 5 2 1 3 VD các phần tử trong ma trận là các số phức. >> a=[1+2i 2+2i;1+3i 2+2i] a = 1.0000 + 2.0000i 2.0000 + 2.0000i 1.0000 + 3.0000i 2.0000 + 2.0000i >> b=[1+i 2+i;1+3i 2+i] b = 1.0000 + 1.0000i 2.0000 + 1.0000i 1.0000 + 3.0000i 2.0000 + 1.0000i >> c=a*b c = -5.0000 +11.0000i 2.0000 +11.0000i 48
- Giáo trình Matlab và ứng dụng -6.0000 +12.0000i 1.0000 +13.0000i VD các phần tử trong ma trận là các tham số >> syms a b c >>d=[2*a b c; a b c; 0 0 a] d = [ 2*a, b, c] [ a, b, c] [ 0, 0, a] >> e=[a b c; 2*a 2*b^2 c ; a 0 b] e = [ a, b, c] [ 2*a, 2*b^2, c] [ a, 0, b] >> f=d*e f = [ 2*a^2+2*b*a+c*a, 2*b*a+2*b^3, 2*c*a+2*c*b] [ a^2+2*b*a+c*a, b*a+2*b^3, c*a+2*c*b] [ a^2, 0, b*a] Phép chia ma trận thực chất là phép nhân với ma trận nghịch đảo. A 1 C A* B B Lấy ma trận nghịch đảo thực hiện bằng hàm inv. >> A = [1 2 1; 1 0 1] A = 1 2 1 1 0 1 >> B = [1 0 2; 2 1 1; 1 1 1] B = 1 0 2 2 1 1 1 1 1 49
- Giáo trình Matlab và ứng dụng >> C = inv(B) C = 0 1.0000 -1.000 -0.5000 -0.5000 1.5000 0.500 -0.5000 0.5000 >> D = A*C D= - 0.5000 -0.5000 2.5000 0.5000 0.5000 -0.5000 Chú ý: Trong các phép tính trên nếu một trong hai ma trận là vô h•ớng (là một số thực hoặc số phức) thì tất cả các phần tử trong ma trận sẽ đ•ợc cộng, trừ, nhân, chia ( / ) với số thực đó tuỳ thuộc vào phép toán t•ơng ứng. >> A = [1 2 1; 1 0 1] A = 1 2 1 1 0 1 >> B = A*2 B = 2 4 2 2 0 2 4.5.4 5- Phép luỹ thừa và số mũ của ma trận và p là một số nguyên d•ơng thì A^p nhân A với chính nó p lần. Ví dụ: >>A = magic(3); >>X = A^3 X = 1197 1029 1149 1077 1125 1173 1101 1221 1053 Nếu A là một ma trận vuông và không duy nhất thì A^(-p) sẽ nhân inv(A) với chính nó p lần. Ví dụ: >>Y = A^(-3) Y = 0.0053 -0.0068 0.0018 -0.0034 0.0001 0.0036 50
- Giáo trình Matlab và ứng dụng -0.0016 0.0070 -0.0051 Trong tr•ờng hợp muốn luỹ thừa từng phần tử thì sử dụng phép toán mảng. >>Z = A.^3 Z = 512 1 216 27 125 343 64 729 8 Hệ ph•ơng trình vi phân th•ờng tuyến tính có hệ số không đổi có thể đ•ợc viết: dx/dt = Ax trong đó x = x(t) là một véc tơ của các hàm theo t và A là ma trận phụ thuộc vào t. Lời giải có thể đ•ợc biểu diễn d•ới thuật ngữ số mũ ma trận: x(t) = etAx(0) và đ•ợc tính toán bởi hàm expm(A). Ví dụ: >> A = pascal(3); >>x0 = [1;1;1] ; >>X = []; >>for t = 0:.01:1 X = [X expm(A*t)*x0] end 4.5.4 6- Phép quay ma trận Sử dụng lệnh rot90 để quay ma trận đi 1 góc 90 độ theo ng•ợc chiều kim đồng hồ. >> a=[1 2 3;4 5 6;7 8 9] a = 1 2 3 4 5 6 7 8 9 >> b=rot90(a) b = 3 6 9 2 5 8 1 4 7 Lệnh rot90(A,k) sẽ quay Matlab trận đi một góc k*90o với k = 1, 2, 51
- Giáo trình Matlab và ứng dụng 4.5.7- Phép đảo ma trận Đảo các phần tử của ma trận từ trái sang phải bằng lệnh fliplr, đảo ma trận từ trên xuống d•ới dùng lệnh flipud >> c=fliplr(b) >>d = flipud(pascal(3)) c = d = 9 6 3 1 3 6 8 5 2 1 2 3 7 4 1 1 1 1 4.5.8- Tính định thức ma trận >> A=[2 3 7;4 1 5;1 9 8] A = 2 3 7 4 1 5 1 9 8 >> det(A) ans = 90 4.6- ứng dụng các phép toán ma trận 4.6.1- Nhân đa thức Để nhân hai đa thức ta dùng lệnh conv: n n-1 y1 = anx + an-1x + +a0 n n-1 y 2 = bnx + bn-1x + +b0 B•ớc1: Lập 2 ma trận hàng tên y1, y2 có các phần tử là các hệ số từ an đến a0 và bn đến b0 giảm dần theo bậc của ph•ơng trình ( Nếu hệ số nào không có ghi 0 ) B•ớc 2: dùng lệnh conv để nhân 2 đa thức. >>y3= conv(y1,y2) VD: y1 = 2x2 + 3x+1 y2 = 3x2 + 4x >> y1 = [2 3 1] >> y2 = [3 4 0] 52
- Giáo trình Matlab và ứng dụng >> y3 = conv(y1,y2) >> y3 = 6 17 15 4 0 Chú ý: hàm conv chỉ thực hiện nhân 2 đa thức. Muốn nhân nhiều đa thức với nhau ta phải thực hiện nhiều lần hàm conv. 4.6.2- Giải ph•ơng trình bậc cao Sử dụng lệnh Roots để giải ph•ơng trình bậc n: n n-1 y = anx + an-1x + +a0 B•ớc1: Lập 1 ma trận hàng có các phần tử là các hệ số từ an đến a0 giảm dần theo bậc của ph•ơng trình ( Nếu hệ số nào không có ghi 0 ) B•ớc 2: Dùng lệnh Roots để giải ma trận vừa tạo đ•ợc. VD giải ph•ơng trình sau: y = x5 -2x4 + 5x2 -1 >> y = [ 1 -2 0 5 0 -1] y = 1 -2 0 5 0 -1 >> kq=roots(y) kq = 1.5862 + 1.1870i 1.5862 - 1.1870i -1.1606 -0.4744 0.4627 4.6.3- Biết nghiệm tìm lại ph•ơng trình Sử dụng lệnh poly. Lấy kết quả của ví dụ trên >>A = [1 –1 2;1 3 4;2 –1 1]; >>poly(A) ans = 1 -5 8 14 4.6.4- Giải hệ ph•ơng trình tuyến tính: Vd: giải hệ ph•ơng trình tuyến tính sau: 53
- Giáo trình Matlab và ứng dụng 2x 3y z 7 3x 6y 4z 19 x y z 2 Thực chất hệ ph•ơng trình trên có thể đ•a về phép toán ma trận sau: 2 3 1 x 7 3 6 4 y 19 1 1 1 z 2 Nh• vậy việc giải hệ PT tuyến tính thực chất là thực hiện phép toán về ma trận. >> A=[2 3 1;3 6 -4;1 1 1] A = 2 3 1 3 6 -4 1 1 1 >> B=[7;19;2] B = 7 19 2 >> C=inv(A) C = -2.5000 0.5000 4.5000 1.7500 -0.2500 -2.7500 0.7500 -0.2500 -0.7500 >> kq=C*B kq = 1.0000 2.0000 -1.0000 VD2: >>A=[1+i 2i;3+i 1] A = 1.0000 + 1.0000i 0 + 2.0000i 3.0000 + 1.0000i 1.0000 54
- Giáo trình Matlab và ứng dụng >> C=inv(A) C = 0.0882 + 0.1471i 0.2941 - 0.1765i -0.1176 - 0.5294i -0.0588 + 0.2353i >> B=[1; 2+i] B = 1.0000 2.0000 + 1.0000i >> KQ=C*B KQ = 0.8529 + 0.0882i -0.4706 - 0.1176i VD3: >>syms a1 a2 b1 b2 c1 c2 >>A=[a1 a2;b1 b2] A = [ a1, a2] [ b1, b2] >> B=[c1;c2] B = [ c1] [ c2] >> C=inv(A) C = [ -b2/(-a1*b2+b1*a2), a2/(-a1*b2+b1*a2)] [ b1/(-a1*b2+b1*a2), -a1/(-a1*b2+b1*a2)] >> KQ=C*B KQ = [ -b2/(-a1*b2+b1*a2)*c1+a2/(-a1*b2+b1*a2)*c2] [ b1/(-a1*b2+b1*a2)*c1-a1/(-a1*b2+b1*a2)*c2] 55
- Giáo trình Matlab và ứng dụng Phần 2 Các ứng dụng trong matlab Formatted 1.4.3 Lệnh ezplot3: vẽ đ•ờng xoắn ốc. VD: >> ezplot3(‘sin(t)’,’cos(t)’,’t’,[0,6*pi]) Ch•ơng 5 – Symbolic toolbox Symbolic Math Toolbox định nghĩa một kiểu dữ liệu mới của Matlab gọi là đối t•ợng Symbolic. Một đối t•ợng Symbolic là một cấu trúc dữ liệu l•u trữ một đại diện kiểu sâu ký tự của một biểu t•ợng (Symbol). Symbolic Math Toolbox sử dụng các đối t•ợng Symbolic để biểu diễn các biến, biểu thức và Matlab trận Symbolic. 5.1- Tạo đối t•ợng (biến, biểu thức) symbolic Lệnh sym cho phép xây dựng các biến và biểu thức symbolic. Ví dụ: >> x = sym(‘x’); y = sym(‘y’); % lệnh này tạo ra x,y là các biến symbolic. 1 + 5 Giả sử ta muốn sử dụng một biến symbolic để biểu diễn tỷ số: = ta sử 2 dụng lệnh sau: >>ro = sym(‘(1+sqrt(5))/2’); sau lệnh ở trên ta có thể thực hiện rất nhiều phép toán đối với ro, ví dụ: >>f = ro^2-ro-1 f = (1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2) Giả sử bạn muốn nghiên cứu hàm bậc hai f = ax2 + bx +c. >> f=sym('a*x^2+b*x+c') f = a*x^2+b*x+c Câu lệnh trên đã gán biểu thức symbolic ax2 + bx +c vào biến f. Tuy nhiên, trong tr•ờng hợp này Matlab không tạo ra các biến t•ơng ứng với các số hạng của biểu thức (a, 56
- Giáo trình Matlab và ứng dụng b, c, x). Để thực hiện các phép toán symbolic chẳng hạn như tích phân, đạo hàm, đối với f, cần tạo ra các biến một cách chính xác bằng cách gõ: >>a = sym('a') >>b = sym('b') >>c = sym('c') >>x = sym('x') Hoặc ta có thể khai báo một cách đơn giản: >> syms a b c x * Tạo các biến thực: >> x = sym(‘x’, ‘real’);y =sym(‘y’,’real’) %x,y là biến kiểu thực symbolics hoặc đơn giản hơn >>syms x y real %Lệnh này tạo ra các biến x và y là biến symbolic kiểu thực. >>syms x real y hay x = sym(‘x’,’ real’);y = sym(‘y’) % x là biến kiểu thực, y là biến bất kỳ kiểu symbolic Để xoá đặc tính ‚real‛ của các biến x, y ta dùng lệnh sau: syms x y unreal hay: >>x = sym(‘x’, ‘unreal’) syms t Q = sym(‘Q(t)’); % t biến symbolic và Q là hàm symbolic. * Biến symbolic mặc định Khi vận dụng các hàm toán học, việc chọn biến độc lập th•ờng là rõ ràng từ ngữ cảnh. Ví dụ, ta xem xét biểu thức toán học f = sin(a.t + b) đ•ợc biểu diễn trong Matlab nh• sau: f =. Nếu ta cần tính đạo hàm của biểu thức này mà không xác định biến độc lập thì theo quy ước toán học ta nhận được f’ = a.cos(a.t + b). Giả thiết rằng biến độc lập trong biểu thức này là t thì các biến còn lại a, b đ•ợc xem nh• các hằng số hoặc tham số. Theo quy •ớc toán học thì biến độc lập th•ờng là các chữ in th•ờng nằm ở cuối bảng chữ cái (ví dụ: x, y, z, t, u, v, ). >>syms a b t >>f = sin(a*t + b); >>diff(f) %Lệnh này tính đạo hàm của biểu thức symbolic f. trong câu lệnh diff(f), ta không xác định là đạo hàm biểu thức f theo biến nào (a, b hay x). Làm thế nào Matlab xác định đ•ợc ta muốn đạo hàm theo biến t mà không phải là 57
- Giáo trình Matlab và ứng dụng a hoặc b. Trong symbolic math toolbox sử dụng một biến symbolic để xác định biến độc lập mặc định trong tr•ờng hợp chúng ta không xác định biến độc lập, đó là một hàm tiện ích findsym. Biến symbolic mặc định đ•ợc sử dụng trong các phép toán tính toán, đơn giản hoá biểu thức, giải ph•ơng trình và các phép biến đổi. >>findsym(f,1) ans = t ở đây, đối số thứ hai trong hàm findsym biểu thị số biến symbolic mà ta muốn tìm trong biểu thức f. Nếu không xác định đối số thứ hai thì findsym sẽ trả về một danh sách liệt kê tất cả các biến trong biểu thức. Ví dụ: >> findsym(f) ans = a, b, t Luật findsym: Biến độc lập trong một biểu thức symbolic là một chữ cái gần chữ x nhất trong bảng chữ cái. Nếu có hai chữ gần chữ x thì chữ sau x trong bảng chữ cái đ•ợc chọn. ví dụ: >>findsym(a+c-v*y,1) ans= y 5.2- Các phép tính Symbolic Math Toolbox cung cấp các hàm để thực hiện các phép tính cơ bản nh•: tích phân, đạo hàm, tìm giới hạn, tính tổng của chuỗi, khai triển Taylor. 5.2.1- Đạo hàm Để tính đạo hàm của một biểu thức symbolic ta sử dụng hàm diff() + diff(S): Đạo hàm biểu thức symbolic S với biến tự do đ•ợc xác định bởi hàm findsym(S). + diff(S,v) hay diff(S,sym(‘v’)): Đạo hàm biểu thức symbolic S với biến lấy đạo hàm là biến symbolic v nghĩa là thực hiện phép toán dS/dv. + diff(S,n) : Đạo hàm cấp n biểu thức S, n là số nguyên d•ơng. Ví dụ: >>syms x t 58
- Giáo trình Matlab và ứng dụng >> y = sin(x^2); >>z = diff(y); z = 2*cos(x^2)*x >>pretty(z) %hiển thị dạng quen thuộc 2.cos2x.x >>y = diff(t^6,6) % đạo hàm bậc 6 của hàm t6. y = 720 >>syms u v >>y = u^2*v - u*v^3; >> y2u = diff(y,u,2) %dao ham cap 2 theo u y2u = 2*v >> y3u = diff(y,v,3) %dao ham cap 3 theo v y3u = -6*u 5.2.2- Tích phân Để tính tích phân của một biểu thức symbolic ta sử dụng hàm int() + int(S): Tích phân không xác định của biển thức symbolic S theo biến mặc định đ•ợc xác định bởi findsym. + int(S, v): Tích phân không xác định của biểu thức symbolic S với biến tích phân v. + int(S,a,b): Tích phân không xác định của biểu thức symbolic S với biến tự do và cận lấy tích phân từ [a,b]. + int(S,v,a,b): Tích phân không xác định của biểu thức symbolic S với biến tích phân v và cận lấy tích phân từ [a,b]. Vidụ: >>syms x t z alpha >>int(-2*x/(1+x^2)^2) ans = 1/(1+x^2) >>int(x/(1+z^2),z) ans = x*atan(z) >>int(x*log(1+x),0,1) ans = 1/4 >>int(-2*x/(1+x^2)^2) 59
- Giáo trình Matlab và ứng dụng ans = 1/(1+x^2) >> int([exp(t),exp(alpha*t)]) ans = [ exp(t), 1/alpha*exp(alpha*t)] 2 Vídụ: Tính tích phân I = e (sx) dx >>Syms x s real >>f = exp(-(s*x)^2); >>I = int(f,x,-inf,inf)% inf - Infinity là vô cùng lớn I = Signum(s)/s*pi^(1/2) Hàm signum chính là hàm sign (hàm dấu), nghĩa là sign(s) cho ta: sign(s) = 1 khi s>0; sign(s) = 0 khi s =0; sign(s) = -1 khi s >syms x a t h >>limit(sin(x)/x) ans = 1 >>limit(1/x,x,0,’right’) ans = inf >>limit(1/x,x,0,’left’) ans = -inf >>limit((sin(x+h)-sin(x))/h,h,0) ans = cos(x) >>v = [(1+a/x)^x,exp(-x)]; >>limit(v,x,inf,’left’) ans = [exp(a),0] 60
- Giáo trình Matlab và ứng dụng 5.2.4- Tính tổng của dãy số symbolic Để tìm tổng của biểu thức symbolic S ta dùng lệnh symsum() + symsum(S): Tổng của biểu thức symbolic theo biến symbolic k , k đ•ợc xác định bằng lệnh findsym từ 0 k -1. + symsum(S,v): Tổng của biểu thức symbolic S theo biến symbolic v,v đ•ợc xác định từ 0 k - 1. + symsum(S,a,b), symsum(S,v,a,b): Tổng của biểu thức symbolic S theo symbolic v, v đ•ợc xác định từ v = s đến v = b. Ví dụ: >>syms k n x >>symsum(k^2) ans = 1/3*k^3-1/2*k^2+1/6*k >>symsum(k) ans = 1/2*k^2-1/2*k >>symsum(sin(k*pi)/k,0,n) ans = -1/2*sin(k*(n+1))/k+1/2*sin(k)/k/(cos(k)-1)*cos(k*(n+1))- 1/2*sin(k)/k/(cos(k)-1) >>symsum(k^2,0,10) ans = 385 >>symsum(x^k/sym(‘k!’), k, 0,inf) ans = exp(x) Vi dụ: Cho tổng của 2 dãy 1 1 S1 = 1 + . 22 32 S2 = 1 + x + x2 + >>syms x k >>s1 = symsum(1/k^2,1,inf) %inf là vô cùng. s1 = 1/6*pi^2 >>s2 = symsum(x^k,k,0,inf) s2 = -1/(x-1) 61
- Giáo trình Matlab và ứng dụng 5.2.5- Khai triển taylor + taylor(f): Là phép xấp xỉ đa thức bậc 5 gần đúng với f. Về mặt kỹ thuật, chuỗi Taylor (xấp xỉ xung quanh điểm x0 0) chính là tr•ờng hợp tổng quát của chuỗi Maclaurin (xấp xỉ xung quanh điểm x0 = 0) + taylor(f,n,v): Cho ta xấp xỉ đa thức theo Maclaurin bậc (n-1) của biểu thức, hàm khai triển symbolic f và v là biến độc lập trong biểu thức. v có thể là một xâu (string) hay là biến symbolic. + taylor(f,n,v,a): Khai triển Taylor của biểu thức hay hàm symbolic f quanh điểm a. Đối số có thể là giá trị số, một hàm symbolic hay một xâu Nếu không cho giá trị n thì mặc định trong Matlab n = 6. xsin(x) Vi dụ: Khai triển Taylor của hàm f = e quanh điểm x0 = 2 (Nếu x0 = 0 ta có khai triển Maclaurin). >>syms x >> f = exp(x*sin(x)); >>t = taylor(f,4,2)% khai triển 4 số hạng đầu tiên khác o và xung quanh điểm x0 = 2 Kết quả: exp(2*sin(2))+exp(2*sin(2))*(2*cos(2)+sin(2))*(x-2)+exp(2*sin(2))*(- sin(2)+cos(2)+2*cos(2)^2+2*cos(2)*sin(2)+1/2*sin(2)^2)*(x-2)^2+exp(2*sin(2))*(- 1/3*cos(2)-1/2*sin(2)-cos(2)*sin(2)+2*cos(2)^2- sin(2)^2+4/3*cos(2)^3+2*cos(2)^2*sin(2)+cos(2)*sin(2)^2+1/6*sin(2)^3)*(x-2)^3 Bây giờ ta có thể vẽ hàm đã cho và hàm đã khai triển bằng chuỗi Taylor quanh điểm x0 = 2 và cho nhận xét. >>syms x >> f = exp(x*sin(x)); >>t = taylor(f,10,2); >>xd= 1:0.05:3; >>yd = subs(f,x,xd);% thay thế biễn x bằng xd >>ezplot(t,[1,3])% vẽ hàm symbolic >> hold on >>plot(xd,yd,'r-') 62
- Giáo trình Matlab và ứng dụng 5.3- Đơn giản hoá biểu thức và thay thế 5.3.1- Gom số hạng, biến Để gom các hệ số có cùng luỹ thừa của biến độc lập ta sử dụng lệnh collect(). + collect(S): S là đa thức, gom các hệ số có cùng luỹ thừa của biến mặc định đ•ợc xác định bởi findsym(S). + collect(S,v): S là đa thức, gom các số hạng chứa biến v Ví dụ: >>syms x y; >>R1 = collect((exp(x)+x)*(x+2)) >>R2 = collect((x+y)*(x^2+y^2+1), y) >>R3 = collect([(x+1)*(y+1),x+y]) Kết quả: R1 = x^2+(exp(x)+2)*x+2*exp(x) R2 = y^3+x*y^2+(x^2+1)*y+x*(x^2+1) R3 = [(y+1)*x+y+1, x+y] 5.3.2- Khai triển biểu thức Câu lệnh expand(S) khai triển biểu thức symbolic S thành nhân tử (dạng tổng của các tích). Lệnh expand th•ờng đ•ợc dùng để khai triển đa thức nh•ng cũng đ•ợc dùng để khai triển các hàm l•ợng giác, các hàm mũ và hàm logarit. expand(S): Khai triển biểu thức symbolic S, viết mỗi phần tử của S thành tích các thừa số của nó. Ví dụ: >>syms x y a b c t >>expand((x-2)*(x-4)) ans = x^2-6*x+8 >>expand(cos(x+y)) ans = cos(x)*cos(y)-sin(x)*sin(y) >>expand(exp((a+b)^2)) ans = exp(a^2)*exp(a*b)^2*exp(b^2) >>expand(log(a*b/sqrt(c))) ans = log(a)+log(b)-1/2*log(c) 63
- Giáo trình Matlab và ứng dụng >>expand([sin(2*t), cos(2*t)]) ans = [2*sin(t)*cos(t), 2*cos(t)^2-1] 5.3.3- Phân tích biểu thức thành thừa số * Factor(S): Phân tích biểu thức symbolic S thành thừa số nguyên tố. Lệnh này trả về một véc tơ các thừa số nguyên tố của S. Nếu S không thể phân tích thành các số hữ tỷ thì kết quả sẽ là chính nó. Ví dụ: >>syms x y a b >>factor(x^3-y^3) ans = (x-y)*(x^2+x*y+y^2) >>factor([a^2-b^2, a^3+b^3]) ans = [(a-b)*(a+b), (a+b)*(a^2-a*b+b^2)] >>factor(sym('12345678901234567890')) (2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541) >>factor(x^3-6*x^2+11*x-5) ans =(x^3-6*x^2+11*x-5) * primes(n): Tạo véc tơ hàng có các phần tử là các số nguyên tố nhở hơn hoặc bằng n. Số nguyên tố đ•ợc định nghĩa là số chỉ chia hết cho 1 và cho chính nó, ngoài ra không còn một thừa số nào khác. Ví dụ: >> primes(5) ans = 2 3 5 * isprime(x): Kiểm tra xem x có phải là số nguyên tố không nếu phải thì giá trị trả và là 1, ng•ợc lại thì trả về là 0. Tr•ờng hợp x là một đa thức hay một ma trận thi kiểm tra xem các phần tử của x có phải là số nguyên tố không. Ví dụ: >> isprime(3) ans = 1 >> isprime(4) ans = 0 * Phân tích đa thức ra dạng thừa số horner: 64
- Giáo trình Matlab và ứng dụng horner(f) Biểu diễn đa thức symbolic f d•ới dạng horner (lồng vào nhau) Ví dụ: >>syms x y >>horner(x^3-6*x^2+11*x-6) ans = -6+(11+(-6+x)*x)*x >>horner([x^2+x;y^3-2*y]) ans = [ (1+x)*x] [(-2+y^2)*y] * Tách tử số và mẫu số của một biểu thức symbolic [n,d] = numden(A): biến đổi mỗi phần tử của A thành dạng hữu tỷ trong đó tử số và mẫu số là các đa thức (t•ơng đối) nguyên tố với các hệ số nguyên (integer). Ví dụ: >>syms x y a b >>A= (4-x)/5; >>[n,d] = numden(A) n = 4-x d = 5 >>[n,d] = numden(x/y + y/x) n = x^2+y^2 d = y*x >>A = [a, 1/b] >>[n,d] = numden(A) n = [a, 1] d = [1, b] 5.3.4- Đơn giản biểu thức Để đơn giản biểu thức trong symbolic math toolbox định nghĩa các hàm sau: + R = simplify(S) + R = simple(S) Hàm simplify là một công cụ mạnh, mục đích tổng quát, hàm này áp dụng một số đặc tính của đại số nh• tổng, luỹ thừa, căn bậc hai, phân số và một số đặc tính hàm gồm có hàm lượng giác, hàm mũ và hàm logarit, các hamf siêu việt, Ví dụ: 65
- Giáo trình Matlab và ứng dụng >>syms x y a b c >>simplify(sin(x)^2 + cos(x)^2) ans = 1 >>simplify(exp(c*log(sqrt(a+b)))) ans = (a+b)^(1/2*c) >>S = [(x^2+5*x+6)/(x+2),sqrt(16)]; >>R = simplify(S) R = [x+3,4] >>simplify(log(x*y)) ans = log(x) + log(y) Hàm simple có mục tiêu toán học không chính thống là tìm một phép đơn giản hoá của một biểu thức sao cho nó có số ký tự ít nhất. Hàm này hoàn thành mục tiêu của nó bằng cách áp dụng một cách độc lập các hàm simplify, collect, factor, và các hàm đơn giản hoá khác vào một biểu thức và theo dõi chiều dài của các kết quả. Sau đó hàm simple trả về kết quả ngắn nhất. Hàm simple có rất nhiều dạng khác nhau, mỗi dạng lại trả về một kết quả khác nhau. Lệnh [r,h] = simple(S) không trả về biểu thức đơn giản hoá ngay mà trả về biểu thức đơn giản nhất mà nó tìm thấy đồng thời với một sâu ký tự mô tả phép đơn giản hoá. Bảng sau minh hoạ kết quả trả về đối với các biểu thức S khác nhau S R How cos(x)^2+sin(x)^2 1 combine(trig) 2*cos(x)^2-sin(x)^2 3*cos(x)^2-1 simplify cos(x)^2-sin(x)^2 cos(2*x) combine(trig) cos(x)+(-sin(x)^2)^(1/2) cos(x)+i*sin(x) radsimp cos(x)+i*sin(x) exp(i*x) convert(exp) (x+1)*x*(x-1) x^3-x collect(x) x^3+3*x^2+3*x+1 (x+1)^3 factor cos(3*acos(x)) 4*x^3-3*x expand 5.3.5- Thay thế Ta có thể thay thế các biến trong biểu thức bằng các biến hay các số thuộc kiểu khác bởi lệnh subs hoặc lệnh subexpr. 66
- Giáo trình Matlab và ứng dụng Lệnh subs có các dạng sau: + subs(S): Thay thế tất cả các biến symbolic trong biểu thức bằng các giá trị có đ•ợc từ việc gọi hàm hoặc từ Workspace của Matlab. + subs(S, new): Thay thế biến symbolic tự do trong S bằng new. + subs(S, old, new): Thay thế old bằng new trong biểu thức S. Old là một biến symbolic, một sâu đại diện cho một tên biến, hoặc một biểu thức sâu ký tự. New có thể là một biến, một biểu thức symbolic, biến số hoặc biểu thức số. Ví dụ: >>subs(a+b,a,4) ans = 4+b giả thiết trong Workspace tồn tại a = 980 và C = 3, câu lệnh y=dsolve(‘Dy = -a*y’) trả về y = exp(-a*t)*C, khi đó câu lệnh: >>subs(y) ans = 3*exp(-980*t) Ta có thể thay thế nhiều biến một lúc bằng cách sử dụng cú pháp sau: + subs(S, {old1, old2, ,oldn}, {new1, new2, , newn}) ví dụ: >> subs(cos(a)+sin(b),{a,b},{sym('x'),2}) ans = cos(x)+sin(2) Hàm (S) viết lại biểu thức S theo các biểu thức con chung: [Y,SIGMA] = subexpr(X,SIGMA) hoặc [Y,SIGMA] = subexpr(X,'SIGMA') viết lại biểu thức X theo biểu thức con chung của nó. 5.3.6- Biểu diễn biểu thức symbolic d•ới dạng toán học Sử dụng hàm pretty(S) để hiển thị S d•ới dạng dễ đọc hơn nh• trong quy •ớc toán học thông th•ờng. Ví dụ: >>s=2*cos(x)^2-sin(x)^2 s = 2*cos(x)^2-sin(x)^2 >>pretty(s) 2 2 2 cos(x) - sin(x) >>syms x a >>s=solve(x^3+a*x+1); 67
- Giáo trình Matlab và ứng dụng >>pretty(s) 5.4- Giải ph•ơng trình 5.4.1- Giải ph•ơng trình đại số Sử dụng lệnh solve để giải hệ ph•ơng trình đại số. Giả sử S là một biểu thức symbolic. Lệnh solve(S) sẽ có gắng tìm các giá trị của biến symbolic trong S (đ•ợc xác định bởi findsym(S)) làm cho S bằng không. Lệnh solve( ) có các cú pháp nh• sau: + solve(‘PT1’, ‘PT2’, , ‘PTn’) + solve(‘PT1’, ‘PT2’, , ‘PTn’, ‘v1, v2, , vn’) + solve(‘PT1’, ‘PT2’, , ‘PTn’, ‘v1’, ‘v2’, , ‘vn’) trong đó PT là phương trình, v1, v2, ,vn là các biến hay ẩn. Các biến symbolic không đ•ợc liệt kê trong danh sách đối số đ•ợc coi là các tham số. Ví dụ 1: >>S = solve('a*u^2 + v^2','u - v = 1','a,u') coi a và u là các biến còn v là tham số. >> s=a*x^2+b*x+c; >>solve(s) ans = [ 1/2/a*(-b+(b^2-4*c*a)^(1/2))] [ 1/2/a*(-b-(b^2-4*c*a)^(1/2))] >>pretty(ans) 68
- Giáo trình Matlab và ứng dụng Ví dụ 2: sin(x)+y^2+log(z)=7 3*x+2^y+z^3=4 x+y+z=2 >>[x,y,z]=solve('sin(x)+y^2+log(z)=7','3*x+2^y+z^3=4','x+y+z=2') x = -2.3495756224572032187410536400368 y = 2.6835269194785219427270239079010 z = 1.666048702978681276014029732135 Ví dụ: x^2 + x*y + y = 3 x^2 - 4*x + 3 = 0 >>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0') x = [ 1] [ 3] y = [ 1] [ -3/2] L•u ý: Nếu là hệ nhiều ph•ơng trình chẳng hạn 10 ph•ơng trình, việc gõ [x1, x2, x3, x4, x5, x6, x7, x8, x9, x10]= solve( ) thì rất bất tiện và tốn thời gian. Để phá vỡ khó khăn đó, solve trả về một cấu trúc mà các tr•ờng của nó là các lời giải (nghiệm). Ví dụ: >>S = solve('u^2–v^2 = a^2','u + v = 1','a^2–2*a = 3') S = a: [2x1 sym] u: [2x1 sym] v: [2x1 sym] 69
- Giáo trình Matlab và ứng dụng >> S.a ans = [ -1] [ 3] 5.4.2- Ph•ơng trình vi phân Hàm dsolve tính toán lời giải symbolic cho các ph•ơng trình vi phân th•ờng. Các ph•ơng trình đ•ợc xác định bởi biểu thức symbolic chứa chữ D để biểu diễn ký hiệu vi phân d/dt. Các ký hiệu D2, D3, , Dn tương ứng với đạo hàm bậc 2, 3, , n. Vì vây, D2y t•ơng đ•ơng với d2y/dt2. Trong lời giải dsolve thì biến độc lập mặc định là t. L•u ý rằng tên của biến symbolic không đ•ợc chứa ký tự D. Điều kiện đầu có thể đ•ợc xác định bằng cách bổ xung thêm các ph•ơng trình. Nếu điều kiện đầu không đ•ợc xác định thì lời giải sẽ chứa các hằng số tích phân C1, C2, Cú pháp của lệnh dsolve: dsolve(‘PT1’, ‘PT2’, , ‘PTn’) Ví dụ: >>y = dsolve('(D2y) =1','y(0) = 1') y = 1/2*t^2+C1*t+1 >>[x,y] = dsolve('Dx = y', 'Dy = -x') x= cos(t)*C1+sin(t)*C2 y = -sin(t)*C1+cos(t)*C2 5.5- Phép Biến đổi tích phân Các phép biến đổi tích phân và các phép biến đổi gián đoạn là các công cụ tính toán mạnh và quan trọng trong kỹ thuật, toán ứng dụng và khoa học. 5.5.1- Biến đổi fourier và fourier ng•ợc Phép biến đổi fourier của hàm f(x) đ•ợc định nghĩa nh• sau: F[f](w) f(x)e iwx dx và phép biến đổi fourier ng•ợc là: 1 F-1[f](x) f(w)eiwx dw 2 Phép biến đổi tích phân fourier: 70
- Giáo trình Matlab và ứng dụng + F = fourier(f): Biến đổi fourier của hàm vô h•ớng f với biến độc lập mặc định là x. Kết quả trả về mặc định là hàm của w. Nếu f = f(w), thì fourier trả về một hàm của t: F=F(t). Theo định nghĩa, F(w) = int(f(x)*exp(-i*w*x),x,-inf,inf), phép tích phân ở trên đ•ợc thực hiện theo x (do kết quả của hàm findsym). + F = fourier(f,v): Kết quả trả về F là hàm của biến v thay cho biến mặc định w: F(v) = int(f(x)*exp(-i*v*x),x,-inf,inf). F = fourier(f,u,v): f là hàm của u và F là hàm của v, chúng thay thế các biến mặc định x và w: F(v) = int(f(u)*exp(-i*v*u),u,-inf,inf). Ví dụ: >>syms x w u >>f=exp(-x^2) >>fourier(f) ans = pi^(1/2)*exp(-1/4*w^2) >>g = exp(-abs(w)) >>fourier(g) ans=2/(1+t^2) >>f=x*exp(-abs(x)) >>fourier(f,u) ans = -4*i/(1+u^2)^2*u >>syms x v u real >>f= exp(-x^2*abs(v))*sin(v)/v >>fourier(f,v,u) ans = -atan((u-1)/x^2)+atan((u+1)/x^2) Phép biến đổi fourier ng•ợc: + f = ifourier(F): là phép biến đổi fourier ng•ợc của hàm vô h•ớng F với biến độc lập mặc định w. Kết quả trả về mặc định của phép biến đổi ng•ợc này là một hàm của x. Phép biến đổi fourier ng•ợc đ•ợc áp dụng cho một hàm của w và trả về một hàm của x: F=F(w) =>f=f(x). Nếu F = F(x) thì IFOURIER trả về một hàm của t: t: f = f(t). Theo định nghĩa, f(x)=1/(2*pi)*int(F(w)*exp(i*w*x),w,-inf,inf) và phép tích phân đ•ợc thực hiện với w. + f =: f là hàm của biến u thay thế biến mặc định x. ifourier(F,u) f(u) = 1/(2*pi) * int(F(w)*exp(i*w*u,w,-inf,inf). 71
- Giáo trình Matlab và ứng dụng + f = ifourier(F,v,u): F là hàm của v và f là hàm của u, chúng thay thế các biến mặc định w và x t•ơng ứng. ifourier(F,v,u) f(u) =1/(2*pi)*int(F(v)*exp(i*v*u,v,-inf,inf), phép tích phân đ•ợc thực hiện theo v. Ví dụ: >>syms a w x t v real >>f = exp(-w^2/(4*a^2)) >>F = ifourier(f); >>F = simple(F) F = a*exp(-x^2*a^2)/pi^(1/2) >>g=exp(-abs(x)) >>ifourier(g) ans = 1/(1+t^2)/pi >>f=2*exp(-abs(w))-1 >>simplify(ifourier(f,t)) ans = (2-pi*Dirac(t)-pi*Dirac(t)*t^2)/(pi+pi*t^2) >>f=exp(-w^2*abs(v))*sin(v)/v; >>ifourier(f,v,t) ans = 1/2*(atan((t+1)/w^2) - atan((-1+t)/w^2))/pi 5.5.2- Biến đổi laplace và laplace ng•ợc Phép biến đổi laplace của hàm f(t) đ•ợc định nghĩa nh• sau: L[f](s) f(t)e tsdt và phép biến đổi laplace ng•ợc là: 1 c i L-1[f](t) f(s)est ds 2 j + L = laplace(F): Biến đổi Laplace của hàm F với biến độc lập mặc định là t. Kết quả trả về là một hàm của s. Nếu F = F(s) thì Laplace trả về một hàm của t: L = L(t). Theo định nghĩa, L(s) = int(F(t)*exp(-s*t),0,inf) và phép tích phân đ•ợc thực hiện với t. + L = laplace(F,t): L là một hàm của t thay thế biến mặc định s. L = laplace(F,t) L(t) = int(F(x)*exp(-t*x),0,inf) + L = laplace(F,w,z): L là hàm của z và F là hàm của w, nó thay thế các biến symbolic mặc định s và t t•ơng ứng. L = laplace(F,w,z) L(z) = int(F(w)*exp(-z*w),0,inf) 72
- Giáo trình Matlab và ứng dụng Ví dụ: >>syms t v x a >>f = t^4 >>laplace(f) ans = 24/s^5 >>g=1/sqrt(s) >>laplace(g) ans = 1/s^(1/2)*pi^(1/2) >>f=exp(-a*t) >>laplace(f,x) ans= 1/(x + a) >>f=1- cos(t*v) >>laplace(f,x) ans = 1/x-x/(x^2+v^2) Biến đổi laplace ng•ợc + F = ilaplace(L): là phép biến đổi laplace ng•ợc của hàm vô h•ớng L với biến độc lập mặc định s. Kết quả trả về mặc định của phép biến đổi ng•ợc này là một hàm của t. Phép biến đổi laplace ng•ợc đ•ợc áp dụng cho một hàm của s và trả về một hàm của t: L=L(t) =>F=F(s). Nếu L=L(s) thì ilaplace(L) trả về một hàm của x: F = F(x). Theo định nghĩa, F(t) = int(L(s)*exp(s*t),s,c-i*inf,c+i*inf) trong đó c là một số thực, phép tích phân đ•ợc thực hiện đối với s. + F = ilaplace(L,y): F là hàm của y thay thế biến mặc định t. ilaplace(L,y) F(y) = int(L(y)*exp(s*y),s,c-i*inf,c+i*inf). + F = ilaplace(L,y,x): F là hàm của x và L là hàm của y, nó thay thế các biến symbolic mặc định t và s. ilaplace(L,y,x) F(y) = int(L(y)*exp(x*y),y,c-i*inf,c+i*inf), phép tích phân đ•ợc thực hiện đối với biến y. Ví dụ : >>syms s a t >>f=1/s^2 >>ilaplace(f) ans = t 73
- Giáo trình Matlab và ứng dụng >>g=1/(t-a)^2 >>ilaplace(g) ans = x*exp(a*x) >>syms u a x >>f=1/(u^2-a^2) >>ilaplace(f,x) ans = 1/(-a^2)^(1/2)*sin((-a^2)^(1/2)*x) >>syms s v x >>f=s^3*v/(s^2+v^2) >>ilaplace(f,v,x) ans = s^3*cos(s*x) 5.5.3- Phép biến đổi Z và Z ng•ợc Phép biến đổi Z (một phía) của hàm f(n) đ•ợc định nghĩa nh• sau: Z[f](z) f(n)z n n 0 ký hiệu Z[f] ám chỉ phép biến đổi z của f tại z. Phép biến đổi z có các cú pháp nh• sau: F = ztrans(f) là biến đổi z của đại l•ợng vô h•ớng f với biến độc lập n. Kết quả trả về mặc định là một hàm của z: f = f(n) => F = F(z). Biến đổi z của f đ•ợc định nghĩa nh• sau: F(z) = symsum(f(n)/z^n, n, 0, inf), trong đó n là biến độc lập của f do hàm findsym quyết định. Nếu f = f(z), thì ztrans(f) trả về một hàm của w: F = F(w). + F = ztrans(f,w) trả về F là một hàm của biến symbolic w thay vì biến độc lập mặc định z: ztrans(f,w) F(w) = symsum(f(n)/w^n, n, 0, inf). + F = ztrans(f,k,w): f là hàm của biến symbolic k thay vì biến độc lập mặc định: ztrans(f,k,w) F(w) = symsum(f(k)/w^k, k, 0, inf). Ví dụ: >>syms k n w z >>ztrans(2^n) kết quả là: z/(z-2) >>ztrans(sin(k*n),w) kết quả là: sin(k)*w/(1-2*w*cos(k)+w^2) >>ztrans(cos(n*k),k,z) kết quả là: z*(-cos(n)+z)/(-2*z*cos(n)+z^2+1) >>ztrans(cos(n*k),n,w) kết quả là: w*(-cos(k)+w)/(-2*w*cos(k)+w^2+1) 74
- Giáo trình Matlab và ứng dụng >>ztrans(sym('f(n+1)')) kết quả là: z*ztrans(f(n),n,z)-f(0)*z Phép biến đổi z ng•ợc Phép biến đổi z ng•ợc của một hàm g(z) tại n đ•ợc định nghĩa nh• sau: 1 Z 1[g](n) g(z)z n 1dz, trong đó n = 1,2, và R là một số nguyên dương sao 2 i |z| R cho hàm g(z) giải tích trên và bên ngoài đ•ờng tròn |z| = R. Ký hiệu Z-1[f] có nghĩa là biến đổi z của f tại n. Phép biến đỏi z ng•ợc th•ờng đ•ợc dùng để giải ph•ơng trình vi phân. + f = iztrans(F) là biến đổi z của đại l•ợng vô h•ớng F theo biến độc lập mặc định là z. Kết quả trả về mặc định là một hàm của n: F = F(z) => f = f(n). Nếu F = F(n), thì iztrans(F) trả về một hàm của k: f = f(k). f = iztrans(F,k): f là một hàm của k thay vì biến độc lập mặc định n. f = iztrans(F,w,k): F là một hàm của w và trả về một hàm của k: F=F(w)&f=f(k). Ví dụ: >>iztrans(z/(z-2)) kết quả là 2^n >>iztrans(exp(x/z),z,k) kết quả là x^k/k! 5.5.4- Chuyển ph•ơng trình hệ số sang ph•ơng trình tham số Để chuyển ph•ơng trình hệ số sang ph•ơng trình tham số, sử dụng lệnh poly2sym. Lệnh này chuyển đa thức hệ số thành đa thức symbolic. poly2sym(C) trả về một đa thức theo biến x với các hệ số là các phần tử của véctơ C. poly2sym(C,'V') và poly2sym(C,sym('V') trả về một đa thức theo biến đ•ợc xác định ở đối số thứ hai với các hệ số là các phần tử của véc tơ C. Ví dụ: >>poly2sym([1 0 -2 -5]) ans = x^3-2*x-5 >>poly2sym([1 0 -2 -5],'t') >>t = sym('t') >>poly2sym([1 0 -2 -5],t) ans = t^3-2*t-5 >> y = [1 2 3 0 1] y = 1 2 3 0 1 >> poly2sym(y) ans = x^4+2*x^3+3*x^2+1 * Chuyển từ ph•ơng trình tham số sang ph•ơng trình hệ số: 75
- Giáo trình Matlab và ứng dụng Sử dụng lệnh sym2poly để chuyển đa thức symbolic thành véc tơ các hệ số của đa thức. Lệnh sym2poly (P) trả về một véc tơ hàng chứa các hệ số của đa thức symbolic P. Ví dụ: >>sym2poly(x^3 - 2*x - 5) và kết quả trả về [1 0 -2 -5]. 5.5.5- Tìm hàm ng•ợc Để tìm hàm ng•ợc của một hàm symbolic f nào đó ta sử dụng lệnh finverse(f). + g = finverse(f) trả về hàm ng•ợc của f, f là một symbol vô h•ớng biểu diễn một hàm một biến symbolic x. Thì g là một symbol vô h•ớng thoả mãn: g(f(x)) = x. + g = finverse(f,v) sử dụng biến symbolic v trong đó v là một symbol nh• là biến độc lập. Thì g là một symbol thoả mãn: g(f(v)) = v. Cú pháp này đ•ợc sử dụng khi f chứa nhiều hơn một biến symbolic. Ví dụ: Ví dụ: >>syms u v x y >>finverse(1/tan(x)) ans = atan(1/x) >>finverse(exp(u-2*v),u) ans = 2*v+log(u) >>f = x^2+y; >>finverse(f,y) ans = -x^2+y. >>finverse(f) Warning: finverse(x^2+y) is not unique. > In C:\matlabR12\toolbox\symbolic\@sym\finverse.m at line 43 ans = (-y+x)^(1/2) Lệnh finverse(x^2+y) mà không xác định biến độc lập là y thì xuất hiện một cảnh báo (Warning: finverse(x^2+y) is not unique) là hàm ng•ợc của f theo x là không duy nhất. 76
- Giáo trình Matlab và ứng dụng Mục lục Nội dung trang Phần 1 - Cơ sở Matlab 1 Ch•ơng 1 – Khái niệm chung 1 1.1- Giới thiệu 1 1.2- Cài đặt ch•ơng trình: 2 1.2.1- Khởi động windows. 2 1.2.2- Tiến hành cài đặt 2 1.2.3- Nhập thông tin của ng•ời dùng và Personal License Password. 4 1.2.5- Hoàn thành cài đặt 4 1.3- Môi tr•ờng làm việc của Matlab 5 1.3.1- Khởi động và thoát khỏi Matlab 5 1.3.2- Cửa sổ lệnh của Matlab (Matlab Command Window) 7 1.3.3- Không gian làm việc của Matlab (Matlab Workspace) 9 Ch•ơng 2 - Các menu của MATLAB 11 2.1- Menu File 11 2.2- Menu Edits: 16 2.3- Menu View: 17 2.4- Menu Window: 17 Ch•ơng 3 - Các khái niệm cơ bản 18 3.1-Một số phím chuyên dụng và lệnh thông dụng 18 3.2- Biến trong MATLAB 18 3.2.1- Tên biến: 19 3.2.2- Một số lệnh với biến: 19 3.2.3- Một số biến đã đ•ợc định nghĩa tr•ớc: 19 3.2.4- Biến toàn cục (global variables) 20 3.3- Các phép toán trong matlab 20 3.3.1- Phép toán số học: 20 77
- Giáo trình Matlab và ứng dụng 3.3.2- Thứ tự •u tiên trong phép toán số học: 21 3.3.3- Các phép toán quan hệ và phép toán logic 21 3.3.4- Các ví dụ: 24 3.4- Số phức và các phép toán về số phức. 25 3.4.1- Biểu diễn số phức: 25 3.4.2- Các phép toán đối với số phức: 25 3.5- Sử dụng các file lệnh (lập trình M-file) 26 3.6 - Dòng nhắc gán giá trị các biến: 27 3.7- Cách tạo một hàm: 29 3.8- Vẽ các hàm 30 3.9- L•u và lấy dữ liệu: 30 3.10- Cấu trúc câu lệnh điều kiện: 31 3.11- Cấu trúc vòng lặp. 34 3.12- Một số hàm toán học: 35 ch•ơng 4 - Ma trận và các phép toán về ma trận 37 4.1- Khái niệm: 37 4.1.1- Các qui định để định nghĩa một ma trận: 37 4.1.2- Các cách để nhập một ma trận: 38 4.1.3- Hiển thị lại ma trận: 39 4.2- Xử lý trong ma trận: 40 4.2.1- Tạo véctơ: 40 4.2.2- Gọi các phần tử trong ma trận. 40 4.2.3- Gọi 1 ma trận con từ một ma trận lớn. 41 4.3- Các ma trận đặc biệt: 42 4.3.1- Ma trận zeros. 42 4.3.2- Ma trận ones. 42 4.3.3- Ma trận ma ph•ơng Magic 43 4.3.4- Ma trận eye. 43 4.3.5- Ma trận Pascal: 43 4.4- Các phép toán vector 43 78
- Giáo trình Matlab và ứng dụng 4.4.1- Các phần tử là các số thực: 44 4.4.2- Các phần tử là các số phức. 44 4.4.3- Các phần tử là các tham số: 45 4.5- Các phép toán về ma trận 45 4.5.1- Phép chuyển vị 45 4.5.2- Phép nghịch đảo ma trận 46 4.5.3- Phép cộng - trừ ma trận.( + , - ) 47 4.5.4- Phép nhân, chia ma trận: 48 4.5.5- Phép luỹ thừa và số mũ của ma trận 50 4.5.6- Phép quay ma trận 51 4.5.7- Phép đảo ma trận 52 4.5.8- Tính định thức ma trận 52 4.6- ứng dụng các phép toán ma trận 52 4.6.1- Nhân đa thức 52 4.6.2- Giải ph•ơng trình bậc cao 53 4.6.3- Biết nghiệm tìm lại ph•ơng trình 53 4.6.4- Giải hệ ph•ơng trình tuyến tính: 53 Ch•ơng 5 – Symbolic toolbox 56 5.1- Tạo đối t•ợng (biến, biểu thức) symbolic 56 5.2- Các phép tính 58 5.2.1- Đạo hàm 58 5.2.2- Tích phân 59 5.2.3- Tìm giới hạn 60 5.2.4- Tính tổng của dãy số symbolic 61 5.2.5- Khai triển taylor 62 5.3- Đơn giản hoá biểu thức và thay thế 63 5.3.1- Gom số hạng, biến 63 5.3.2- Khai triển biểu thức 63 5.3.3- Phân tích biểu thức thành thừa số 64 5.3.4- Đơn giản biểu thức 65 79
- Giáo trình Matlab và ứng dụng 5.3.5- Thay thế 66 5.3.6- Biểu diễn biểu thức symbolic d•ới dạng toán học 67 5.4- Giải ph•ơng trình 68 5.4.1- Giải ph•ơng trình đại số 68 5.4.2- Ph•ơng trình vi phân 70 5.5- Phép Biến đổi tích phân 70 5.5.1- Biến đổi fourier và fourier ng•ợc 70 5.5.2- Biến đổi laplace và laplace ng•ợc 72 5.5.3- Phép biến đổi Z và Z ng•ợc 74 5.5.4- Chuyển ph•ơng trình hệ số sang ph•ơng trình tham số 75 5.5.5- Tìm hàm ng•ợc 76 80