Tải bản đầy đủ (.docx) (22 trang)

Bài tập cơ bản Matlab Simulink . Bài tập lớn điểm A

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.18 MB, 22 trang )

Chương 2
Một số ứng dụng của Matlab
Simulink trong kĩ thuật
1) Ứng dụng Matlab Simulink vào giải các bài toán
1.1) Các phép toán đại số cơ bản
- Cộng, trừ, nhân ,chia hai số
( Để gọn màn hình thì ta có thể xem kết quả các biến ở Workspace )
với nhiều số ta cứ thực hiện bình thường với các phép tính + - * / và cũng
tuân theo những quy tắc trong toán học

Hình 2.1 Các phép toán ( Cộng , trừ nhân , chia ) trong Matlab
- Các hàm toán khác ( logarit , làm tròn , căn bậc hai , tìm số dư , ...)


Hình 2.2 Các hàm toán cơ bản khác
( Căn bậc hai , logarit,số dư,làm tròn,tìm góc pha,..) trong matlab
- Tính toán với vector , ma trận

Hình 2.3 Tính toán vector , ma trận trên Matlab
1.2) Các phép toán trên biểu thức


- Tính kết quả của một hàm khi thay biến bằng một hằng số
ví dụ 1: cho f(x) = x2 - 3x + 1 , tính giá trị f(x) khi x = 2

Hình 2.4 kết quả thực hiện tính giá trị hàm số
f(x) = x2 - 3x + 1 tại x = 2
Ví dụ 2 : cho f(xy) = x3 + 3xy + x2 + y2 – y3 , tính giá trị f(x) khi x = 1, y = 2

Hình 2.5 kết quả thực hiện tính giá trị hàm số
f(xy) = x3 + 3xy + x2 + y2 – y3 tại x = 1 và y = 2


- Giải phương trình : f(x) = 0 , g(x)= 0


Hình 2.6 Giải phương trình x2 – 2x + 1 = 0 ;
x2 - x – 2 = 0
- Giải hệ phương trình : f(xy) = 0 và g(xy) = 0 ;
Ta vẫn dùng lệnh solve chỉ có điều sau khi chạy xong lệnh solve(F ,G) thì ta
không nhìn thấy nghiệm ngay (Vì máy tính hiểu hệ phương trình là gồm 2 ma
trận và có 2 ẩn , vì thế nghiệm của hệ sẽ được lưu dưới dạng ma trận [ x ,
y ] ) muốn xem được nghiệm ta phải trỏ đến biến ( chứa nghiệm )

Hình 2.7 Giải hệ phương trình
x2 +3y – 8 = 0 và -3x + y + 1 = 0
Ta còn có thể giải hệ phương trình bằng simulink :
Ví dụ : Giải hệ Z1 + Z2 = 1
-Z1 + Z2 = 1
Để mô phỏng ta dùng các khối :
+ Hai khối Algebric Constraint trong thư viện Math để giải phương trình


+ Hai khối Sum trong thư viện Math để tạo phép tính
+ Hai khối Display trong thư viện Sink để hiển thị giá trị nghiệm
+ Khối Constant trong thư viện Sources để tạo giá trị 1

Hình 2.8 Giải hệ phương trình bằng simulink
- Tìm giới hạn của hàm số

Hình 2.9 Tính giới hạn của hàm số x2 – 3x + 2
Khi x tiến tới 0
- Tính đạo hàm của hàm số F(x)

Lệnh tổng quát :
diff ( F , x , n )
trong đó n là cấp lấy đạo hàm
Khi chỉ lấy đạo hàm cấp 1 thì ta chỉ cần viết
diff(F,x)


Hình 2.10 Tính đạo hàm hàm số F = x2 – 3x + 2
- Tính nguyên hàm , đạo hàm
Lệnh int(F,x,a,b) có nghĩa là :
Tính tích phân của hàm F theo biến x với x đi từ a đến b

Hình 2.11 Tính tích phân của hàm F = x2 + 2x – 1
khi x chạy từ -1 => 1
1.3) Vẽ đồ thị
a) Ezplot
Lệnh dễ vẽ đồ thị nhất là ezplot và nó có thể gọi ra từ Symbolic Toolbox.
Trong dạng lệnh ezplot(f), nó sẽ vẽ biểu thức f =f(x) qua miền x mặc định (2π,2π). Trong dạng lệnh ezplot(f, [a,b]), nó sẽ vẽ hàm f = f(x) với a < x < b.
VD1 : Vẽ hàm cos(x) , sin (x)


Hình 2.12 Biểu diễn hàm Sin (x) và Cos(x)
Ví dụ 2 : vẽ đồ thị hàm x3 – 2x +1 , x chạy từ -2 => 2

Hình 2.13 Đồ thị hàm số x3 – 2x + 1
b) plot
Lệnh plot trong MATLAB là lệnh được sử dụng nhiều trong các lệnh vẽ đồ thị.
Với dạng plot(x,y) nó sẽ vẽ vector x ngang với vector y. Thông thường vector y
là một hàm số của vector x, như ví dụ sau đây.
Ví dụ1 : Để thực hiện vẽ hàm f(x) = sin(x2 /2) trong 100 đoạn bằng nhau

