Bài giảng Giải tích mạch và mô phỏng trên máy tính

TRƢỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG  
KHOA KỸ THUẬT-CÔNG NGHỆ  
------  
BÀI GIẢNG  
GIẢI TÍCH MẠCH VÀ  
MÔ PHỎNG TRÊN MÁY TÍNH  
(BẬC: CAO ĐẲNG)  
GV:  
BỘ MÔN: Điện-Điện tử  
KHOA: Kỹ thuật-Công nghệ  
Trƣơng Quang Sanh  
Quảng Ngãi, 2014  
TRƢỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG  
KHOA KỸ THUẬT-CÔNG NGHỆ  
------  
BÀI GIẢNG  
GIẢI TÍCH MẠCH VÀ  
MÔ PHỎNG TRÊN MÁY TÍNH  
BẬC: CAO ĐẲNG  
(45 tiết)  
GV:  
BỘ MÔN: Điện-Điện tử  
KHOA: Kỹ thuật-Công nghệ  
Trƣơng Quang Sanh  
Quảng Ngãi, 2014  
1
LỜI NÓI ĐẦU  
Điều khiển tự động hóa đóng vai trò quan trọng trong sự phát triển của khoa  
học và kỹ thuật. Lĩnh vực này sử dụng rất rộng rãi từ hệ thống phi thuyền không  
gian, hệ thống điều khiển tên lửa, máy bay không ngƣời lái, robot, ngƣời máy tay,  
máy trong các quá trình sản xuất hiện đại và ngay cả trong đời sống hàng ngày:  
Điều khiển nhiệt độ, độ ẩm, …  
Khi các máy móc hiện đại ngày nay càng phức tạp hơn nhiều tín hiệu vào và  
ra thì việc mô tả hệ thống điều khiển đòi hỏi cần phải tính toán nhanh và xử lý một  
lƣợng lớn các lệnh phức tạp.  
Nhằm tạo kỹ năng lập trình và mô phỏng để giải quyết các bài toán đại số,  
phƣơng trình vi phân, ma trận, các bài toán về phƣơng trình toán lý, trong kỹ thuật  
điện, điện tử, tự động… Bài giảng “GIẢI TÍCH MẠCH VÀ MÔ PHỎNG TRÊN  
MÁY TÍNH” sẽ giúp cho chúng ta tìm hiểu những nội dung cơ bản nhất về Matlab  
và Simulink cũng nhƣ ứng dụng giải quyết những bài toán kỹ thuật điện đơn giản.  
Nội dung của bài giảng gồm 8 chƣơng:  
Chương 1: Các khái niệm cơ bản  
Chương 2: Tính toán trên các mảng số  
Chương 3: Nhập - xuất dữ liệu trong MATLAB  
Chương 4: Các lệnh điều khiển trong MATLAB  
Chương 5: Hàm do người dùng tự lập  
Chương 6: Đồ họa trong MATLAB  
Chương 7: Các bài toán đại số tuyến tính và phương trình vi phân  
Chương 8: Simulink  
Do thời gian biên soạn có hạn nên không tránh đƣợc những sai sót, mong  
những góp ý xin gửi về Bộ môn Điện - Điện tử, khoa Kỹ thuật - Công nghệ, Trƣờng  
Đại học Phạm Văn Đồng. Trân trọng cảm ơn!  
Tác giả!  
2
 
MỤC LỤC  
3
 
