Giáo trình MatLab
Trang 1HOC VIEN KY THUAT QUAN SU PGS-TS NGUYEN TANG CUONG (CHU BIEN),
TS LE CHUNG, TS HUYNH LUONG NGHIA
[ Tài liệu dùng cho đào tao Cao ys chuyên TT, thuật -
_ Tự động hóa và Điêu khiển Từ xa)
NHÀ XUẤT BẢN QUẦN ĐỘI NHÂN DÂN
HÀ NỘI - 2001
Trang 2TS LÊ CHƯNG, TS HUỲNH LƯƠNG NGHĨA
_ M@TLAB
(Tài liệu dùng cho đào tao Cao hoc chuyên ngành Kỹ thuật
Trang 3
NHÀ XUẤT BẢN MONG BẠN ĐỌC GÓP Ý KIẾN, PHÊ BÌNH
Chỉ đạo nội dung:
Biên soạn:
BAN CHỈ ĐẠO NGHIÊN CỨU, BIÊN SOẠN, HOÀN
THIEN HE THONG TAI LIEU HUAN LUYEN, GIAO TRINH, GIAO KHOA, HOC VIEN KY THUAT QUAN SU
Trưởng ban: Thiếu tướng, PGS-TS Nguyễn Đức Luyện Phó trưởng ban: Đại tá, PGS-TS Phạm Huy Chương Thư ký: Thượng tá, Th.S Nguyễn Văn Thàng
Chủ biên: PGS-TS Nguyễn Tăng Cường Tham gia biên soạn: TS Lê Chung, TS Huỳnh Lương Nghĩa
Trang 41.5.4 Các phép toán đối với Mảng -Vô hướng 34
Trang 5
Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
1.13.1 Vong lap For (for loops) 70 1.13.2 Vong lap while (while loops) 73
Trang 6Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Trang 72.6.1 Việc tạo khuôn đạng và đơn giản biểu thức 183
2.9.1 Ma trận ký tượng (MTKTT) 196 2.9.2 Các phép tính đại số 199 2.9.3 Các toán tử đại số tuyến tính (TTĐÐĐSTT) 200
2.10.1 Ham bac thang và hàm xung 204
8 MỤC LỤC
Trang 8Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
3.4.1 Các hệ thống thời gian liên tục (HTTGL7T) 228
3.4.2 Hệ thống rời rạc theo thời gian 230
GIỚI THIỆU MATLAB 5
4.1.1 Các công cụ phát triển, ứng dụng và lập trình được cải tiến 238 4.1.2 Các cấu trúc các kiểu dữ liệu và các đặc trưng ngôn ngữ mới 239 4.1.3 Khả năng quam sát và đồ hoạ tốt hơn, nhanh hơn 239 4.1.4 Các công cụ tính toán và phân tích dữ liệu được bổ sung thêm 240
4.1.5 Các cải tiến hép cong cu va SIMULINK _ 240
4.2 các cấu trúc dữ Hiệu mới 241
4.3.1 Các cải tiến phép gán và đánh chỉ số 250 4.3.2 Các hàm thao tác bit nguyên _ 251
MỤC LỤC 9
Trang 9
Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
4.3.3 Đặt tính về phương chiều cho các hàm phân tích dữ liệu 251
4.3.4 Các đại diện trong các lệnh tiện ích 252
4.4 Các đặc trưng phân tích dữ liệu mới 253
4.4.1 Phép nội suy nhiều chiều 254 4.4.2 Dữ liệu khung lưới dựa trên phép tam giác đạc Delaumay griddata 4.4.3 các hàm lý thuyết tập hợp 254 4.5 Các đặc trưng đồ hoạ định danh cải tiến và mới 255
4.8.4 Cơ cấu biên dịch được cải tiến 214 4.8.5 Đặc trưng Matlab 4 không thể hỗ trợ trong Matlab 5 214 4.9 Các đặc trưng riêng cho các môi trường 274
sang giao diện chương trình ứng dụng Matlab 5 (APD 285
10 MUCLUC
Trang 10Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
LỜI NÓI ĐẦU
Trong những năm qua, trên phạm vi toàn cầu, đối với hàng trăm hàng nghìn người trong các khu vực công nghiệp, quản lý, Viện nghiên cứu, trường đại học v.v Matlab đã trở thành môi trường tính toán kỹ thuật hàng đầu, đã và đang được
sử dụng rất rộng rãi trong các ứng dụng khoa học, kỹ thuật và các ứng dụng khác -
Matlab là một thuật ngữ được viết tắt từ Matrix Laboratory Matlab lần đầu tiên được viết tại trường đại học tổng hợp New Mexico Standfort vào cuối những năm 70 với mục đích sử dụng cho việc giảng dạy các lý thuyết ma trận, đại số tuyến tính và giải tích số, với cái tên ban đầu “ Phòng thí nghiệm toán học ” Ngày nay Matlab đã vượt ra khỏi khuôn khổ của cái tên ban đầu đó và đã trở thành một công
cụ tương tác và ngôn ngữ lập trình dùng cho mọi tính toán khoa học, kỹ thuật Matlab đưa ra các đặc tính quen thuộc đối với các giải pháp ứng dụng đặc biệt Những hộp công cụ là các sự tuyển chọn bao hàm các chức năng Matlab (các tập tin
M - M files) duoc trién khai trong môi trường Matlab để giải quyết từng hạng mục của các vấn đề |
Theo thời gian, Matlab đã được rất nhiều người chấp nhận Trong công nghiệp, Matlab là một công cụ dùng để phân tích, triển khai và nghiên cứu ngày - càng rộng rãi Trong các nhà trường, Matlab được xem như một công cụ giảng dạy chuẩn trong lĩnh vực khoa học và kỹ thuật Có thể nói rằng, nếu biết sử dụng Matlab
- một công cụ tính toán mạnh kết hợp với các phần mềm phân tích số liệu và hiển thị phong phú, thì sinh viên đã có đủ điều kiện để học tập hiệu quả trong quá trình học : đại học và nghiên cứu sau đại học Cũng vì tính chất quan trọng của máy tính và các phần mềm đối với việc học tập và nghiên cứu khoa học cuả sinh viên các trường đại học, nên để giải quyết mâu thuẫn giữa nhu cầu sử dụng ngày càng rộng rãi, nhất là đối với sinh viên trong các trường học, với việc giá của các phần mềm thương mại quá cao, tổ chức MathWork - một tổ chức gồm các chuyên gia hàng đầu về Toán - Máy tính của Mỹ đã tạo ra phần mềm Matlab sinh viên (The Studient Edition of
Trang 11
Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Trong thời gian qua, những người sử dụng đặc biệt là các sinh viên đã chấp
nhận Matlab không chỉ đơn giản là để có được câu trả lời, mà còn để hiểu được tại
sao lại có các câu trả lời như vậy
Do những lợi ích to lớn nói trên chúng tôi biên soạn cuốn sách này và giới thiệu với bạn đọc, đồng thời mong muốn mọi người tự mình tìm hiểu và ứng dụng để thấy hết khả năng to lớn của Matlab,
Cuốn sách này do Nguyễn Tăng Cường chủ biên, đồng thời biên soạn chương
1 và chương 2; Huỳnh Lương Nghĩa biên soạn chương 3; Lê Chung biên soạn chương 4
Mặc dù có nhiều cố gắng trong biên soạn, in ấn v.v nhưng có lẽ khó có thể tránh khỏi các sai sót Rất mong muốn nhận được ý kiến đóng góp của các bạn đọc Các ý kiến đóng gép xin gửi về: Bộ môn Tự động và Kỹ thuật tính, Khoa Kỹ thuật
điều khiển, Học viện Kỹ thuật quân sự, 100 đường Hoàng Quốc Việt, Hà Nội
Chúng tôi xin chân thành cám ơn
Các tác giả
12 LỜI NÓI ĐẦU
Trang 12Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
CHUONG 1
CƠ SỞ HỆ MATLAB 1.1.MỞ ĐẦU
Để hình dung khả năng của MATLAB, có thể coi nó như một máy tính toàn năng Giống như máy tính tay bình thường (basic calculator) nó thực hiện các phép tính đơn giản như cộng, trừ, nhân, chia Giống như máy tính tay khoa học ( scientific calculator) nó có thể xử lý các số phức tạp, khai căn và luỹ thưa, lấy logarit và tính các hàm lượng giác như sin, cos và tg Giống như máy tính tay lập trình (programmable calculator), nó có thể lưu trữ và gọi lại số liệu, có thể tạo, chạy và ghi lại thứ tự của các lệnh để tự động hoá việc tính toán những phương trình quan trọng; có thể so sánh lôgích và điều khiển thứ tự thực hiện lênh Giống như những máy tính mạnh nhất hiện nay, nó cho phép vẽ dữ liệu bằng nhiều cách, tiến hành các phép tính đại số ma trận, tính toán đa thức, lấy tích phân, giải phương trình dưới dạng chữ ,v.v
Thực vậy MATLAB đưa ra rất nhiều tính chất và đa năng hơn bất kỳ máy tính nào MATLAB là ngôn ngữ lập trình thân thiện với những tính chất tiên tiến
và dễ sử dụng hơn nhiều so với bất cứ ngôn ngữ máy tính nào như BASIC, PASCAL hoặc C MATLAB cung cấp một môi trường phong phú để hiển thị các
dữ liệu thông qua các khả năng đồ hoạ mạnh mẽ của nó MATLAB là cơ sở nền tảng để phát triển các ứng dụng, là nơi mà các hệ thống công cụ thông minh để giải quyết các vấn đề trong các lĩnh vực chuyên dụng, được gọi là các hộp công
cụ, có thể được tạo ra một cách tương đối dễ dàng Ví dụ, phiên bản MATLAB- Sinh viên này bao gồm cả hộp công cụ Toán ký tượng và hộp công cụ Tín hiệu và
Hệ thống
Do sức mạnh to lớn của MATLAB nên bắt đầu học nó như thế nào là vấn đề quan trọng Đầu tiên hãy coi nó là máy tính thường, sau đó là máy tính khoa hoc , tiếp đó là máy tính có thể lập trình được, cuối cùng là một máy tính hàng đầu Bằng việc so sánh tương đương như vậy bạn sẽ thấy sự dễ dàng của MATLAB trong việc giải quyết các vấn đề thường ngày và bắt đầu nhận ra cách sử dụng
Trang 13
Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
MATLAB như thế nào để giải quyết các vấn đề phức tạp theo một phương thức
linh hoạt, nhất quán
1.2 CAC TINH CHẤT CƠ BẢN
Khi chạy MATLAB sẽ tạo ra một hay nhiều cửa số trên màn hình của bạn Trong các cửa số này, cửa số lệnh là nơi căn bản để bạn tương tác v6i MATLAB Cửa sổ này xuất hiện như hình 1.1 Chuỗi ký tự EDU@ là điểm dấu của MATLAB trong phién ban MATLAB-Sinh Vién Trong các phiên bản khác điểm
dấu chỉ đơn giản là >> Khi cửa sổ lệnh được kích hoạt, con trỏ (thông thường là
nhấp nháy) phải xuất hiện ở phía bên phải của điểm dấu như trên hình vẽ Con trỏ này cùng với điểm dấu của MATLAB đang đợi để trả lời các câu hỏi toán học
Dưới đây là cửa số lệnh trên máy tính chạy MS-WINDOWS.(hình 1.1)
Commands to get started: intro, demo, help help
Commands for more information: help, whatsnew, info, subscribe
Giống như máy tinh tay MATLAB thuc hiện những phép tính đơn giản
Thí dụ 1.1 Homer mua 4 quả táo giá 25 xen mỗi quả, 6 quả chuối giá 22 xen mỗi quả và 2 quả dưa giá 99 xen mỗi quả Khi về nhà Marge hỏi nó mua bao nhiêu quả và phải trả bao nhiêu tiền?
Để giải bài toán này bằng máy tính tay có thể làm như sau:
4+6+2=12quả
14 Chuong 1 C6 SO HE MATLAB
Trang 14Nguyễn Tăng Cường, Lê Chung, Huynh Luong Nghĩa MATLAB
(Để tiện lợi ta dùng điểm nhắc >> thay cho điểm nhắc EDU@)
Lưu ý rằng MATLAB không quan tâm đến các khoảng cách và các thứ tự ưu tiên phép tính nhân, cộng Ngoài ra nó: gọi kết quả thông qua ans =
Phương án khác để giải bài toán trên là lưu các biến trong MATLAB
6 đâyđã tạo ra 3 bién MATLAB tao (tdo), chuoi (chuéi) va dua (dua) dé luu
số quả của từng loại Sau khi nhập lénh, MATLAB thể hiện kết quả ngay trừ trường hợp dua Dấu (¿) ở cuối dòng ” dua =2 ; ” báo cho MATLAB đánh giá dòng nhưng không hiện ra kết quả Cuối cùng thay vì gọi kết quả bằng ans ta báo cho MATLAB gọi tổng số quả guø và tổng số tiền phải trả gi
Trang 15
Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Nếu câu lệnh quá dài hơn một dòng có thể dùng dấu ( ) để chỉ rằng câu lệnh
sẽ được tiếp tục ở dòng tiếp theo
>> gia =tao*25 +chuoi*22 +
dua*99 gia=
430
Ở mỗi bước MATLAB ghi nhớ thông tin đã qua Do MATLAB nhớ mọi việc
_ nên có thể trả lời câu hỏi "Bart hỏi giá trung bình mỗi quả là bao nhiêu?" như: sau:
Thứ tự thực hiện những phép tính trong biểu thức được tóm tắt như sau:
+ Biểu thức được tính từ trái sang phải với ưu tiên cao nhất cho phép luỹ thừa, sau
đó là nhân, chia và cuối cùng là cộng, trừ có mức ưu tiên như nhau
+ Dấu ngoặc đơn có thể dùng để thay đổi thứ tự Lúc này việc tính được bắt đầu
từ dấu ngoặc ở phía trong nhất và sau đó tiếp tục từ trong ra ngoài
Để minh hoa hãy thử kiểm tra lại các câu lệnh sau:
Trang 16Nguyễn Tăng Cường, Lê Chung, Huynh Lương Nghĩa MATLAB
Trước khi tiếp tục các tính chất khác, sau đây sẽ tìm hiểu các tính chất cơ bản
về chức năng của MATLAB
1.2.2 Không gian làm việc MATLAB
Khi làm việc trong cửa số lệnh thì MATLAB nhớ hết các lệnh đã nhập vào cũng như giá trị của các biến đã được tạo ra Các lệnh và biến này được gọi là nằm trong không gian làm việc MATLAB và có thể được gọi lại mỗi khi cần đến
Ví dụ, để kiểm tra giá trị của dưa, chỉ cần gõ vào tên của nó tại dấu điểm nhắc :
leaving 3041192 bytes memory free
Hãy để ý MATLAB không cho giá trị của các biến mà chỉ cho tên của chúng
Để tìm giá trị, chỉ cân gõ tên của chúng ở dấu nhắc của MATLAB Ngoài ra dòng cuối cùng của lệnh who sẽ cho biết số ô nhớ còn lại là bao nhiêu Mỗi giá trị dữ liêu chiếm 8 byte Như vậy trong trường hợp này sẽ còn chỗ cho hơn 340.149 giá trị nữa Độ lớn này phụ thuộc vào máy tính ta đang sử dụng Tuy vậy cần lưu ý, trong một số phiên bản MatLab không cho xuất hiện số ô nhớ còn lại
Để gọi lại các lệnh trước, MATLAB sử dụng phím có mũi tên ©—>,Ÿ Ỷ Ví
dụ ấn phím † sẽ gọi lại lệnh gần nhất Ấn phím này sẽ quay lại lệnh trước - © đó Cũng như vậy, việc ấn phím J sé dua ra lệnh phía sau nó Bất cứ lúc nào cũng thể dùng phím <-và-> để chuyển dịch trong nội dung một câu lệnh Bằng cách đó ta có thể hiệu đính lại lệnh
1.2.3 Lưu và gọi lại dữ liệu
Ngoài việc nhớ biến MATLAB còn có thể lưu và tải dữ liệu từ các tệp của máy tính Mục Save Workspace as trong thực don File sẽ mở ra hộp đối thoại và
Chương Ï CÓ SỞ HỆ MATLAB 17
Trang 17Nguyễn Tăng Cường, Lê Chung, Huynh Luong Nghia MATLAB
tệp chuẩn để lưu tất cả các biến hiện hành Cũng như vậy mục Load Workspace trong thực đơn File sẽ mô tả hộp đối thoại để tải biến từ các không gian làm việc đã lưu trước đó Việc lưu các biến sẽ không xoá chúng khỏi không gian làm việc MATLAB Việc tải các biến cùng tên với các biến ở không gian
làm việc MatLab sẽ thay đổi giá trị các biến sang các giá trị tải từ tệp
Nếu cách dùng thực đơn File không thoả mãn yêu cầu thì MATLAB cung cấp hai lệnh Save và Load linh hoạt hơn Hãy xem chỉ tiết về chúng ở phần Lệnh và
Hàm MATLAB
1.2.4 Dạng thể hiện số liệu
Khi MATLAB hiểu thị các kết quả tính toán nó tuân thủ các quy tắc sau Ở chế độ ngầm định nếu kết quả nguyên thì MATLAB hiển thị số nguyên Cũng như vậy khi kết quả là số thực, MATLAB sẽ hiện nó với 4 chữ số xấp xi sau dấu chấm cách thập phân Nếu các chỉ số có nghĩa vượt quá phạm vi MATLAB sẽ hiện nó theo kiểu khoa học Bạn có thể sửa các chế độ ngầm định này bằng cách đặc tả dạng thể hiện khác thông qua mục Numerical Format trong thực đơn Options hay gõ lệnh MATLAB tương ứng Nếu dùng biến gia_trung_ binh trong ví
dụ trên ta có các dạng thể hiện giá trị của nó như bảng 1.2
Trang 18Nguyễn Tăng Cường, Lê Chung, Huỳnh Luong Nghia MATLAB
1.2.5 Về các biến
Giống như bất cứ ngôn ngữ máy tính nào khác, MATLAB có quy tắc đặt tên biến Trước đây đã có nói là tên biến chỉ có thể là từ đơn không chứa khoảng trống Đặc biệt hơn MATLAB có các quy định đặt tên biến như sau (bang 1.3):
Bảng 1.3 -Các biến phân biệt chữ in và chữ | Fruit, fruit, FrUit và FRUTT là các biến
thường MA TLAB khác nhau
- Các biến có thể chứa tới 19 ký tự Ký tư vượt quá thứ 19 sẽ bị bỏ qua
- Các biến phải bắt đầu là chữ, sau | Không cho phép dùng các dấu ngắt vì _
là số, chữ số hoặc øach ngang dưới | chúng có ý nghia riéng trong MATLAB
Ngoài các quy tắc đặt tên biến, MATLAB có một số biến đặc biệt (bang 1.4):
Bảng 1.4
ans Tên biến ngầm định dùng để gọi kết quả
pi Tỷ số của chu vi đường tròn chia cho đường kính
eps Là số nhỏ nhất mà khi cộng với 1 thì sẽ tạo nên số với dấu phẩy
động lớn hơn Í trong máy tính | Inf Số vô cùng: 1/0
NaN Vô định dang 0/0
Trang 19
Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
là vì MATLAB thực hiện tính toán dựa trên các số liệu mà nó biết tại thời điểm lệnh được yêu cầu Trong ví dụ trên nếu muốn tính lại tổng số quả ga, tổng giá thành và giá trung bình, thì cần phải gọi lại lệnh MATLAB tương ứng và yêu cầu MATLAB đánh giá lại Sau này khi giới thiệu về các tệp kiểu M, ta sẽ biết một cách đơn giản mà rất mạnh để đánh giá lại nhóm các lệnh MATLAB
Chú ý: Các biến đặc biệt nêu ở trên cũng tuân thủ quy tắc này Khi khởi động
MATLAB thì chúng được gán các giá trị đã nêu ở trong bảng Nếu cần thay đổi
giá trị của chúng, thì các giá trị gốc đặc biệt sẽ bị mất cho đến khi xoá các biến hoặc khởi động lại MATLAB Do vậy, hãy cố gắng tránh việc định nghĩa lại các biến, trừ trường hợp thật cần thiết
Các biến trong không gian làm việc MatLab có thể bị xoá vô cớ khi dùng lệnh clear Giả sử:
>> clear tao Chỉ xoá biến tao
>> clear gia qua Xoá cả biến gia lẫn qua
>>clear Xoá hết mọi biến trong không gian làm việc !
Tất cả các biến bị xoá sạch và không gọi lại được Có thể nói, lệnh clear vô
cùng nguy hiểm và dùng nó phải rất cẩn thận Cũng may là ít khi mới phải xoá
biến khỏi không gian làm việc
1.2.6 Các tính chất cơ bản khác
Các từ đứng sau dấu phần trăm (%) được coi là chú thích Giả dụ:
>>tao=4_ % số lượng táo
tao =
4
20 Chương 1 C6 SO HE MATLAB
Trang 20Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Biến /zo được cho giá trị 4 và MATLAB bỏ qua dấu % cùng tất cả các từ đứng sau nó Tính chất này làm dễ dàng cho việc giải thích những gì ta đang làm Nhiều lệnh có thể được đặt trên cùng một dòng nếu chúng được cách nhau bằng dấu phẩy (,) hoặc dấu chấm phẩy (;) :
Các dấu phẩy báo cho MATLAB hiển thị kết quả Giả sử:
>> tao =4, chuo1 =6; dua =2
tao =
4
dua =
2
Còn dấu (;) không cho hiện kết quả ra
Ta có thể dừng ( ngắt ) MATLAB bất kỳ lúc nào bằng cách ấn đồng thời 2 phim Ctrl-C
Lệnh quit cho phép kết thúc làm viéc v6i MATLAB
1.2.7 Tóm tắt
e MATLABbiết cộng (+), trừ (-), nhân (x), chia (/ hoặc) và luỹ thừa (`)
e MATLAB tính biểu thức từ trái sang phải với thứ tự ưu tiên như sau: Đầu tiên
là lãy thừa, sau đó là nhân, chia và cuối cùng là cộng, trừ
e_ Dấu (;) ở cuối câu lệnh MA 'TLAB sẽ không cho hiện ra kết quả
e Nếu câu lệnh quá dài hãy đánh ( ) và gõ Enter để tiếp tục ở dòng sau
© MATLAB ngầm định lưu các kết quả trong biến ans
e Tên biến chỉ được dài 19 ký tự
e Tên biến phải được bắt đầu bằng chữ Sau đó là chữ, số hoặc dấu gạch dưới tuỳ ý
®© MATLAB phân biệt chữ m và chữ thường TẠO, Tao và tao là các biến khác
nhau
1.3.CÁC TÍNH CHẤT KHOA HỌC
Giống như bất cứ máy tính tay khoa học nào, MATLAB cung cấp nhiều hàm
thông dụng cần thiết cho toán học, kỹ thuật và khoa học Hơn nữa MATLAB có
thể xử lý các số phức một cách dễ dàng
Trang 21
Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
1.3.1.Các hàm toán học thông thường
Một phần các hàm thông thường do MATLAB cung cấp được dẫn ra ở bảng 1.5 Phần lớn chúng được sử dụng giống như cách viết các biểu thức toán học Giả du:
Các lệnh trên tìm góc ứng với hàm sin có giá trị là 2 /2
Trong khi máy tính tay có thể làm việc với radian lẫn độ thì MATLAB chỉ
làm việc với radian ( 2z radian bằng 360 độ )
Trang 22Nguyén Tang Cuong, Lé Chung, Huynh Luong Nghia MATLAB
Hàm cos hypecbol ngược Góc của số phức
arcsin ( hàm ngược của sin ) Hàm sin hypecbol ngược arctg ( hàm ngược của tang ) arctg của góc phần tư thứ tư Hàm tg hypecbol ngược Lam tròn về phía +eo
Số phức liên hợp COS
cos hypecbol Hàm mũ Làm tròn về không Lầm tròn về -œ Phần ảo của số phức Logarit cơ sở tự nhiên Logarit thường
Phần thực của số phức
Số dư còn lại sau phép chia (x/y) Lầm tròn về số nguyên gần nhất Hàm dấu: Cho dấu của đối số
Ví dụ : sign (1.2) =1, sign(-23.4)=-Í ,sign(0) =0
sin sin hyperbol Khai căn
tg
tg hyperbol
Chuong 1 C6 SO HE MATLAB
23
Trang 23Nguyễn Tăng Cường, Lê Chung, Huynh Luong Nghia MATLAB
1.3.2 Số phức
Để minh hoạ số phức ta xét phương trình bậc hai ax” +ðbx+c =0
~b? +4b° — 4ac 2a Nếu a =1, b =5, c =6, ding MATLAB cé thé tim được lời giải như sau:
S6 hang V-1 không đơn giản tiếp được và kết quả là nghiệm được gọi là
Như ta biết nghiệm của phương trình này là: x,,x; =
phức Số hạng -2 trong x;và x¿ là phần thực của nghiệm Còn 3 và -3 là các phần
ảo Trong trường hợp này MATLAB tính nghiệm như sau:
Trang 24Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
x¡ và x; trên đây biểu diễn các nghiệm phức theo cách viết phức thông thường
a+bi với b là phần ảo, a là phần thuc vai =V-1
Việc nhập số phức cũng như vậy
Ngoài ra trong kỹ thuật cũng hay dùng j =V-1 nên nó cũng được dùng để biểu diễn phần ảo
Trong hai ví dụ cuối, các gía trị ngâm định của MATLAB i = j =V-1 dugc
dùng để tạo ra phần ảo Ỏ đây cần dùng dấu nhân (*) vì sin(.5)i và sin(.5)j không
có nghĩa gì với MATLAB Việc kết thúc bằng chữ ¡ và j như trong hai ví dụ đầu
Chương 1 CÓ SỞ HỆ MATLAB 25
Trang 25Nguyến Tăng Cường, Lê Chung, Huynh Lương Nghĩa MATLAB
tiên, chỉ đúng với các số đơn chứ không đúng với biểu thức Một số ngôn ngữ lập trình yêu cầu cách Xử lý đặc biệt với các số phức Trong MATLAB không cần điều này Các phép tính với số phức cũng được viết giống như đối với số thực:
Để kết thúc phần tính toán với số phức ta sẽ xét đẳng thức Ơ-le liên hệ dạng cực của số phức với dạng góc vuông của nó:
Trang 26Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
e MATLAB cé nhiéu hàm toán học thông dụng
e Số phức không cân phải đối xử đặc biệt trong MATLAB Có thể sử dụng chúng dưới dạng vuông góc giống như đối với số thực
e_ Các hàm real, imag, abs và angle có ích trong việc chuyển đổi giữa dạng thực
và dạng vuông góc
e Trị ngầm định của ¡ và j là V—1 Nếu ta định nghĩa lại chúng trong câu lệnh MATLAB nào đó thì chúng sẽ không thể được dùng để tạo nên số phức được nữa Tuy nhiên vẫn có thể gán lại chúng và xoá chúng
Việc bổ xung ¡ hoặc j vào cuối của số trong MATLAB làm cho số này trở
thành phần ảo của số phức, tức x=3i tạo ra 0+3i
1.4 TRỢ GIÚP TRỰC TUYẾN
Có lẽ bạn cảm thấy MATLAB có quá nhiều lệnh, khó có thể nhớ hết Để giúp cho việc tìm lệnh, MATLAB cung cấp một trợ thủ đắc lực thông qua khả năng trợ giúp trực tuyến Khả năng này hiện diện dưới ba dạng lệnh help của MATLAB, lệnh lookfor và mục trợ giúp trong thanh thực đơn
1.4.1 Lệnh Help
Nếu như biết chắc chủ dé cần trợ giúp thì cách đơn giản nhất để có nó là dùng lệnh Help Hãy gõ Help < chủ đề> thì nếu tồn tại, chú giải về chủ đề sẽ xuất hiện Ví dụ
>> Help sqrt
SQRT Square root
Trang 27
Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
SQRT(x) is the square root of the elements of x Complex
results are produced if x is not positive
See also SQRTM
Can bac hai
( Chú giai :- SQRT(x) 14 can bậc hai của x Nếu x không dương hàm sẽ cho kết quả là số phức Xem thêm SQRTM)
Ỏ đây ta nhận được chú giải về hàm khai căn bậc hai Còn nếu ta gõ như sau:
>> help cows
cows not found
Tức MATLAB nói rằng nó không tìm ra lời chú giải nào về bồ (cows) cả
Lệnh Help tốt khi bạn biết chắc chủ đề trợ giúp Do khó biết chắc nên MATLAB cho phép định hướng tới chủ đề bằng cách chỉ gõ help thôi không cần chủ đề bên cạnh
>> help
Các chủ đề trợ giúp:
matlab:general -Các lệnh chung
matlab:ops -Các toán tử và ký tự đặc biệt
matlab:lang -Cấu trúc ngôn ngữ và gỡ rối
matlab:elmat _ -Ma tran co sé va phép tinh ma tran
matlab:specmat -Các ma trận đặc biệt
matlab:elfun -Các hàm toán học cơ sở
matlab:specfun -Các hàm toán học đặc biệt
matlab:matfun -Đại số tuyến tính
matlab:datafun -Các hàm biến đổi Fourier và xử lý số liệu
matlab:polyfun -Đa thức và nội suy
matlab:funfun -Hàm phi tuyến
matlab:sparfun -Ma trận thưa ( sparse )
matlab:plotxy -Đồ hoạ 2 chiều
matlab:plotxyz -Đô hoa 3 chiều
matlab:graphics -Các hàm đồ hoạ chung
matlab:color -Điền khiển màu và các hàm chiếu sáng
matlab:strfun -Hàm xử lý chuỗi ký tự
matlab:iofun -Các hàm vào/ra bậc thấp
28 Chương l CÓ SỐ HỆ MATLAB
Trang 28Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Toolbox:local -Thư viện các hàm cục bộ
Toolbox:sigsys -Hộp công cụ tín hiệu và hệ thống
Toolbox:symbolic -Hộp công cụ toán học ký tượng
Có thể bảng này sẽ khác với bảng xuất hiện trên máy tính của bạn Trong bất
kỳ trường hợp nào nó cũng mô tả các chi dé mà bạn có thể tìm trợ giúp Ví
dụ:Help general sẽ cho bạn một danh sách (quá dài để dẫn ra ở đây) của các chủ
dé chung mà bạn có thể dùng Help <chủ để> để xem trợ giúp
Rõ ràng đây không phải là cách thuận tiện nhất nếu bạn không biết chính xác chủ đẻ Trong trường hợp này có hai cách khác tốt hơn |
1.4.2 Lệnh lookfor ˆ
_ Lệnh lookfor tìm tất cả các dòng đầu tiên của chủ đề trợ giúp và sẽ trả về những gì có chứa từ khoá mà bạn đặc tả Điều quan trọng nhất là phải làm sao từ khoá này không phải là lệnh MATLAB I
Ví dụ:
>> lookfor comlex
IMAG Comlex imaginary part
REAL Comlex real part
CDF2RDF Comlex diagonal form to real block diagonal form RSF2CSF Real block diagonal form to comlex diagonal form CPLXPAIR Sort numbers into complex conjugate pairs
Từ khoá complex không phải là lệnh MATLAB nhưng được tim thấy trong
mô tả của 6 lệnh MATLAB Bạn có thể tìm thấy nhiều hoặc ít hơn Với thông tin cung cấp bạn tiếp tục dùng Help <lệnh> để xem kỹ hơn về một lệnh nào đó Ví dụ:
>> Help conj
CONJ Comlex conjugate
CONJC(X) is the Comlex conjugate of X
Tóm lại lệnh lookfor cho ta cách tìm các lệnh MATLAB và các chủ đề trợ giúp bằng một từ khoá chung
1.4.3 Trợ giúp bằng thực đơn
Chuong 1 C6 SO HE MATLAB 29
Trang 29Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Đây là phương án nhận trợ giúp trong cửa số lệnh từ thanh thực đơn Với máy tính cá nhân PC từ thực đơn Help bạn có thể chọn Table of Contents (Bảng nội dung) hoặc Index (chỉ số) để nhận trợ giúp Lúc này cửa số MATLAB Help xuất hiện với danh sách các chủ đề trợ giúp cho phép bạn nháy đúp chuột vào bất kỳ chủ đề nào để xem Ngoài ra bạn có thể tìm kiếm, đánh dấu sách, tóm tất chủ dé
1.5.1 Cac Mang don gian
Xét bài toán tính giá trị của hàm sin trong khoảng một nửa chu kỳ của nó tức: y=sinx với 0< x <S Z.Do không có khả năng tính sin (x) ở tất cả mọi điểm của khoảng này (vì số lượng điểm là vô hạn) nên chúng ta phải chọn một số hữu hạn các điểm Dé làm điều này chúng ta sẽ lấy một số mẫu giá trị hàm số Giá sử chúng ta sẽ đánh giá sin (x) qua từng 0.1 ( 1/107 ) trong khoang nay, ttc 14 cho x=0, 0.1m, 0.2r, ,0.1 Nếu bạn sử dụng máy tính tay khoa học, chắc chắn bạn
sẽ phải bắt đầu bằng việc lập ra một danh sách hay dãy (mảng) các giá trị của X, sau đó sẽ nhập từng giá trị của x vào máy tính, tìm sin của nó và viết kết quả vào mảng thứ hai như sau:
x=|0, 01z, 0.⁄2z, 03z, 04z, 05z, 06z, 07z, 08z, 09Z, x]
y= [0, 04341, 059, 081, 095, 100, 095, 081, 095, 031, 0]
x và y là hai danh sách được sắp xếp theo trật tự tức giá trị thứ nhất hay phần tử thứ nhất của y liên kết với giá trị thứ nhất hay phần tử thứ nhất của x.v.v Do
trật tự này nên thông thường người ta dùng các chỉ số dưới để ký hiệu số thứ tự
của phần tử Ví dụ như x; là phần tử đầu tiên trong x, còn y; là phần tử thứ năm trong y và xạ là phần tử thứ n trong x
Với cách mô tả mảng như trên MATLAB cho ta một cách tính tốt hơn nhiều
so với máy tính tay Việc tạo mảng rất dễ dàng : chỉ việc theo đúng cách sắp xếp như đã cho ở trên:
30 Chương I CÓ SỞ HỆ MATLAB
Trang 30Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Do các khoảng trống phân cách các giá tri (các phần tử) của mảng nên không thể dùng chúng trong các số phức nếu không sử dụng các dấu ngoặc đơn Ví dụ : [1 —2¡3 4 5+ 6ï] chứa 5 phần tử, trong lúc đó mảng tượng tự như
>>x(3) % phần tử thứ 3 của x
ans =
Trang 31
Nguyén Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Để thâm nhập đồng thời vào một khối các phần tử, MATLAB có cách dùng
(:) như sau Giả dụ:
>>y([§8 2 9 1Ì)
ans =
0.8090 0.3090 0.5878 0
O day chting ta diing mét mang khác là [8291] để rút ra các phần tử của mang y
theo trật tự mong muốn của ta Phần tử thứ nhất được lấy chính là phân tử thứ tám, phần tử thứ hai là thứ hai, phần tử thứ ba là thứ chín và phần tử thứ tư là thứ nhất Hãy tự thử các ví dụ khác Ví dụ hãy lấy phần tử thứ 15 xem sao
1.5.3 Xay dung Mang
Trước đây chúng ta nhập giá trị của x bằng cách gõ vào từng phần riêng biệt Việc này khả đĩ khi chỉ có 11 giá trị của x nhưng điều gì sẽ xảy ra nếu đó là 111 trị số Dựa trên cách viết (:) có hai cách nhập x như sau:
32 Chương 1 CO SO HE MATLAB
Trang 32Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
linspace (gia- tri- thứ- nhất, giá -trị- cuối, các- số- giá- trị)
Cả hai cách tạo mảng đều thông dụng trong MATLAB Cách dùng (:) cho phép trực tiếp đặc tả độ gia tăng giữa các điểm dữ liệu, nhưng lại không đặc tả được số lượng các điểm này Còn linspace, ngược lại, cho phép đặc tả số lượng điểm dữ liệu nhưng lại không khai báo được độ gia tăng giữa các điểm này
Cả hai cách tạo mảng trên đều tạo ra các mảng chứa các phần tử riêng biệt được sắp xếp (bố trí) tuyến tính đối với nhau Trong trường hợp đặc biệt yêu cầu phải bố trí theo kiểu logarith Lúc này MATLAB sẽ cung cấp hàm logspace:
Ở đây chúng ta đã tạo mảng bắt đâu tại 10, kết thúc tại 10? va chứa 11 giá trị
Hàm được mô tả như sau:
>> logspace(hàm-mñũ-báắt-đầu, hàm-mñ-kết-thúc, số-giá-trị)
Trang 33
Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
1.5.4 Các phép toán đối với Máng -Vô hướng
Trong ví dụ đầu tiên trên đây, mảng x được nhân với đại lượng vô hướng 4 Các phép toán đơn giản giữa đại lượng vô hướng và mảng tuân thủ cách suy diễn
tự nhiên Cộng, trừ, nhân, chia với đại lượng vô hướng có nghĩa là áp dụng phép toán đó đối với tất cả các thành viên của mảng Giả sử:
Trang 34Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
ans =
1 3 5 7 9
có nghĩa là nhân từng phần tử của a với 2 và sau đó trừ bớt 1 từ mỗi phần tử của kết quả nhân Chú ý rằng các phép toán đối với mảng-vô hướng cũng dùng quy tắc ưu tiên trình tự tính toán như đối với các biểu thức vô hướng
1.5.5 Các phép toán Máng - Máng
Các phép toán giữa các mảng với nhau không đơn giản như giữa mảng và đại lượng vô hướng Rõ ràng là các thao tác giữa các mảng có độ lớn khác nhau rất khó xác định và không chắc chắn Tuy nhiên nếu hai mảng có cùng độ dài thì việc cộng, trừ, nhân, chia được áp dụng trên cơ sở theo từng phần tử một Ví dụ:
>>a.*b
ans =
Trang 35Nguyễn Tăng Cường, Lê Chung, Huynh Luong Nghĩa MATLAB
1 6 15 28 45
nghĩa là, ở đây chúng ta nhân 2 mảng a, b theo từng phần tử thông qua ký hiệu nhân điểm * Dấu chấm đứng trước ký hiệu nhân * báo cho MATLAB biết phải thực hiện nhân mảng theo từng phần tử Phép nhân không có dấu chấm là phép nhân ma trận sẽ được xét sau của Hướng dẫn này Với ví dụ hiện thời của chúng
ta phép nhân ma trận sẽ không xác định Giả sử:
>>a*b
??? Error using ==>*
Inner matrix dimensions must agree
Chia mảng hay chia điểm cũng yêu cầu phải có ký hiệu chấm Giả sử:
Phép chia không có dấu chấm gọi là phép chia ma trận và là một phép toán
khác hoàn toàn Giả sử:
Trang 36Nguyến Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Phép chia ma trận cho kết quả không có cùng kích thước như a và b, Các
phếp toán ma trận sẽ được xem xét trong mục 2.9 của hướng dẫn này Luỹ thừa
mảng được xác định theo nhiều cách Giống như đối với nhân, chia dấu ^ được
dùng cho lấy thừa ma trận còn ^ dùng để ký hiệu cho luỹ thừa theo từng phân tử,
Chương 1 CỔ SỞ HỆ MATLAB 37
Trang 37Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB đổi gì Điểm khác biệt duy nhất là kết quả sẽ được thể hiện dưới đạng cột chứ
Trang 38Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghĩa MATLAB
Ngoài việc chuyển vị đơn giản trên, MATLAB đồng thời cung cấp toán từ chuyển vị với dấu chấm ở phía trước Trong trường hợp này toán tử chuyển vị điểm được coi là chuyển vị liên hợp không phức Khi mảng là phức, phép chuyển
vị () cho ta chuyển vị phức liên hợp tức dấu của phản ảo được thay đổi như một
phần của thao tác chuyển vị Ngược lại chuyển vị điểm (.) sẽ chuyển vị mảng nhưng không liên hợp nó
Trang 39"Nguyễn Tăng Cường, Lê Chung, Huỳnh Luong Nghĩa MATS
“2.0000 + 2.0000i
3.0000 + 3.0000:
4.0000 + 4.0000:
5.0000 + 4.00001
là tạo ra véc tơ cột f, là chuyển vị của d,
Trước đây trong phần phép tính mảng- mảng có nói rằng khi hai mảng có cùng độ đài các phép tính cộng, trừ, nhân, chỉa được áp dụng trên cơ sở theo từng, phân tử Bây giờ khi đã biết là mảng hay véc tơ có định hướng cột hoặc dòng ta phải phát biểu lại để tính đến sự định hướng: Đó là khi hai véc tơ có cùng độ dài
và cùng định hướng các phép cộng, trừ, nhân, chia được áp dụng trên cơ sở từng phân tử Nói một cách khác, các phép toán giữa các mảng khác định hướng sẽ là
không xác định hoặc xác định nhưng không phải trên cơ sở từng phần tử một
Nếu mảng có thể có 1 dòng và nhiều cột cũng như 1 cột và nhiều dòng thì nó tạo cho ta cảm giác là mảng cũng có thể có vừa nhiều dòng lẫn nhiều cột Các mảng có nhiều dòng và cột được gọi là ma trận Việc tạo ra ma trận được suy ra từ các véc tơ dòng và cột Dấu phẩy hoặc khoảng trống được dùng để phân cách các phân tử trong đồng, còn đấu chấm phẩy dùng dé phân cách cột Giả sử:
Trang 40Nguyễn Tăng Cường, Lê Chung, Huỳnh Lương Nghia MATLAB
727 Alll rows in the bracketed expression must have the same
number of columns
MATLAB bất buộc mót cách nghiêm khác các đồng phải cùng có số cột như nhau Với dạng mảng chữ nhật các phép toán mảng-mảng đựợc xét trước đây đều được áp dụng nếu kích thước, tức số cột và dòng, của chúng giống nhau
1.5.7 Các tính chất khác
Trên đây khi xem xét các đại lượng vô hướng, lệnh who duoc minh hoa la lệnh cho phép hiện lên tên của tất cả biến do người sử dụng tao ra Trong trường hợp mảng cũng rất quan trọng là phải biết kích thước của chúng Trong MATLAB lệnh whos cho ta thông tin bổ sung này Giả sử:
Grand total is 42 elements using 456 bytes
leaving 2316084 bytes memory free Ngoài tên và kích thước của các biến lệnh whos còn chỉ ra tổng số phần tử
từng biến và tổng số byte bị chiếm, biến là đầy đủ hay thưa thớt và có số liệu phức