từ -1 đến 7, ta gõ như sau :


Hình 2.14 Hàm Sin(x2/2) lấy từ 1 => 7
Lệnh plot đưa vào nhiều dạng tham số plot(x,y,s). Giá trị s ở đây là một chuỗi
các ký tự nằm giữa hai dấu ngoặc đơn, biểu thị cho màu sắc, kiểu đường và
ký tự hiễn thị. Các tùy chọn màu trong lệnh plot (hoặc fplot) là:
b Blue
g Green
r Red
c Cyan
m Mangeta
y Yellow
k Black

Hình 2.15 Tô màu cho đồ thị của hàm hàm Sin(x2/2)
1.4) Nhập xuất dữ liệu ra màn hình


a) hàm nhập dữ liệu
Cú pháp :

x = input ( 'prompt' )

Trong đó :
input : Từ khoá của hàm nhập dữ liệu
x : tên biến được gán giá trị nhập vào.
promp : dòng text mà người sử dụng đánh vào.
Diễn đạt : biến x sẽ có giá trị bằng giá trị mà người sử dụng nhập vào
b) hàm xuất dữ liệu ra màn hình

Cú pháp :
disp ( x )
disp( ‘text’ )
Trong đó :
disp : Từ khoá của hàm xuất dữ liệu
x : tên biến hoặc các giá trị số cần xuất ra màn hình
text : dòng text mà người sử dụng cần xuất ra màn hình
Ví dụ : Nhập vào chiều dài , chiều rộng để tính diện tích hình chữ nhật
B1 : Ta vào script file để viết chương trình
B2 : Sau đó ra cửa sổ command window nhập 2 số a , b ( ứng với chiều dài và
chiều rộng )


Hình 2.16 Tính diện tích hình chữ nhật
1.5 ) Cấu trúc điều khiển
a) cấu trúc if
Ví dụ 1 : Giải phương trình ax2 + bx + c = 0
Trong đó : a , b , c là 3 số yêu cầu người dùng nhập vào bất kì để tính
- B1: Ta viết code trong script file
if điều kiện
Nhóm lệnh
end
if điều kiện
Nhóm lệnh 1
else
Nhóm lệnh 2
end
Viết xong code ta lưu file lại với đuôi .m
B2: nhấn F5 để chạy chương trình , sang cửa sổ command window để nhập a ,
b c và xem kết quả



Hình 2.17 Giải phương trình ax2 + bx + c = 0 bằng nhóm lệnh if else

Ví dụ 2 : Bài toán phân loại học sinh: điểm 9-10 xếp loại giỏi, điểm 7-8 xếp loại
khá, điểm 5-6 xếp loại trung bình; điểm 1,2,3,4 xếp loại yếu; nếu điểm vào
không phải số nguyên nằm giữa 1 và 10 thì thông báo điểm không hợp lệ.
Ta vào script file để viết chương trình rồi sau đó ra cửa sổ command window
để nhập số điểm , ta sẽ nhận được kết quả như sau


b) Hàm vòng lặp for
for variable = expression
statements
end

variable = expression : Điều kiện của vòng lặp
statements : Lệnh hoặc nhóm lệnh thực thi của vòng lặp.
Nghĩa là : Nếu thỏa điều kiện thì sẽ thực hiện lệnh của vòng lặp.
Đến khi không thỏa điều kiện thì sẽ thoát ra khỏi vòng lặp.

ví dụ : Tính tổng S = 0 + 1 + 2 + ....+ n ;


Bước 1 : Viết code trong script file

B2: nhấn F5 để chạy chương trình , sang cửa sổ command window để nhập n
và xem kết quả :

c) Vòng lặp while

Được sử dụng khi số lần lặp không được biết trước. Quá trình lặp sẽ chấm dứt khi
một điều kiện xác định nào đó được thỏa. Cấu trúc của vòng lặp while như
sau:
Cú pháp :
while expression
statements
end
Trong đó :


expression : Điều kiện của vòng lặp
statements : Lệnh hoặc nhóm lệnh thực thi của vòng lặp.
Nếu thỏa điều kiện thì sẽ thực hiện lệnh của vòng lặp.
Hàm while được sử dụng khi chưa biết số lần lặp, trong khi hàm for được sử dụng
khi đã biết rõ số lần lặp.
Ví dụ : Tính tổng S = 0 + 1 + 2 + ....+ n ;
Bước 1 : Viết code trong script file

Bước 2 : nhấn F5 để chạy chương trình , sang cửa sổ command window để nhập n
và xem kết quả

d) Hàm vòng lặp switch-case


Cấu trúc switch-case cho phép chương trình có nhiều lựa chọn và thực hiện chỉ một
trong những nhánh này, tùy thuộc vào giá trị cuả biểu thức đầu vào. Cấu trúc
switch-case có dạng như sau:
switch
case


biểu thức đầu vào (vô hướng hoặc chuỗi kí tự)
giá trị 1
nhóm lệnh 1

case

giá trị 2
nhóm lệnh 2

case

giá trị n
nhóm lệnh n