4
5
Chƣơng 1  
CÁC KHÁI NIỆM CƠ BẢN  
1.1. Giới thiệu phần mềm matlab  
Đối với lĩnh vực điều khiển - tự động hóa nói riêng và trong lĩnh vực khoa  
học - kỹ thuật nói chung, mô phỏng là công cụ quan trọng cho phép khảo sát các đối  
tƣợng, hệ thống hay quá trình kỹ thuật - vật lý, mà nhất thiết không phải có đối  
tƣợng hay hệ thống thực. Matlab - simulink đƣợc trang bị công cụ mô phỏng mạnh  
và các phƣơng pháp mô hình hóa.  
Matlab là một bộ chƣơng trình phần mềm lớn của lĩnh vực tính toán số. Tên  
bộ chƣơng trình chính là chữ viết tắt từ MATric LABoratory, thể hiện định hƣớng  
chính của chƣơng trình là các phép toán vector và ma trận. Phần cốt lõi của chƣơng  
trình bao gồm một số hàm toán, các chức năng nhập/xuất cũng nhƣ các khả năng  
điều khiển chu trình mà nhờ đó ta có thể dựng nên các đoạn chƣơng trình để thực  
thi.  
Thêm vào phần cốt lõi là các Toolbox (bộ công cụ) với phạm vi chức năng  
chuyên dụng mà ngƣời sử dụng cần. Trong phạm vi giáo trình này chỉ giới thiệu  
một số Toolbox liên quan đến mô phỏng mạch, điều khiển - tự động hóa. Đặc biệt,  
Simulink là một Toobox có vai trò đặc biệt quan trọng: Một công cụ mạnh phục vụ  
mô hình hóa và mô phỏng các hệ thống kỹ thuật - vật lý trên cơ sở sơ đồ cấu trúc  
dạng khối.  
Trƣớc khi khởi động Matlab, thì ngƣời dùng phải tạo một thƣ mục làm việc  
để chứa các file chƣơng trình của mình (ví dụ: E:/thuchanh_matlab).  
Matlab sẽ thông dịch các lệnh đƣợc lƣu trong file có dạng *.m. Sau khi cài  
đặt Matlab thì việc khởi động chạy chƣơng trình này chỉ đơn giản là nhấp vào biểu  
tƣợng của nó trên desktop  
, hoặc vào Start\All Programs\Matlab\Matlab  
R2008b.  
7
     
Sau khi đã khởi động Matlab xong, thì bƣớc kế tiếp là chỉ thƣ mục làm việc  
của mình cho Matlab. Nhấn vào biểu tƣợng  
làm việc của mình (ví dụ: E:/thuchanh_matlab).  
trên thanh công cụ và chọn thƣ mục  
Cửa sổ làm việc của Matlab sẽ nhƣ hình bên dƣới. Nó bao gồm 3 cửa sổ làm  
việc chính: Cửa sổ lệnh (Command Window), cửa sổ thƣ mục hiện tại (Current  
Directory) và cửa sổ chứa tập các lệnh đã đƣợc sử dụng (Command History).  
Để tạo một file.m trong thƣ mục làm việc, ta có thể thực hiện:  
Nhấn vào biểu tƣợng  
hoặc vào File\New\M-file  
Cửa sổ soạn thảo xuất hiện, gõ chƣơng trình cần thiết vào file. Sau khi  
đã hoàn tất nhấn vào biểu tƣợng  
để lƣu vào thƣ mục hiện tại  
(E:/thuchanh_matlab).  
8
Để thực thi tập lệnh có trong file.m trong thƣ mục làm việc thì ngƣời dùng chỉ  
cần gõ tên file đó và Matlab sẽ tự động thực thi các dòng lệnh có trong file.m này.  
1.2. Làm việc trong môi trƣờng Matlab  
Matlab là một môi trƣờng tính toán số và lập trình. Giống nhƣ một máy tính  
cơ bản, nó làm tất cả các phép tính toán học cơ bản nhƣ cộng, trừ, nhân, chia; giống  
nhƣ máy tính kỹ thuật, nó bao gồm: số phức, căn thức, số mũ, logarit, các phép toán  
lƣợng giác nhƣ: sin, cos, tang,…; nó cũng giống nhƣ máy tính có thể lập trình, có  
thể lƣu trữ, tìm kiếm lại dữ liệu, cũng có thể tạo, bảo vệ và ghi trình tự các lệnh để  
tự động phép toán khi giải quyết các vấn đề, có thể so sánh logic, điều khiển thực  
hiện lệnh để đảm bảo tính đúng đắn của phép toán. Giống nhƣ 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.  
Matlab 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ề đồ họa, tạo các giao diện riêng cho ngƣời sử dụng GUIs. 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. Ngoài ra ta còn có thể tạo ra các Toolbox cho riêng mình.  
1.3. Các lớp dữ liệu  
Dữ liệu của Matlab thể hiện dƣới dạng ma trận (hoặc mảng) và có các kiểu dữ  
liệu đƣợc liệt kê sau đây:  
- Kiểu đơn single, kiểu này có lợi về mặt bộ nhớ nhƣng không đƣợc sử dụng  
trong các phép tính toán học vì có độ chính xác kém.  
- Kiểu double, kiểu này là kiểu thông dụng nhất của các biến trong Matlab.  
- Kiểu sqarse.  
- Kiểu uint8, uint16, …  
- Kiểu char.  
- MatLab còn có một số kiểu dữ liệu khác cao cấp hơn: kiểu cell,  
kiểu struct (bản ghi).  
9
   
