Cửa sổ Command History là cửa sổ các lệnh quá khứ cho phép lưu giữ và hiển thị tất cả các lệnh đã sử dụng, có thể lặp lại các lệnh cũ bằng cách nháy đúp chuột vào lệnh đó.Khi không biết
Trang 1TRƯỜNG ĐẠI HỌC LÂM NGHIỆP - 2018
THS NGUYỄN THỊ PHƯỢNG
H¦íNG dÉn THùC HµNH
øng dông matlab trong ph©n tÝch m¹ch ®iÖn
Trang 4LỜI NÓI ĐẦU
Lý thuyết mạch là môn học cơ sở kỹ thuật quan trọng trong quá trình đào tạo kỹ sư các ngành có liên quan đến điện, nó cung cấp những cơ sở lý luận chung nhất, là tiền đề để tiếp thu kiến thức của các môn chuyên ngành Với số lượng bài tập lớn, khối lượng tính toán nhiều, các thông số ở dạng phức số, đặc biệt là với những mạch điện phức tạp có nhiều nhánh, nhiều nút, việc giải mạch điện tốn nhiều công sức và dễ nhầm lẫn Với những hiện tượng quá độ của mạch điện, việc phân tích và giải mạch càng nhiều khó khăn và phức tạp… Ngày nay, do công nghệ phát triển nên tin học và máy tính điện tử là công cụ đắc lực hỗ trợ giúp chúng ta giải quyết nhanh và thuận lợi các bài toán kỹ thuật Tuy nhiên, với các ngôn ngữ lập trình: Pascal, C… việc phân tích mạch chỉ dừng lại ở các mạch điện tuyến tính có thông số thực, điều này làm mất đi tính tổng quát của bài toán Sự ra đời của phần mềm Matlab đã mở ra nhiều triển vọng để giải quyết các bài toán kỹ thuật.Với cấu trúc ngắn gọn gắn với tư duy toán học và đặc biệt xử lý dễ dàng đối với số phức, phần mềm này là công cụ mạnh để giải quyết nhanh và chính xác các bài toán phân tích mạch điện
MATLAB có đầy đủ các đặc điểm của máy tính cá nhân và các máy tính hiện đại nhất, nó cho phép biểu diễn dữ liệu dưới nhiều dạng như: biểu diễn thông thường, ma trận đại số, các hàm tổ hợp và có thể thao tác với dữ liệu thường cũng như đối với ma trận Với những đặc điểm đó và khả năng thân thiện với người sử dụng nên nó dễ dàng sử dụng hơn các ngôn ngữ khác Nó cung cấp một môi trường phong phú cho biểu diễn dữ liệu, và có khả năng mạnh
mẽ về đồ hoạ, bạn có thể tạo các giao diện riêng cho người sử dụng (GUIs) để giải quyết những vấn đề riêng cho mình Thêm vào đó MATLAB đưa ra những công cụ để giải quyết những vấn đề đặc biệt, gọi là Toolbox (hộp công cụ).Ví dụ Student Edition của MATLAB bao gồm cả Toolbox điều khiển hệ thống, Toolbox xử lí tín hiệu, Toolbox biểu tượng toán học.Ngoài ra bạn có thể tạo Toolbox cho riêng mình
Matlab thực sự là một phương tiện hữu hiệu, cho phép nhân khả năng của con người trong lĩnh vực học tập nghiên cứu và ứng dụng khoa học kỹ thuật lên nhiều lần, nhưng ở nước ta còn rất ít người biết được điều đó Hiện nay ở Việt
Trang 5Nam, một số trường đại học kỹ thuật cũng đã bắt đầu đưa Matlab vào giảng dạy
và nghiên cứu, nhưng mức độ áp dụng còn rất khiêm tốn Mặc dù các tài liệu nước ngoài về Matlab khá phong phú, các thông tin về Matlab dễ dàng tìm thấy trên các trang Web, nhưng các tài liệu bằng Tiếng Việt còn khá nghèo nàn, đặc biệt là tài liệu về mảng lý thuyết mạch Vì vậy, tác giả đã viết cuốn bài giảng này mong muốn tạo điều kiện thuận lợi cho quá trình giảng dạy, học tập và nghiên cứu Mặc dù đã hết sức cố gắng, nhưng do trình độ có hạn, nên không tránh khỏi những thiếu sót, rất mong được sự đóng góp của các thầy cô và sinh viên để bài giảng ngày càng được hoàn thiện hơn
Tác giả
Trang 6Chương 1 MATLAB CƠ BẢN ỨNG DỤNG TRONG MẠCH TUYẾN TÍNH 1.1 Cài đặt và khởi động Matlab
1.1.1 Cài đặt Matlab
Việc cài đặt Matlab hết sức đơn giản, chương trình Matlab được cài đặt trên Microwsorft Windows Để cài đặt được phần mềm này ta cần có:Đĩa CD phần mềm Matlab 7.0 trở lên; license; cấu hình máy tương đối mạnh, tối thiểu: Windows 2000; Pentium IV, 512 MB RAM; CD - ROM; HDD còn trống 3 GB
Các bước cài đặt được thực hiện như sau:
- Đưa đĩa CD vào ổ đĩa (nếu cài từ đĩa CD-ROM): 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), 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: 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 hay 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ổ Welcome 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.1 Cài đặt Matlab trong Windows và màn hình Welcome
- 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ổ
Trang 7cà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
Hình 1.2 Cửa sổ Software License Agreement
và cửa sổ thông tin về khách hàng
- 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 đườ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
Hình 1.3 Quá trình copy file của chương trình vào thư mục cài đặt
Trang 8- Hoàn thành cài đặt: Sau khi hoàn thành 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 quá 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.1.2 Khởi động Matlab
Để khởi động Matlab chỉ cần nháy đúp vào biểu tượng của nó, cửa sổ lệnh
command Windows của Matlab sẽ xuất hiện Dấu nháy >> biểu thị chương
trình đã sẵn sàng, có thể nhập dữ liệu và tính toán trên Matlab
Ngoài cửa sổ chính command Windows, Matlab còn có cửa sổ soạn thảo Editor, có thể soạn thảo các chương trình, sửa đổi các hàm, biến… trên cửa sổ này và lưu chương trình của mình dưới dạng các Scripts
Cửa sổ Command History là cửa sổ các lệnh quá khứ cho phép lưu giữ và hiển thị tất cả các lệnh đã sử dụng, có thể lặp lại các lệnh cũ bằng cách nháy đúp chuột vào lệnh đó.Khi không biết thực hiện các lệnh như thế nào thì có thể gọi lệnh Help để nhận sự trợ giúp
Hình 1.4 Các cửa sổ của Matlab
Trang 9Thoá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
1.2 Bắt đầu làm quen với Matlab
1.2.1 Cửa sổ lệnh
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
1.2.2 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:
Trang 101.2.4 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.2.5 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 enter để biểu thị rằng câu lệnh còn tiếp tục ở dòng
1.3 Các phép toán cơ bản của Matlab
Chia phải
Chia trái
Lũy thừa
Khai căn
Các biểu thức được thành lập với sự trợ giúp của các phép tính số học thông thường với các quy tắc ưu tiên thông thường Thứ tự ưu tiên trong phép toán số học: ngoặc đơn; luỹ thừa; nhân, chia; cộng, trừ
Đối với các phép tính sơ cấp, phép chia trái và phép chia đều cho cùng kết quả.Ví dụ: 6/2 và 2\6 đều có cùng một kết quả là 3, còn đối với các phép tính ma trận, thì kết quả của chúng có thể khác nhau Khi thực hiện phép tính chia cho số
0 kết quả sẽ là inf(infinity – vô định: ∞)
Biến NaN(Not a Number) sẽ xuất hiện khi thực hiện các phép tính có
dạng 0/0 hoặc ∞/∞ Dấu % dùng để ghi chú giải, Matlab không ghi nhận thông tin sau dấu này
Trang 11Một số hằng số trong Matlab được biểu thị bằng ký tự, chẳng hạn số π được ký hiệu là ‘pi’, số ε được viết là eps… Nếu không khai báo biến, thì khi
thực hiện phép tính Matlab sẽ tự động gán cho kết quả với biến ans
Các góc trong Matlab được tính bằng radian, muốn đổi sang độ thì thực hiện phép tính: (180*góc/pi)
Vai trò của dấu (;) sau phép tính: Nếu không có dấu (;) ở cuối câu thì kết quả của phép tính sẽ hiện ngay trên màn hình, ngược lại nếu có dấu này thì không có kết quả hiện lên trên màn hình Ở cửa sổ lệnh của Matlab ta cũng có thể thực hiện các phép tính trực tiếp như máy tính cầm tay bình thường, sau khi
đã khai báo ấn Enter kết quả sẽ hiện thị Các lệnh gõ vào máy được thể hiện bằng dấu nhắc lệnh (>>) ở ngay trước đó, nếu là một chuỗi lệnh thì dấu nhắc lênh được đặt ngay trước câu lệnh đầu tiên
Ví dụ:Thực hiện các phép tính trong cửa sổ lệnh không có và có dấu chấm phảy ở cuối câu lệnh:
>> 2*3+4/5-7% khong co dau cham phay (;)
có các đại lượng phức thì nên ký hiệu các biến viết hoa I, J thay vì i, j Số phức được nhập có thể có hoặc không có dấu (*) giữa biến i và chữ số, nhưng nếu không dùng dấu (*) thì nhất thiết i phải đứng đằng sau chữ số Có 2 cách nhập một số phức: z = r + jx hoặc z = r.ejθtheo cú pháp:
Trang 12A=[2+i*5 4+i*7; 1+i*6 3+i*8]
Cách dùng thứ nhất ngắn gọn và ít bị nhầm hơn so với cách thứ 2 Lưu ý
là không để khoảng trống giữa các phần thực và ảo (khoảng trống quanh dấu cộng +), vì Matlab sẽ coi đó là hai số riêng biệt Hầu hết các hàm sơ cấp đều có thể thực hiện với số phức Khi một số phức S được biểu thị dưới dạng số phức ta
có thể tính riêng các phần thực và phần ảo theo cú pháp sau:
1.4 Ma trận và mảng trong Matlab
1.4.1 Nhập ma trận trong Matlab
Matlab cung cấp một vài phương tiện cho người sử dụng để tạo ra một ma trận, mỗi phương tiện có những ưu điểm của nó và được sử dụng tuỳ theo từng yêu cầu bài toán Nói chung Matlab cung cấp ba phương tiện: Nhập matrận trực tiếp từ cửa sổ command Window, nhập matrận từ một file (sử dụng M-file hoặc load), nhập matrận từ những hàm có sẵn trong Matlab
1.4.1.1 Nhập matrận trực tiếp từ cửa sổ command Window
Trong môn học toán cao cấp chúng ta đã biết nhập một matrận như sau:
Trang 13Từ dòng nhắc lệnh trong cửa sổ command Window >> ta nhập:
>> A=[ 2,5,7 ; 3 4,5;2 pi 8]; hoặc
>>A=[ 2 5 7
3 4 5
2 pi 8];
Các hàng được cách nhau bằng một dấu chấm phẩy (;) như trên, các phần
tử trong một hàng được cách nhau bằng dấu cách (thanh space) hoặc dấu phẩy (,).Kết thúc dòng lệnh có hoặc không có dấu (;)
Nếu không có dấu chấm phẩy ở cuối dòng thì Matlab sẽ in ra kết quả ma trận vừa nhập Như ví dụ trên:
1.4.1.2 Nhập matrận từ m-file
Ta có thể nhập một matrận bằng cửa sổ soạn thảo M-file, mở cửa sổ này bằng cách vào: File - New - m.file Một cửa sổ soạn thảo sẽ được hiện ra cho phép bạn soạn thảo dưới dạng text, do là cửa sổ soạn thảo dạng text cho nên bạn
có thể soạn thảo từ file word sau đó copy vào cửa sổ m-file Để nhập matrận ta soạn thảo tương tự như trong cửa sổ command window sau đó lưu vào file như sau: Ví dụ:
>>A=[1 2 3; 4 5 6; 7, 8,9]; % không có dấu chấm phẩy sẽ in ra kết quả Sau khi kết thúc soạn thảo ta lưu vào tên_file Để thực thi các lệnh nhập trong m-file ta dùng lệnh sau trong command window như sau:
>> ten_file;
Trang 141.4.1.3 Nhập matrận từ các hàm có sẵn
Matlab có một thư viện các hàm cho phép tạo ma trận Sau đây là một số hàm:
- ones(m,n) tạo ma trận m hàng và n cột ,với các phần tử đều bằng 1;
- ones(m) tạo ma trận vuông cấp m, với các phần tử đều là 1;
- zeros(m,n) tạo ma trận kích thước m x n, với các phần tử đều bằng 0;
- zeros(m) tạo ma trận vuông cấp m;
- eyes(m,n) tạo ma trận kích thước m xn với các phần tử đều bằng 1;
- eyes(m) tạo ma trận vuông cấp m
1.4.2.1 Tạo vec tơ
Vec tơ là mảng số liệu được sắp xếp theo một hướng xác định Vec tơ dòng có các phần tử phân biệt nhau bằng dấu cách hoặc dấu phảy Với vec tơ cột thì các phần tử phân biệt nhau bằng dấu chấm phảy.Ví dụ:
Trang 15>> x= 1:100; % x lấy giá trị từ 1 đên100, bước tăng của x là 1
>>t=0: 0.1:10; % bước nhảy là của t là 0.1
Công thức chung tạo vec tơ là X=Xmin:bước tăng:Xmax
1.4.2.2 Tính chiều dài véc tơ
Tính chiều dài của vectơ ta dùng lệnh length
Cú pháp: l = length (x)
Trong đó: l: biến chứa chiều dài vectơ
Ví dụ: Tính chiều dài của vectơ x
Trang 16ans=
2
Đặc biệt để gọi toàn bộ số hàng hoặc toàn bộ số cột dùng toán tử (:)
>>A(:,1) % gọi toàn bộ số hàng tương ứng với cột 1
Điều kiện hai ma trận A và B phải có cùng kích thước hoặc một trong hai
là số vô hướng Tổng/hiệu các ma trận cùng kích thước là ma trận với các phần
tử tương ứng là tổng/hiệu của các phần tử tương ứng
Trang 17X=A\B là lời giải của phương trình A*X=B
X=B/A là lời giải của phương trình X*A=B
Phép chia phải tương đồng với phép chia trái trong điều kiện: B/A=A’\B’
d Ma trận chuyển vị
Ma trận chuyển vị của ma trận A là ma trận mà trong đó các cột của ma trận này là các hàng của ma trận gốc, ký hiệu ma trận chuyển vị của A là AT, cú pháp: A’
Ví dụ: Hãy thực hiện phép chuyển vị của ma trận A
Trang 18A(j , k) Chỉ phần tử A(j), A(j+1)…A(k)
A(: , j , k) Chỉ các phần tử A(:, j), A(:, j+1)…A(:, k)
A(:) Chỉ tất cả các thành phần của ma trận A
Trang 19Ví dụ: Khi khai báo D = 1 : 10, ta được kết quả:
D = 1 2 3 4 5 6 7 8 9 10 Còn khi khai báo D = 0 : 2 :10, thì ta được kết quả:
- Giải thích: Nếu bỏ qua các đối số ở vế trái của dòng lệnh thì lệnh lsim vẽ
ra đồ thị trên màn hình
lsim(a,b,c,d,u,t) lsim(a,b,c,d,u,t,x0) lsim(num,den,u,t) Cho hệ phương trình không gian trạng thái:
Trang 20̇ = +
Lệnh lsim(a,b,c,d,u,t) vẽ ra đồ thị đáp ứng thời gian của hệ thống với ngõ vào thời gian ban đầu nằm trong ma trận u Ma trận u phải có số cột bằng số ngõ vào u, mỗi hàng của ma trận u tương ứng với một thời gian mới và ma trận u phải có số hàng là length(t) (với u là nguồn một chiều) Vector t chỉ ra trục thời gian cho quá trình mô phỏng và phải chia thành các đoạn bằng nhau, nếu dùng thêm đối số x0 ở vế phải thì lệnh lsim(a,b,c,d,u,t,x0) sẽ chỉ ra điều kiện ban đầu của các trạng thái
Lệnh lsim(num,den,u,t) vẽ ra đáp ứng thời gian của hàm truyền đa thức, trong đó num và den chứa các hệ số đa thức theo chiều giảm dần số mũ của s
Nếu giữ lại các đối số ở vế trái:
[y,x]=lsim(a,b,c,d,u,t) [y,x]=lsim(a,b,c,d,u,t,x0) [y,x]=lsim(num,den,u,t) thì lệnh này không vẽ các đồ thị đáp ứng mà tạo các ma trận x và y, trong đó ma trận y là đáp ứng ngõ ra và ma trận x là đáp ứng trạng thái của hệ thống Ma trận
y có số cột bằng số ngõ ra và mỗi hàng ứng với 1 hàng của ma trận u
1.5 Một số lệnh đặc biệt ứng dụng giải mạch điện
1.5.1 Văn bản trong Matlab
Để có thể hiện chữ trên màn hình ta có thể dùng biến “chữ” được giới hạn bởi 2 dấu phảy (’) Ví dụ: Muốn hiện chữ “Dien luc” ta dùng lệnh sau:
Truong Dien luc
Trong quá trình tính toán, đôi khi ta phải nhập số liệu bổ sung vào chương
trình, Matlab cho phép đối thoại bằng lệnh input(‘tham số cần nhập’) Sau khi
gõ lệnh này, chuỗi ký tự này sẽ được xuất hiện ra màn hình và tại vị trí đó bạn cần nhập số liệu của tham số Ví dụ:
Trang 21>>e1=input(‘Nguon e1=’)
Trên màn hình sẽ hiện ra:
Nguon e1=
Ta phải điền dữ liệu cần thiết vào chỗ trống sau dấu bằng để thực hiện
tiếp phép tính Để xuất chuỗi ký tự nào đó ra màn hình, ta dùng lệnh disp(‘chuỗi
ký tự’) Ví dụ: >>disp(‘Ket qua la’)
Trên màn hình xuất hiện dòng chữ:
Ket qua la
1.5.2 m.file trong Matlab
1.5.2.1 Soạn thảo Script (m.file)
Scrip là một chuỗi lệnh được soạn thảo để thực hiện một hoặc nhiều phép toán và được lưu giữ dưới dạng m.file Lập trình trong Matlab là sự soạn thảo các lệnh theo trình tự xác định để giải bài toán Để Matlab chấp nhận, chương trình soạn thảo phải được cất giữ trong tệp với tên mở rộng là “.m” thường được gọi là tệp m.file
Người sử dụng có thể tự tạo ra các hàm mới cất vào các m.file và chúng
sẽ được sử dụng như các hàm của Matlab Chương trình có thể soạn thảo bên ngoài hoặc ngay trong cửa sổ soạn thảo của Matlab (Editor-Debugger) Chúng ta nên soạn thảo trong cửa sổ Editor-Debugger, vì trong cửa sổ này ta có thể thay đổi dữ liệu trong file đang lập trình rất thuận tiện, nếu soạn thảo bên ngoài thì khi muốn thay đổi dữ liệu ta phải gõ lại từ đầu bài toán
Khi soạn thảo m-file trong cửa sổ Editor, ta phải lưu lại m.file với một tên bất kỳ có đuôi “.m”, tên của m-file phải là 1 chuỗi ký tự liên tục, giữa các ký tự không có dấu cách và tên của m-file không dấu
Để chạy chương trình của m.file đó, ta chỉ cẩn vào cửa sổ Command Window gõ tên m.file đã lưu và dấu nháy >>, hoặc kích chuột trái vào biểu
tượng Run trên thanh tabar của cửa sổ Editor thì chương trình sẽ chạy và cho ta
kết quả hiển thị ra màn hình
Trên mỗi cửa sổ Editor ta có thể viết nhiều chương trình khác nhau, chương trình này được tách biệt với chương trình kia bằng việc đánh dấu “%%”
ở đầu của mỗi chương trình, sau đó muốn chạy chương trình nào thì kích chuột
trái vào chương trình đó và bấm Run Section
1.5.2.2 Xuất m.file sang file word
Để xuất chương trình của m.file trên cửa sổ Editor sang file word ta thực
hiện các thao tác sau: Kích chuột trái vào biểu tượng PUBLISH (trên thanh
Trang 22tabar của cửa sổ Editor đang thực hiện) → Publish → Edit Publishing Options…, lúc này trên màn hình sẽ xuất hiện cửa sổ sau:
Hình 1.5 Cửa sổ Publish
Ta tiếp tục kích chuột trái vào cột html rồi chọn doc, cuối cùng kích chuột
trái vào nút Publish trên cửa sổ này để hoàn tất Sau khi hoàn tất các thao tác ta nhận được một file word mà trên đó có chương trình và kết quả của chương trình ta đã viết
1.5.3 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 trong 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 đượ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 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
Trang 23Ví dụ: Tạo hàm giải phương trình bậc hai, tên tập tin được đặt là bachai.m
clear: Xóa tất cả các biến khỏi vùng làm việc;
clear name: Xóa các biến hay hàm được chỉ ra trong name;
clear functions: Xóa tất cả các hàm trong bộ nhớ;
clear variables: Xóa tất cả các biến ra khỏi bộ nhớ;
clear mex: Xóa tất cả các tập tin mex ra khỏi bộ nhớ;
Trang 24clear: Xóa tất cả các biến chung;
clear all: Xóa tất cả các biến, hàm, và các tập tin mex khỏi bộ nhớ Lệnh này làm cho bộ nhớ trống hoàn toàn
1.5.5.2 Xóa tập tin và đối tượng đồ họa
Để xóa tập tin và đối tượng đồ họa ta dùng lệnh delete
Cú pháp:
delete filename
delete (n)
Giải thích:
file name: Tên tập tin cần xóa
n: Biến chứa đối tượng đồ họa cần xóa Nếu đối tượng là một cửa sổ thì cửa sổ sẽ đóng lại và bị xóa
1.6 Symbolic toolbox
1.6.1 Giới thiệu về symbolic
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 xâ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
1.6.2 Lệnh và hàm trong Symbolic Matlab
1.6.2.1 Cấu trúc
- 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
- 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
>> x = sym(‘x’, ‘real’) % x là biến kiểu thực
>> y = sym(‘y’) %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
Trang 251.6.2.2 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 = sin(a*t + b)
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à 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(a+c-v*y,1)
ans=
y
Trang 261.6.2.3 Phép đạ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
>>y = u^2*v - u*v^3;
>> y2u = diff(y,u,2) % đạo hàm cấp 2 theo u
y2u = 2*v
>> y3u = diff(y,v,3) % đạo hàm cấp 3 theo v
y3u = -6*u
1.6.2.4 Phép 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ểu thức symbolic S với biến mặc định 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
Trang 271.6.2.5 Tính tổng của dãy số symbolic
Để tính tổng của một biểu thức symbolic ta sử dụng hàm 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
Trang 281.6.2.6 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 Ví dụ:
Trang 29trị 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 xâu đại diện cho một tên biến, hoặc một biểu thức xâ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ụ:
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:
subexpr(X,'SIGMA') viết lại biểu thức X theo biểu thức con chung của nó
1.6.2.8 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ụ:
Trang 301.6.2.9 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:
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ổ sung thêm các phương trình Nếu điều kiện đầu không được xác
Trang 31đị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’)
1.6.2.11 Biến đổi laplace và laplace ngược
Biến đổi Laplace thuận có cấu trúc: Laplace(f,t,s) hàm f là hàm theo biến
t, biến đổi từ miền thời gian t sang miền ảnh Laplace s
L = laplace(F): Biến đổi Laplace của hàm F với biến độc lập mặc định là
Cho mạch điện có phương trình như sau:
(dI1/dt)*R1 + R2 = I1*R3 % giải phương trình trên bằng cách biến đổi sang laplace
% Chương trình viết trong M-file và được ghi trong file C5.m
Trang 32syms I1p;
q2=subs(q1,{R1,R2,R3,'I1(0)','laplace(I1(t),t,s)'},{1,2,3,2,I1p})
q2=collect(q2,I1p); % nhóm lại thừa số chung là I1p
I1p=solve(q2,I1p) % Giải phương trình trên với biến I1p
ilaplace(I1p) % biến đổi ngược lại sang I1(t)
Kết quả khi thực hiện chương trình trên là:
>>C5
q1= R1*(s*laplace(I1(t),t,s)-I1(0))+R2/s-R3*laplace(I1(t),t,s)
q2 = s*I1p-2+2/s-3*I1p I1p = 2*(s-1)/s/(s-3)
% kết quả I1(t)
ans= 2/3+4/3*exp(3*t) % kết quả I1(t)
1.7 Đồ họa trong Matlab
Các kết quả trong Matlab thường cho mảng dữ liệu rất lớn, do đó đôi khi khó có thể phân tích chi tiết.Tuy nhiên, trong Matlab có mảng đồ họa có thể khắc phục được những khó khăn trên
Đồ họa là một dạng ngôn ngữ diễn tả sự việc một cách sinh động, ấn tượng và hiệu quả Các công cụ trong Matlab cung cấp cho chúng ta nhiều phương pháp vẽ khác nhau để tạo ra các đồ thị, biểu đồ trong mặt phẳng (2D) và trong không gian (3D) với những tiện ích rất phong phú và dễ sử dụng
Vẽ trong Matlab rất đơn giản, sau khi khai báo các biến, chỉ cần dùng một trong các lệnh vẽ đồ thị là có ngay sản phẩm hiện lên trong cửa sổ đồ họa Vẽ đồ thị trong mặt phẳng được sử dụng bởi rất nhiều lệnh khác nhau: plot, fplot, ezplot, stairs, loglog, semilog, contours, bar, fill, area, polar, scater… Vẽ đồ thị trong hệ tọa độ 3 chiều được thực hiện bởi các lệnh: mesh, pie3, surf, fill3… Ngoài ra ta còn có thể chọn nét vẽ, chọn màu, điền các thông tin chú thích trên
đồ thị…
1.7.1 Cửa sổ đồ họa và thanh công cụ đồ họa
Matlab biểu thị đồ họa ở cửa sổ riêng tên là Figure, để tạo một cửa sổ đồ họa gõ lệnh figure ở cửa sổ lệnh Tuy nhiên, khi vẽ đồ thị đầu tiên ta chỉ cần thực hiện các lệnh đồ họa trong cửa sổ lệnh và sản phẩm đồ họa sẽ xuất hiện trên cửa sổ Figure một cách tự động mà không cần phải khai báo gì Ở cửa sổ đồ họa cũng có các phím chức năng như ở các cửa sổ khác như: File, Edit, View, Insert, Tolls, Desktop… Bình thường mỗi cửa sổ đồ họa chỉ chứa một hình vẽ duy nhất, vì vậy cần lưu ý, nếu chưa cất hình vẽ vào file riêng mà đã ra lệnh vẽ
đồ thị khác thì một cách tự động đồ thị cũ sẽ bị thay thế bởi cái mới Nếu không
Trang 33muốn cất đồ thị cũ mà vẫn giữ nó trong quá trình làm việc thì cần phải đánh lệnh figure trước khi vẽ đồ thị mới
Có thể xóa bỏ toàn bộ đồ thị và hệ trục bằng lệnh clf, chỉ xóa đồ thị mà vẫn giữ được hệ trục thì dùng lệnh cla
1.7.2 Kiểu đường nét vẽ, điểm đánh dấu và màu sắc của đồ thị
Lệnh về nét vẽ và màu được quy định trong Matlab theo các ký hiệu nhất định Khi khai báo, kiểu đường và kiểu điểm được biểu thị giữa hai dấu phảy trên (‘’) Nếu không khai báo thì Matlab sẽ sử dụng nét vẽ và màu mặc định Matlab mặc định đường vẽ là đường liền, không đánh dấu, màu xanh nước biển (blue)
Bảng 1.4 Các ký hiệu về lệnh vẽ nét và màu của đồ họa
Ký
Ký
< Tam giác (trái) c (cyan) Lục lam
* Dấu hoa thị Các đặc tính của đường nét, điểm đánh dấu và màu của đồ thị được khai
báo bởi chuỗi lệnh sau: ‘lineWidth’,a,‘markerSize’,b,‘color’,‘c’
Trong đó, ‘lineWidth’ dùng để định độ rộng của đường vẽ, lệnh
Trang 34‘markerSize’ định độ lớn (kích thước) của các điểm được đánh dấu và lệnh
‘color’ để định màu của đồ thị
Các tham số a, b biểu thị giá trị của độ rộng nét vẽ và kích thước điểm dấu (đơn vị là point) còn tham số c biểu thị màu
Nếu không khai báo thì đồ thị sẽ được vẽ với các đặc tính mặc định: bề rộng nét vẽ là a = 0,5 point và giá trị của điểm là b = 0,6 point (1 point = 1/36 inch; 1inch = 0,36 cm), màu xanh nước biển
Ví dụ: Hãy vẽ đồ thị hình sin với nét vẽ màu đỏ, có độ rộng 3 point, kích thước điểm là 9 point
Ta thực hiện chuỗi lệnh sau trên Matlab:
>> x=-3:0.3:3;
>> y=sin(x);
>>plot(x,y,'rs-','lineWidth',3,'markerSize',9)
Hình 1.6 Đồ thị hình sin với bề rộng đường là 3 point
và chiều cao điểm là 9 point
1.7.3 Trục tọa độ và lưới cho đồ thị
1.7.3.1 Trục tọa độ
Một cách tự động sau khi vẽ, các trục tọa độ được hiển thị cùng với đồ thị Khi thực hiện các lệnh vẽ đồ thị, Matlab tự động chọn tỉ lệ (autoscanling) trên các trục tọa độ kể cả phạm vi thay đổi của các đại lượng cũng như khoảng cách giữa 2 điểm đánh dấu liền nhau trên các trục sao cho dễ nhìn nhất Ta có thể dùng lệnh axis với công dụng chia lại trục tọa độ để can thiệp vào chức năng autoscanling của Matlab với cú pháp:
axis([xmin xmax ymin ymax])
axis([xmin xmax ymin ymax zmin zmax])
Trang 35xmax, ymax, zmax: Là giá trị lớn nhất của các trục x, y, z;
on: Cho hiển thị trục tọa độ;
off: Không cho hiển thị trục tọa độ
Tên đồ thị được khai báo bằng lệnh title(‘ten do thi’), cụm từ ‘ten do thi’
được nhốt giữa hai dấu phảy trên (‘’)
Lưu ý: Ký tự điền trong đồ thị chỉ được viết bằng tiếng Việt không dấu, hoặc bằng tiếng Latin, tiếng Anh…
1.7.4.2 Điền tên cho các trục tọa độ
Tên các trục tọa độ được điền bởi các lệnh nhãn xlabel(‘x’) và
Trang 36ylabel(‘f(x)’), nếu cần điền thêm đơn vị của các đại lượng x và y thì tacũng có
thể ghi trong các nhãn này Ví dụ: xlabel(‘l, km’)
Ta cũng có thể viết ký tự dưới dạng chỉ số hay ký tự Hy Lạp dạng LATEX
Ví dụ: xlabel(‘U^2_v_a_o’), khi đó trên trục x của đồ thị sẽ hiển thị lên ký hiệu sau: U2vao
1.7.4.3 Điền ghi chú vào đồ thị
a Điền ghi chú bằng lệnh text
Lệnh text(‘xi,yi,‘Ghi chu’) cho phép điền từ ‘Ghi chu’ vào vị trí có tọa
b Điền ghi chú bằng lệnh gtext
Việc đưa chú giải lên đồ thị cũng có thể thực hiện bằng lệnh gtext(‘text’) Chẳng hạn sau khi đồ thị đã được vẽ, ta gõ lệnh gtext(‘cos(x)’), lúc đó trên đồ thị xuất hiện dấu chữ thập, ta có thể di chuột để chuyển đến vị trí cần thiết sau đó ấn chuột trái, lời ghi chú “cos(x)” sẽ lập tức xuất hiện tại
vị trí bạn vừa lựa chọn
c Điền ghi chú bằng lệnh legend
Ta cũng có thể thêm chú thích vào đồ thị bằng lệnh legend(‘y’) Lệnh này
cho phép tự động thiết lập ghi chú các đồ thị, nó đặc biệt hữu ích khi có nhiều
đồ thị trên một hệ trục tọa độ Khi đó lệnh này được khai báo như sau:
legend(‘y1’, ‘y2’, …, ‘yn’) Ngoài các lệnh trên ta còn có thể ghi chú trên trục
tọa độ với sự trợ giúp của hàm set
Ví dụ: Hãy vẽ đồ thị hàm số y = cos2x trong hệ trục tọa độ có lưới và điền tên các trục tọa độ và các ghi chú
Trang 37Hình 1.8 Đồ thị có điền tên đồ thị, tên các trục tọa độ
và ghi chú vào đồ thị
1.7.5 Đồ thị hai chiều (2D)
Ta có thể dùng các lệnh sau đây để vẽ đồ thị 2D kiểu đường
1.7.5.1 Lệnh plot
Hàm plot cho phép vẽ đồ thị hàm số y = f(x), hoặc từ dữ liệu cho trước
của x và y Lệnh plot(x,y) vẽ một đồ thị với giá trị x trên trục hoành và giá trị y
trên trục tung bằng cách nối các điểm (x,y) Đồ thị này sẽ hiển thị trên một cửa
Trang 381.7.5.2 Lệnh fplot
Lệnh fplot cho phép vẽ đồ thị của hàm toán học bất kỳ Nếu đã biết hàm
số f(x) thì có thể vẽ đồ thị bằng các lệnh đơn giản là: fplot(‘f(x)’,[x1,x2])
Trong đó: f(x) là hàm số;
x1, x2: xác định khoảng cần vẽ
Hàm fplot vẽ đồ thị hàm số trong khoảng giới hạn xác định Hàm số có
thể có dạng y=(fx), trong đó x là vec tơ có khoảng giới hạn xác định và y là một
vec tơ cùng kích thước với x, có chứa các giá trị ứng với các điểm của x Nếu ứng với mỗi điểm của x, hàm f(x) có nhiều hơn một giá trị thì y là một ma trận
Trang 39Hình 1.11 Đồ thị của hai hàm số được vẽ trên cùng một hệ trục tọa độ bằng lệnh fplot
Trang 401.7.6 Trình bày đồ thị
1.7.6.1 Vẽ đồng thời nhiều đồ thị trên cùng hệ trục tọa độ
Có thể vẽ rất nhiều đồ thị trên cùng một hệ trục tọa độ, để thực hiện được điều này ta có thể dùng một trong các lệnh sau đây:
Sau khi đã thực hiện xong việc vẽ đồ thị ta cần dùng lệnh hold off để hủy
bỏ lệnh hold on Ta cũng có thể hủy bỏ lệnh hold on bằng lệnh hold Lệnh hold cho phép chuyển đổi từ chế độ hold off sang chế độ hold on và ngược lại