Aim This unit gives learners the opportunity to develop their understanding of Ordinary Differential Equations and Partial Differential Equations (ODEs and PDEs). Learners will gain skills in algorithm design and programming techniques in MATLAB Simulink; for the modelling, simulation and analysis of dynamic engineering systems. Unit abstract Computerbased modelling and simulation of dynamic engineering systems is a key employability skill for engineering graduates. MATLABSimulink is the industry standard for this activity and it is therefore vital that learners are well versed in using MATLABSimulink to model and solve engineering problems and to simulate engineering systems. Learning outcomes 1 and 2 of this unit will develop learners’ understanding of the formulation and solution of ordinary and partial differential equations. Learning outcomes 3 and 4 then take learners through the processes, procedures and software routines on MATLAB for modelling and graphical analysis of dynamic engineering problems described by ODEs and PDEs. Learning outcome 5 introduces learners to the powerful Simulink simulation environment that enables simulation of complex interconnected dynamic engineering systems.
Trang 1Biên soạn: LẠI MINH HỌC
BÀI GIẢNG
MÔ HÌNH HÓA VÀ MÔ PHỎNG
F/503/7343
BỘ XÂY DỰNG TRƯỜNG CAO ĐẲNG CÔNG NGHỆ QUỐC TẾ LILAMA2
Km 32 Quốc Lộ 51, Huyện Long Thành, Tỉnh Đồng Nai, Việt Nam Tel: +84 2513 558 259 Fax: +84 2513 558 711
ĐỒNG NAI, 2022
Trang 2ThS LẠI MINH HỌC – Khoa KSTH Page 2
CHƯƠNG 1: CÁC TỐN TỬ CƠ BẢN CỦA MATLAB
1 Các phím cơ bản:
2 Các toán tử số học (Arithmetic Operators):
Toán
+ Cộng ma trận hoặc đại lượng vô hướng (các ma trận phải có cùng kích thước)
- Trừ ma trận hoặc đại lượng vô hướng (các ma trận phải có cùng kích thước)
* Nhân ma trận hoặc đại lượng vô hướng (ma trận 1 phải có số cột bằng số hàng của
.\ Thực hiện chia ngược từng phần tử của 2 ma trận hoặc 2 đại lượng vô hướng (các
ma trận phải có cùng kích thước)
/ Thực hiện chia thuận 2 ma trận hoặc đại lượng vô hướng (A/B tương đương với A*inv(B))
./ Thực hiện chia thuận từng phần tử của ma trận này cho ma trận kia (các ma trận phải có cùng kích thước)
^ Lũy thừa ma trận hoặc các đại lượng vô hướng
.^ Lũy thừa từng phần tử ma trận hoặc đại lượng vô hướng (các ma trận phải có cùng kích thước)
Trang 3Số phức Z=a+jb
Trang 4ThS LẠI MINH HỌC – Khoa KSTH Page 4
CHƯƠNG 2 : MA TRẬN VÀ CÁC PHÉP TOÁN VỀ MA TRẬN TRONG MATLAB
2.1 Khái niệm
Các dữ liệu đưa vào xử lý trong MATLAB đều dưới dạng ma trận Ma trận A có n hàng, m cột được gọi là ma trận cỡ n m Được ký hiệu Anm, phần tử aij của ma trận Anm là phần tử nằm ở hàng thứ i, cột j Ta chú ý một số ma trận sau:
- Ma trận đơn ( số đơn lẻ ) là ma trận 1 hàng 1 cột
- Ma trận hàng ( 1 m ) số liệu được bố trí trên một hàng
Trang 5- Ma trận cột ( n 1) số liệu được bố trí trên 1 cột
2.1.1 Qui định để định nghĩa một ma trận trong Matlab
Tên ma trận (có thể đến 31 ký tự), bắt đầu phải bằng chữ cái sau đó có thể là số, chữ cái, các ký
tự đặc biệ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, các phần tử của ma trận được đóng bằng dấu ngoặc vuông ([]), các phần tử trong trong cùng một hàng được cách nhau bởi ký tự trống hoặc dấu phẩy (, ), các phần tử thuộc các hàng khác nhau cách nhau bởi dấu (;)
2.1.2 Các phương pháp nhập một ma trận
+ Liệt kê trực tiếp, ví dụ lệnh:
>> A =[1 2 3; 4 5 6 ; 7 8 9]
Kết quả cho ra một ma trận có 3 hàng, 3 cột
+ Nhập thông qua lệnh input, ví dụ lệnh:
>> input('Nhap gia tri cho ma tran A = ')
Nhap gia tri cho ma tran A = [1 23;4 5 6;7 8 9]
>> syms sinx cosx a
>> C = [ sinx cosx; a cosx] cho ta ma trận:
C =
Trang 6ThS LẠI MINH HỌC – Khoa KSTH Page 6
2.2.1 Tạo ma trận véctơ : việc tạo ma trận véc tơ được thực hiện theo công thức sau:
Biến = giới hạn đầu : bước chạy : gới hạn cuối
Trong đó: Giới hạn đầu, giới hạn cuối, bước chạy: là các số thực, bước chạy có thể dương hoặc
Chú ý : Trong trường hợp giới hạn trên, gới hạn dưới đều 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, ví dụ:
>> C = 1:5 ta được kết quả:
Trang 72.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 gọi chúng thông qua chỉ số của từng phần tử với các nội dung: Tên của ma trận (Chỉ số hàng, chỉ số cột), ví dụ:
Chú ý: Trong trường hợp ta muốn gọi tất cả các phần tử trong một hàng hoặc tất cả các phần tử
trong một cột ta dùng toán tử hai chấm (:), ví dụ:
>> C = A(2,:) (xuất các phần tử thuộc dòng 2 của ma trận A)
Trang 8ThS LẠI MINH HỌC – Khoa KSTH Page 8
4.3.1 Ma trận không (zeros): Tất cả các phần tử trong ma trận đều bằng 0
>> C = zeros (2,3) (tạo ma trận zêro có 2 hàng, 3 cột)
0 0 0
4.3.2 Ma trận đơn vị (ones): Tất cả các phần tử trong ma trận đều bằng 1
>> C = ones (2,3) (tạo ma trận đơn vị có 2 hàng, 3 cột)
4.3.3 Ma trận ma phương Magic: Ma trận này có tổng giá trị các phần tử trên hàng = tổng 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, ví dụ:
Trang 91 0 0
2.4 CÁC PHÉP TOÁN VECTOR
Trang 112.5.1 Phép chuyển vị: Chuyển đổi hàng thành cột và ngược lại Thực hiện phép chuyển vị bằng toán
tử dấu nháy đơn ( ' ), ví dụ:
2.5.2 Tổng, hiệu 2 ma trận: Phép cộng và trừ ma trận được thực hiện với các ma trận có cùng kích
thước, các phần tử tương ứng của 2 ma trận được cộng (hoặc trừ) với nhau theo công thức: Cij = Aij
Trang 14Toán tử quan hệ (Relational Operators):
< So sánh nhỏ hơn
Trang 15> So sánh lớn hơn
>= So sánh lớn hơn hoặc bằng
<= So sánh nhỏ hơn hoặc bằng
= = So sánh bằng nhau cả phần thực và phần ảo
-= So sánh bằng nhau phần ảo
a) Giải thích:
Các toán tử quan hệ thực hiện so sánh từng thành phần của 2 ma trận Chúng tạo ra một ma trận có cùng kích thước với 2 ma trận so sánh với các phần tử là 1 nếu phép so sánh là đúng và là 0 nếu phép so sánh là sai
Phép so sánh có chế độ ưu tiên sau phép toán số học nhưng trên phép toán logic
b) Ví dụ:
thực hiện phép so sánh sau:
» x=5 % đầu tiên ta nhập x=5
x =
5
» x>=[1 2 3;4 5 6;7 8 9] %so sánh trực tiếp x (x là 5) với ma trận
ans = % rõ ràng các phầ tử 1,2,3,4,5 đều <= 5
Trang 161 2 3
4 5 6
7 8 9
» x==A % so sánh x và A
ans = % tất cả các phần tử đều đúng
» x=0:.001:15;
» y=4.*x+5.*x.^2+6.*exp(x);
Như vậy ta đã thiết lập được hàm số 2 x
y=4x+5x +6.e và khảo sát hàm trong khoảng từ 0 đến
15, cĩ thể khảo sát những hàm số sẵn cĩ trong Matlab
5 Ký tự đặc biệt (Special Characters):
[] Khai báo vector hoặc ma trận
Trang 17() Thực hiện phép toán ưu tiên, khai báo các biến và các chỉ số
của vector
= Thực hiện phép gán
‘ Chuyển vị ma trận tìm lượng liên hiệp của số phức
Điểm chấm thập phân
, Phân biệt các phần tử của ma trận và các đối số trong dòng
lệnh
; Ngăn cách giữa các hàng khi khai báo ma trận
% Thông báo dòng chú thích
! Mở cửa sổ MS – DOS
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ả:
D = 0 2 4 6 8 10 Phép tính được dựng trước, Matlab tự động tính tốn và cho kết quả sau từ ans Với hệ thống kí tự và
kí hiệu riêng matlab cho phép viết tường minh các phép tính
Ví dụ:
Trang 21CHƯƠNG 3: MỘT SỐ ỨNG DỤNG CƠ BẢN CỦA MATLAB
3.1 Nhân 2 đa thức: Để nhân 2 đa thức, ta dùng lệnh conv, ví dụ cho 2 đa thức:
y1 = anxn + an-1xn-1 + + a0
y2 = bnxn + bn-1xn-1 + + b0
Để nhân 2 đa thức trên, ta thực hiện theo các bước sau:
+ Lập 2 ma trận hàng với tên là y1và y2 có các phần tử là các hệ số từ an đến a0 và bn đến b0giảm dần theo bậc của phương trình, hệ số nào không có thì ghi 0;
+ Nhân 2 đa thức bằng lệnh conv: y3 = conv(y1y2), ví dụ cho 2 đa thức: y 1 = x2 + 3x + 5; y2 = 3x2 + 4x ta thao tác theo các lệnh sau:
Ví dụ: giải phương trình sau: x5
- 2x4 + 5x2 - 1= 0, ta thao tác theo các lệnh sau:
Trang 22-1.1606 -0.4744 0.4627
3.3 Biết nghiệm tìm lại phương trình: ( lệnh poly )
Ví dụ: Tìm phương trình biết các nghiệm của nó là 1 và -5, ta thao tác theo các lệnh sau:
>>A = [1 – 5 ];
>> poly(A)
ans =
1 4 -5
3.4 Chuyển từ phương trình hệ số sang phương trình có chứa cả tham số: (poly2sym)
Ví dụ: chuyển phương trình có các hệ số: a4 = 1; a3 = 3; a2 = 0; a1 = -5 sang phương trình chứa tham số:
Trang 23% Giai he phuong trinh dai so tuyen tinh
Lưu chương trình và cho chạy, ta thu được các nghiệm:
X =
11.0000
-3.0000
Trang 24-1.0000
3.6 Giải hệ phương trình đại số phi tuyến:( Lệnh solve)
Để giải hệ phương trình đại số phi tuyến, ta dùng lệnh solve với cú pháp:
[biến 1, biến 2, …] = solve('phương trình 1', 'phương trình 2'…)
3.7 Giải hệ phương trình tham số: Để giải hệ phương trình tham số ta dùng lệnh solve với cú pháp
tương tự như trên, ví dụ cần giải hệ:
Trang 25Thực hiện lệnh: >> [u,v] = solve('a*u^2 + v^2 = 0','u - v = 1') ta được
3.8 Giải hệ phương trình vi phân thường: ( lệnh dsolve)
- Đối với phương trình vi phân không có điều kiện đầu ta sử dụng cú pháp: >> y = dsolve('phương trình')
Ví dụ: Giải phương trình vi phân: x' + ax + 1 = 0, ta thực hiện lệnh:
- Đối với hệ phương trình vi phân, cú pháp lệnh là:
>> [biến 1, biến 2,…] = dsolve('phương trình 1', 'phương trình 2', …)
Ví dụ: Giải hệ phương trình:
dxydtdyxdt
Trang 263.9 Giải hệ phương trình vi phần theo hàm có sẵn của Matlab:
Ví dụ: Cho hệ phường trình vi phân:
với các điều kiện đầu: y1(0) = 0; y1(0) = 1; y3(0) = 1
Chương trình mô tả phương trình vi phân dạng M-file:
function dy = rigid(t,y)
dy = zeros(3,1);
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
Thời gian giải phương trình vi phân Tspan =[0 12], vector điều kiện đầu [0 1 1]
>>options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
>>[t,y] = ode45('rigid',[0 12],[0 1 1],options);
Trang 28Inv: ma trận nghịch đảo
Trang 33CHƯƠNG 4 ĐỒ HOẠ TRONG MATLAB
1 Các lệnh vẽ: MATLAB cung cấp một loạt hàm để vẽ biểu diễn các vec tơ số liệu cũng như giải
thích và in các đường cong này
plot đồ họa 2‐D với số liệu 2 trục vơ hướng và tuyến tính
plot3 đồ họa 3‐D với số liệu 2 trục vơ hướng và tuyến tính
polar đồ hoạ trong hệ toạ độ cực
loglog đồ hoạ với các trục logarit
semilogx đồ hoạ với trục x logarit và trục y tuyến tính
semilogy đồ hoạ với trục y logarit và trục x tuyến tính
plotyy đồ hoạ với trục y cĩ nhãn ở bên trái và bên phải
x,y: vẽ giá trị x theo giá trị y
linetype: kiểu phần tử tạo nên nét vẽ bao gồm 3 thành phần:
- Thành phần thứ nhất là các ký tự chỉ màu sắc:
Ký tự Loại nét vẽ
- Đường liền nét : Đường chấm chấm
- Đường gạch chấm Đường nét đứt đoạn
- Thành phần thứ hai là các ký tự chỉ nét vẽ của đồ thị:
- Thành phần thứ ba là các ký tự chỉ loại điểm đánh dấu gồm:., o, x, +, *
Trang 35Vẽ đồ thị dạng bậc thang
Trang 363 Ghi nhãn lên các trục toạ độ: MATLAB cung cấp các lệnh ghi nhãn lên đồ hoạ gồm :
title thêm nhãn vào đồ hoạ
xlabel thêm nhãn vào trục x
ylabel thêm nhãn vào trục y
zlabel thêm nhãn vào trục z
legend thêm chú giải vào đồ thị
text hiển thị chuỗi văn bản ở vị trí nhất định
Trang 42Bài 6.11: Khảo sát hàm đa thức đơn biến tìm giá trị cực trị
Trang 43Hàm số có cực đại là 1,5132 tại x=0
Hàm số có hai cực tiểu là 1 khi x=1;
Bài 6.12: khảo sát hàm số đa biến:
» [x,y]=meshgrid(-3:0.05:3);
» u=4.*sin(pi.*x-8)-y./4;
» mesh(x,y,u)
Vẽ được đồ thị hàm số hai biến x,y trong
hệ tọa độ Oxy Mà nếu dùng các công cụ
Vận dụng Matlab vào giảng dạy chương “Dao động cơ học”
Phần kiến thức chương “Dao động cơ học” chủ yếu sử dụng mối quan hệ hàm cos, hoặc sin để khảo sát trạng thái dao động của vật Người giáo viên có thể sử dụng phần mềm Matlab để vẽ đồ thị nhằm giúp các em thấy rõ một dao động hình sin, hay còn gọi là dao động điều hòa Biểu diễn sự phụ thuộc của ly độ vào thời gian đối với dao động điều hòa và dao động tắt dần trong thời gian một vài chu kì dao động, giúp cho học sinh được trực tiếp quan sát kết quả
Kết hợp với việc lấy số liệu trực tiếp từ đồ thị bằng ginput để học sinh ghi lại và so sánh kết quả với sự tính toán trực tiếp ở ngoài
Cùng 1 lúc có thể vẽ cả 4 đồ thị phụ thuộc x(t), v(t), a(t), W(t) trong cùng một “Function” ở các hệ tọa độ khác nhau để so sánh về pha
Khi tổ chức thực hành thu được kết quả sau:
Nội dung kiến thức 1 Lập trình bằng Matlab
Phương trình dao động,
đồ thị phụ thuộc ly độ,
function daodong=lydo1(m,A,w,fi,t);
Trang 44vận tốc, gia tốc thời gian,
ginput(1) v=-A.*w.*sin(w.*t+fi);
figure(2) plot(t,v,'-o');
a=-(A.*w.^2).*cos(w.*t+fi);
figure(3) plot(t,a,'+-');
W=0.5.*m.* v.^2;
figure(4) plot(t,W,'a');
xlabel('thoigian(s)') ylabel('dong nang(J)')
Nội dung kiến thức 2 Lập trình bằng Matlab
Khảo sát dao động của
con lắc lò xo có độ cứng
k, có khối lượng m, pha
ban đầu , biên độ A
function daodong=lydo2(k,m,A,fi,t);
w=sqrt(k./m);
x=A.*cos(w.*t+fi);
Trang 45ginput(1) v=-A.*w.*sin(w.*t+fi);
figure(2) plot(t,v,'-o');
a=-(A.*w.^2).*cos(w.*t+fi);
figure(3) plot(t,a,'+-');
figure(1) plot(t,x,'*-');
ginput(1) v=-A.*w.*sin(w.*t+fi);
Trang 46figure(2) plot(t,v,'-o');
a=-(A.*w.^2).*cos(w.*t+fi);
figure(3) plot(t,a,'+-');
Nội dung kiến thức 4 Lập trình bằng Matlab
Khảo sát dao động của
figure(1) plot(t,x,'*-');
xlabel('thoigian(s)') ylabel('lydo(m)');
ginput(1) v=-A.*w.*sin(w.*t+fi);
figure(2) plot(t,v,'-o');
xlabel('thoigian(s)') ylabel('vantoc(m/s)');
Trang 47a=-(A.*w.^2).*cos(w.*t+fi);
figure(3) plot(t,a,'+-');
xlabel('thoigian (s)') ylabel('giatoc (m2/s)');
Kết quả hình ( chỉ lấy đồ thị x-t để minh họa)
Nội dung kiến thức 5 Lập trình bằng Matlab
Bài toán dao động tắt dần
ginput(1) v=-A.*w.*sin(w.*t+fi);
figure(2) plot(t,v,'-o');
a=-(A.*w.^2).*cos(w.*t+fi);
figure(3) plot(t,a,'+-');
figure(4) plot(t,x,v,a);
Trang 48x10=A1.*cos(fi1);
x20=A2.*cos(fi2);
x0=x10+x20;
A=max(x) fi0=acos(x0./max(x))
Trang 492 Vận dụng Matlab vào giảng dạy chương “Sóng cơ học”,và kiến thức phần trộn sóng điện từ
Như các đồng chí đã biết sóng cơ học là các dao động được lan truyền trong môi trường vật chất Tại một thời điểm t=t0 nhất định thì các phần tử vật chất được sắp xếp theo một dạng hình sin trong không gian Vậy chúng ta hãy cùng nhau khảo sát hình dạng, li độ cũng như bước song bằng phần mềm Matlab
Nội dung kiến thức 8 Lập trình bằng Matlab
Trang 50M=ginput(1);x1=M(1);
N=ginput(1);x2=N(1);
L=x2-x1 v=L.*w./(2.*pi);
figure(2) meshz(x,y,u);
figure(2) meshc(x,y,u);
Trang 51Nội dung kiến thức 10 Lập trình bằng Matlab
Giao thoa sóng, vẽ hình đồ họa
để chứng minh tập hợp những
điểm dao động cực đại và
những điểm dao động cực tiểu
figure(2) meshz(x,y,um);
Trang 52» L=0.8;
» t=2;
»
song3(A,w,x1,y1,x2,y2,x,y,L,t)
Nội dung kiến thức 11 Lập trình bằng Matlab
Giao thoa sóng trên dây (sóng
dừng) x là tọa độ của điểm
dao động trên dây, x1, x2 tọa
độ hai đầu dây (x1≤x≤x2) thỏa
Nội dung kiến thức 12 Lập trình bằng Matlab
Bài toán về sóng vô tuyến
Ghép một sóng cơ vào một
function songvotuyen=song4(w1,w2,A1,A2,t);
Trang 53sóng cao tần x1=A1.*cos(w1.*t);
x2=A2.*cos(w2.*t);
x=x1.*x2;
figure(1) plot(t,x) ylabel('lydotonghop(cm)') xlabel('thoigian(s)')
Vận dụng Matlab trong giảng dạy chương “Dòng điện xoay chiều”
Ở chương III, kiến thức không nhiều, hầu như chúng ta tập trung kiến thức vào mạch RLC mắc nối tiếp
Bài toán về công suất tiêu thụ điện năng, và giá trị hiệu dụng được giải như sau:
Nội dung kiến thức 13 Lập trình bằng Matlab
Bài toán về công suất: function giatri=hieudung(U0,I0,w,fi,delt,t)
Trang 54Kết luận: Như vậy bằng việc sử dụng hàm gần đúng, với
độ chia nhỏ chính xác 5.10-6, matlab đã tính cho chúng ta giá trị công suất thực của mạch điện Sai số là 0,005% - sai
số rất nhỏ Như vậy có thể kết luận
T
0 0 0
Nội dung kiến thức 14 Lập trình bằng Matlab
Giá trị cực đại Vẽ đồ thị
cống suất phu thuộc vao
điện dung C của tụ điện, rồi
từ đó dùng hàm ginput để
function giatri=cucdai(R,L,C,U) ZL=100.*pi.*L;
ZC=1e6./(100.*pi.*C);
Trang 55tìm giá trị cực đại, và điện
dung C làm cho công suất
đạt cực đại
Chương trình bên trái lập
cho công suất toàn mạch
po=ginput(1) Pmax=po(2) C=po(1)
Nội dung kiến thức 15 Lập trình bằng Matlab
Bài 1: Cho mạch điện như
hình vẽ R, L không đổi , C
function hieudienthe=cucdai1(R,L,C,U);