1.4. Biến và cấu trúc mảng của biến trong MatLab  
1.4.1. Biến  
Thông thƣờng, kết quả của các biến đƣợc gán cho ans. Sử dụng dấu “=” ta có  
thể định nghĩa một biến, đồng thời gán giá trị cho biến đó. Khi nhập tên của một  
biến mà không gán giá trị, ta thu đƣợc giá trị hiện tại của biến. Tất cả các biến điều  
là biến global trong Workspace.  
Giống nhƣ những loại ngôn ngữ lập trình khác, Matlab có những quy định  
riêng về tên biến. Trƣớc tiên tên biến phải là một từ, không chứa dấu cách, và tên  
biến phải tuân thủ theo các quy tắc sau:  
Tên biến có phân biệt chữ hoa và chữ thƣờng.  
Ví dụ: Iterms, iterms, itErms và ITERMS là các biến khác nhau.  
Tên biến có thể chứa nhiều nhất 31 kí tự, sau kí tự thứ 31 sẽ bị lờ đi.  
Ví du: mophongvalaptrinhmatlab  
Tên biến bắt đầu phải bằng chữ cái, tiếp theo có thể là chữ số, dấu  
gạch dƣới.  
Ví dụ: mo_phong_va_lap_trinh_matlab, X356a_b_c  
Kí tự chấm câu không đƣợc phép dùng vì nó có những ý nghĩa đặc  
biệt  
Cùng với những quy định trên, Matlab có những biến đặc biệt trong bảng  
sau:  
Các biến đặt biệt Giá trị  
Gán giá trị cho biến  
=
Các phép tính  
+ - * / ^  
;
Nhập giá trị (còn giữ vai trò dấu cách khi nhập nhiều giá trị  
trong cùng một dòng)  
Dấu cách khi xuất nhiều giá trị trong cùng một dòng  
,
10  
   
Cấp chính xác tƣơng đối khi sử dụng giá trị dấu phẩy động  
Eps  
i j  
Inf  
Toán tử ảo  
Vô cùng (∞)  
Not a Number  
Hằng số π  
NaN  
Pi  
1.4.2. Cấu trúc mảng của biến  
Để tiện cho việc quản lý và sử dụng, ta có thể tập hợp nhiều biến lại trong một  
cấu trúc. Trong đó mỗi mảng có một tên riêng đặt giữa hai dấu ( „ „) có kèm theo giá  
trị. Một cấu trúc đƣợc tạo nên bởi lệnh struct(‘name_1’, value_1, ‘name_2’,  
value_2,…)  
Cấu trúc móc vòng  
Các cấu trúc đƣơng nhiên cũng có thể đƣợc tạo nên móc vòng với nhau. Ví dụ  
sau đây minh họa khả năng đó: Ta khai báo một cấu trúc có tên componist với mảng  
đầu tiên có tên là name, đƣợc gán giá trị là chuỗi kí tự ‘ Quang Ngai’. Một cấu trúc  
thứ 2 có tên datum với 3 mảng Day, Month và Year để cất giữ ngày, tháng và năm  
sinh. Sau đó ta gán cấu trúc datum vào mảng born của cấu trúc componist:  
>> componist = struct('name','Quang Ngai')  
componist =  
name: 'Quang Ngai'  
>> datum.day = 21;  
>> datum.month = 'March';  
>> datum.Year = 1989;  
>> componist.born = datum;  
>> componist  
componist =  
11  
 