otherwise
nhóm lệnh n+1
end

Ví dụ : Bài toán phân loại học sinh: điểm 9-10 xếp loại giỏi, điểm 7-8 xếp loại
khá, điểm 5-6 xếp loại trung bình; điểm 1,2,3,4 xếp loại yếu; nếu điểm vào
không phải số nguyên nằm giữa 1 và 10 thì thông báo điểm không hợp lệ.
Bước 1 : Viết code trong script file

Bước 2 : nhấn F5 để chạy chương trình , sang cửa sổ command window để
nhập n và xem kết quả


1.6) Control Systeam Toolbox
a) Mô hình hóa các hệ tuyến tính


b) Khảo sát các đặc tính của các khâu động học cơ bản
- Các khâu động học cơ bản là :
• Khâu tích phân


• Khâu tỉ lệ
• Khâu vi phân
• khâu quán tính bậc nhất
• khâu quán tính bậc hai

Để khảo sát các đặc tính trong miền thời gian h(t) , w(t) ; các đặc tính trong
miền tần số với đồ thị nyquist và đồ thị bode ta viết lệnh trong matlab như
sau :

Sau mỗi câu lệnh ta nhận được các đường đặc tính sau :

Hàm quá độ h(t)

Hàm trọng lượng w(t)


Đặc tính tần biên pha của hệ thống

Đặc tính tần loga

b) Các phép tính số học
- Phép cộng hay phép trừ
Khi mắc song song hai hệ với nhau với đầu vào như nhau thì ta sẽ sử dụng
phép cộng hay trừ để tính hai tín hiệu đầu ra .
- Phép nhân

Phép nhân hai hệ thống LTI ứng với việc mắc nối tiếp hai hệ đó . Khi mắc nối
tiếp hai hệ có cấu trúc ma trận cần phải chú ý đến trình tự của hai hệ
c) Ghép nối mô hình LTI
- Ghép theo đường chéo :
sys = append(sys1 , sys2) ;
- Ghép song song :
sys = parallel ( sys1,sys2,inp1,inp2,out1,out2)
- Ghép tuần tự
sys = series ( sys1,sys2,outputs1,outputs2)
- Ghép có phản hồi
sys = feedback(sys1 , sys2);
Ví dụ : cho mô hình hệ thống sau , tìm hàm truyền tương đương của hệ
thống :
- Dùng simulink để sơ đồ khối hóa một hệ thống


- Ta cho đầu ra của hệ thống vào 1 khối hiển thị scope để hiển thị đặc tính của
hệ thống

- Phân tích mô hình ta thấy : G1 ghép song song với G3 , ta gọi hệ tổng là S1 ;
G2 và H1 ghép phản hồi , ta gọi hệ này là S2 ; ta thấy hệ G13 nối tiếp với hệ
GH ( ghép tuần tự ) gọi hệ này là S và cuối cùng hệ S lại ghép phản hồi với
một khâu tỉ lệ là 1 gọi hệ này là W ( đây là hàm truyền tương đương của hệ
thống )
- Tiến hành viết trên matlab


- tiếp theo để vẽ đặc tính của hệ thống ta dùng lệnh step(W) thì ta sẽ thu được
đường bên phải ( hình dưới ) so sánh với đường đặc tính khi mô phỏng trong
simulink thì hai đường này là giống nhau .

=> muốn khảo sát đặc tính của một hệ thống ta có thể dùng Matlab hoặc
simulink đều được . Nhưng với simulink thì ta thao tác dễ dàng , trực quan
hơn .
d) Mô hình hóa hệ thống liên tục đơn giản :
Ví dụ : phương trình vi phân ẋ(t) = -2x(t) + u(t)
Với u(t) là một sóng hình chữ nhật có biên độ bằng 1 và tần số 1rad/s . Để mô
phỏng trong Simulink ta dùng khối :
+ Khối Gain để tạo hệ số 2
+ Khối Sum để tạo phép tính
+ Khối Scope để xem kết quả
+ Khối Signal Generator để tạo nguồn
+ Khối Integrator để tích phân
Sau khi mô phỏng ta có kết quả như sau :


6) Công cụ tính toán tìm tối ưu
- Hàm vector và hệ phương trình
Ví dụ : giải hệ phương trình : x1 + 2x2 + 3x3 = 1
2x1 +3x2 + 6x3 = 3
3x1 + 2x2 + 7x3 = 0
Ta có thể viết dưới dạng ma trận :
Ax = b ; x = [ x1 x2 x3 ]T
sau đó ta sử dụng matlab để nhập các ma trận rồi giải :

- Tìm cực tiểu cho hàm phi tuyến
Ví dụ : Tìm cực đại , cực tiểu của y = (x/3 – x^3)*( e^-2x^2)


=> điểm cực tiểu của hàm y = (x/3 – x^3)*( e^-2x^2) có tọa độ là :
(1 ; -0,0902)

Để tìm cực đại ta cũng làm tương tự ( gõ code thay min = max )

=> điểm cực đại của hàm y = (x/3 – x^3)*( e^-2x^2) có tọa độ là :
(-1 ; 0,0902)



×