name: 'Quang Ngai'  
born: [1x1 struct]  
Ta gán cho mảng name của cấu trúc componist giá trị mới là chuỗi ký tự „  
Pham Van Dong‟. Các giá trị của mảng born đƣợc gán trực tiếp:  
>> componist(2).name = 'Pham Van Dong';  
>> componist(2).born.Day = 18;  
>> componist(2).born.Month = 5;  
>> componist(2).born.Year = 2013;  
>> componist(2)  
ans =  
name: 'Pham Van Dong'  
born: [1x1 struct]  
>> componist(2).born  
ans =  
Day: 18  
Month: 5  
Year: 2013  
Cấu trúc componist lúc này mang đặc điểm cấu trúc của các vector và vì vậy  
nên có thể xử lý các phần tử của cấu trúc đó nhƣ là các vector. Trong ví dụ vừa nêu,  
các vector đó chính là hai mảng name và born:  
>> componist  
componist =  
1x2 struct array with fields:  
name  
born  
12  
Tóm lại: Trong chƣơng 1: Các khái niệm cơ bản, chúng ta cần nắm vững  
cách khởi tạo một file.m, hiểu đƣợc các loại dữ liệu trong Matbab, cũng nhƣ cách  
đặt tên biến và các loại biến đặc biệt. Đồng thời để cho tiện cho việc quản lý và sử  
dụng ta có khái niệm cấu trúc của biến, hiểu đƣợc cấu trúc móc vòng thông qua ví  
dụ trên.  
13  
CÂU HỎI ÔN TẬP CHƢƠNG 1  
Câu 1: Làm thế nào để khởi động Matlab?  
Câu 2: Làm thế nào để định nghĩa một biến?  
Câu 3: Các quy định khi đặt tên biến là gì?  
Câu 4: Làm thế nào để khai báo một ma trận?  
Câu 5: Cấu trúc mảng của biến là gì? Làm thế nào để khai báo một struct?  
Câu 6: Trình bày các lớp dữ liệu trong Matlab?  
14  
Chƣơng 2  
TÍNH TOÁN TRÊN CÁC MẢNG SỐ  
2.1. Biểu thức tính toán số  
2.1.1. Mảng đơn  
2.1.1.1. Cấu trúc các mảng cơ bản  
- Ðể tạo mảng, ta đặt các phần tử của mảng vào giữa hai dấu ngoặc vuông,  
giữa hai phần tử của mảng có thể là dấu cách hoặc dấu phẩy.  
- Với mảng có số lƣợng phần tử ít thì ta có thể nhập vào trực tiếp, nhƣng với  
mảng có số lƣợng lớn các phần tử thì ta có thể dùng các cách sau:  
x = first : last : tạo vectơ hàng x bắt đầu tại first, phần tử sau bằng phần tử trƣớc  
cộng với 1, kết thúc là phần tử có giá trị bằng hoặc nhỏ hơn last.  
x = first : increment : last : tạo vectơ hàng x bắt đầu tại first, giá trị cộng  
là increment, kết thúc là phần tử có giá trị bằng hoặc nhỏ hơn last.  
x = linspace(first,last,n): tạo vectơ hàng x bắt đầu tại first, kết thúc là last, có n  
phần tử.  
x = logspace(first,last,n): tạo vectơ hàng không gian logarithm x bắt đầu tại  
10 first, kết thúc tại 10 last, có n phần tử.  
Ví dụ:  
>> a=1:5  
a =  
1 2 3 4 5  
>> b = [6 7 8]  
b =  
6 7 8  
>> c = [a b]  
c =  
1 2 3 4 5 6 7 8  
15  
       
2.1.1.2. Vectơ hàng và vectơ cột  
Mảng chứa một hàng và nhiều cột, thƣờng gọi là vectơ hàng. Mảng có một cột  
và nhiều hàng gọi là vectơ cột.  
Ðể tạo vectơ cột, ta dùng dấu chấm phẩy để phân cách các phần tử. Ngoài ra,  
ta cũng có thể dùng các hàm linspace, logspace, hay từ các vectơ hàng, sau đó dùng  
phƣơng pháp chuyển vị.  
Ví dụ:  
>> x=linspace(0,pi,5)  
x =  
0 0.7854 1.5708 2.3562 2.1416  
>> y= x'  
y =  
0
0.7854  
1.5708  
2.3562  
2.1416  
2.1.2. Mảng nhiều chiều  
Đối với các MATLAB versions trƣớc 5.0, mảng chỉ có thể có một hoặc hai  
chiều. Từ MATLAB 5.0 trở lên thì số chiều của mảng đã tăng lên. Ví dụ:  
>> a = [1 0; 0 1]  
a=  
1
0
0
1
>> b = [2 2; 2 2]  
b=  
2
2
16  
 
2
2
>> c = [0 3; 3 0]  
c=  
0
3
3
0
>> d = cat(3,a,b,c)  
d(:,:,1)=  
1
0
0
1
d(:,:,2)=  
2
2
2
2
d(:,:,3)=  
0
3
3
0
>> size(d)  
ans=  
2
2
3
Tạo các mảng hai chiều a, b, c, sau đó ghép chúng lai với nhau thành mảng ba  
chiều bằng cách sử dụng hàm cat. Nhƣ vậy mảng d là mảng có hai hàng, hai cột, và  
ba trang. Mảng a tạo trang thứ nhất, b là trang thứ hai, và c là trang thứ ba. Thông  
số trang diễn tả chiều thứ ba của mảng, cung cấp một cách hình dung về mảng ba  
chiều nhƣ mảng hai chiều, các trang xếp thứ tự từ một cho đến cuối nhƣ trong một  
quyển sách. Đối với các mảng có số chiều cao hơn, không có tên chung, và nó cũng  
rất khó tƣởng tƣợng!  
17  
Thao tác với mảng nhiều chiều cũng giống nhƣ các thủ tục đƣa ra ở trên đối  
với mảng một chiều và hai chiều. Ngoài ra MATLAB còn cung cấp một số hàm  
thao tác trực tiếp đối với mảng nhiều chiều:  
s = size(A)  
Cho n_số chiều của A, trả về vector hàng s với n  
phần tử, phần tử thứ i là kích cỡ chiều thứ i của  
mảng A  
ndims(A)  
Số chiều của A, tƣơng tự nhƣ hàm length(size(A))  
permute(A, order)  
n_số chiều, tƣơng đƣơng với toán tử chuyển vị  
chấm.  
ipermute(A, order)  
shiftdim(A, n)  
squeeze(A)  
Ngƣợc với hàm permute(A, order)  
Thay đổi số chiều của mảng A bằng số nguyên n.  
Trả lại số chiều duy nhất của mảng, tƣơng đƣơng  
với trả lại số chiều lớn hơn ba.  
2.2. Khởi tạo các mảng số  
Với mảng có số lƣợng phần tử ít thì ta có thể nhập vào trực tiếp, nhƣng với  
mảng có số lƣợng lớn các phần tử thì ta dùng một trong hai cách sau:  
- Tạo một mảng bắt đầu là phần tử 0, sau bằng phần tử trƣớc cộng với 0.1,  
phần tử cuối là 1, tất cả các phần tử của mảng đƣợc nhân với pi:  
>> x= (0:0.1:1)*pi  
x=  
Columns 1 through 7  
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850  
Columns 8 through 11  
2.1991 2.5133 2.8274 3.1416  
- Tạo mảng gồm các phần tử của x bằng hàm linspace. Cú pháp của hàm này  
nhƣ sau:  
linspace(giá trị phần tử đầu, giá trị phần tử cuối, số các phần tử)  
18  
 
Ví dụ:  
>> x = linspace(0,pi,11)  
x=  
Columns 1 through 7  
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850  
Columns 8 through 11  
2.1991 2.5133 2.8274 3.1416  
Cách thứ nhất giúp ta tạo mảng mà chỉ cần vào khoảng cách giá trị giữa các  
phần tử (không cần biết số phần tử), còn cách thứ hai ta chỉ cần vào số phần tử của  
mảng (không cần biết khoảng cách giá trị giữa các phần tử).  
Ngoài các mảng trên, MATLAB còn cung cấp mảng không gian theo  
logarithm bằng hàm  
logspace. Cú pháp của hàm logspace nhƣ sau:  
logspace(số mũ đầu, số mũ cuối, số phần tử)  
Ví dụ:  
>> logspace(0,2,11)  
ans=  
Columns 1 through 7  
1.0000 1.5849 2.5119 3.9811 6.3096 10.0000 15.8489  
Columns 8 though 11  
25.1189 39.8107 63.0957 100.0000  
Tạo mảng, giá trị bắt đầu tại 100, giá trị cuối là 102, chứa 11 giá trị.  
Các mảng trên là các mảng mà các phần tử của nó đƣợc tạo lên theo một quy  
luật nhất định. Nhƣng đôi khi mảng đƣợc yêu cầu, nó không thuận tiện tạo các phần  
tử bằng các phƣơng pháp trên, không có một mẫu chuẩn nào để tạo các mảng này.  
Tuy nhiên ta có thể tạo mảng bằng cách vào nhiều phần tử cùng một lúc  
19  
Tải về để xem bản đầy đủ
pdf 116 trang Mãnh Khiết 12/01/2024 14220 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Giải tích mạch và mô phỏng trên máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_giai_tich_mach_va_mo_phong_tren_may_tinh.pdf