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.
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 Biên soạn: LẠI MINH HỌC BÀI GIẢNG MƠ HÌNH HĨA VÀ MƠ PHỎNG F/503/7343 ĐỒNG NAI, 2022 ThS LẠI MINH HỌC – Khoa KSTH Page CHƢƠNG 1: CÁC TOÁN TỬ CƠ BẢN CỦA MATLAB Các phím bản: Các toán tử số học (Arithmetic Operators): Toán tử Công dụng + Cộng ma trận đại lượng vô hướng (các ma trận phải có kích thước) - Trừ ma trận đại lượng vô hướng (các ma trận phải có kích thước) * Nhân ma trận đại lượng vô hướng (ma trận phải có số cột số hàng ma trận 2) .* Nhân phần tử ma trận đại lượng vô hướng (các ma trận phải có kích thước) \ Thực chia ngược ma trận đại lượng vô hướng (A\B tương đương với inv (A)*B) .\ Thực chia ngược phần tử ma trận đại lượng vô hướng (các ma trận phải có kích thước) / Thực chia thuận ma trận đại lượng vô hướng (A/B tương đương với A*inv(B)) ./ Thực chia thuận phần tử ma trận cho ma trận (các ma trận phải có kích thước) ^ Lũy thừa ma trận đại lượng vô hướng Lũy thừa phần tử ma trận đại lượng vô hướng (các ma trận phải có kích thước) ^ ThS LẠI MINH HỌC – Khoa KSTH Page Số phức Z=a+jb ThS LẠI MINH HỌC – Khoa KSTH Page CHƢƠNG : MA TRẬN VÀ CÁC PHÉP TOÁN VỀ MA TRẬN TRONG MATLAB 2.1 Khái niệm Các liệu đưa vào xử lý MATLAB dạng ma trận Ma trận A có n hàng, m cột gọi ma trận cỡ n m Được ký hiệu Anm, phần tử aij ma trận Anm phần tử nằm hàng thứ i, cột j Ta ý số ma trận sau: - Ma trận đơn ( số đơn lẻ ) ma trận hàng cột - Ma trận hàng ( m ) số liệu bố trí hàng ThS LẠI MINH HỌC – Khoa KSTH Page - Ma trận cột ( n 1) số liệu bố trí cột 2.1.1 Qui định để định nghĩa ma trận Matlab Tên ma trận (có thể đến 31 ký tự), bắt đầu phải chữ sau số, chữ cái, ký tự đặc biệt Tên đặt bên trái dấu bằng, bên phải dấu phần tử ma trận, phần tử ma trận đóng dấu ngoặc vuông ([]), phần tử trong hàng cách ký tự trống dấu phẩy (, ), phần tử thuộc hàng khác cách dấu (;) 2.1.2 Các phƣơng pháp nhập ma trận + Liệt kê trực tiếp, ví dụ lệnh: >> A =[1 3; ; 9] Kết cho ma trận có hàng, 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 6;7 9] ans = Chú ý: + Kết thúc câu lệnh ta dùng dấu (;) khơng dùng dấu (;), dùng dấu (;) câu lệnh thực kết khơng hình; khơng dùng dấu (;) câu lệnh thực kết hình Trong trường hợp sau câu lệnh thực hiện, kết lưu vào nhớ sử dụng cho câu lệnh + Các phần tử ma trận số phức, ví dụ lệnh: >> B = [1+2i 2+2i;3-i 1+2i] cho ma trận B= 1.0000 + 2.0000i 2.0000 + 2.0000i 3.0000 - 1.0000i 1.0000 + 2.0000i + Các phần tử ma trận ký tự, để làm điều trước tiên ta phải khai báo phần tử lệnh syms, ví dụ: >> syms sinx cosx a >> C = [ sinx cosx; a cosx] cho ta ma trận: C= ThS LẠI MINH HỌC – Khoa KSTH Page [ sinx, cosx] [ a, cosx] 2.1.3 Hiển thị lại ma trận Để hiển thị lại ma trận ta gõ tên ma trận sau ấn , ví dụ >> A cho ta ma trận A A= 2.2 Xử lý ma trận 2.2.1 Tạo ma trận véctơ : việc tạo ma trận véc tơ thực 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: số thực, bước chạy dương âm Ví dụ 1: Tạo vectơ t chạy từ đến 0.6 với bước chạy tiến 0.1 >> t=0: 0.1:0.6 t= 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 Ví dụ 2: Tạo vectơ t chạy từ 0.6 đến với bước chạy lùi 0.1 >>t = 0.6:-0.1:0 t= 0.6000 0.5000 0.4000 0.3000 0.2000 0.1000 Chú ý : Trong trường hợp giới hạn trên, gới hạn số nguyên bước chạy ta khơng cần đưa bước chạy vào biểu thức, ví dụ: >> C = 1:5 ta kết quả: C= ThS LẠI MINH HỌC – Khoa KSTH Page 2.2.2 Gọi phần tử ma trận MATLAB cho phép ta xử lý đến phần tử ma trận, để truy cập đến phần tử ma trận ta gọi chúng thông qua số phần tử với nội dung: Tên ma trận (Chỉ số hàng, số cột), ví dụ: >> A = [1:3; 4:6; 7:9] (Tạo ma trận A có kích thước 3X3) A= >> B = A(1,1) (Xuất phần tử hàng 1, cột 1) B= Chú ý: Trong trường hợp ta muốn gọi tất phần tử hàng tất phần tử cột ta dùng toán tử hai chấm (:), ví dụ: >> C = A(2,:) (xuất phần tử thuộc dòng ma trận A) C= >> D = A(:,2) (xuất phần tử thuộc cột ma trận A) D= 2.2.3 Gọi ma trận từ ma trận lớn Ví dụ: >> A = [1:3; 4:6; 7:9] (tạo ma trận A3X3) A= ThS LẠI MINH HỌC – Khoa KSTH Page 7 >> B = A ( 2:3,1:2 ) (gọi phần tử 2, hàng phần tử 1, hàng 3) B= 2.3 Các ma trận đặc biệt 4.3.1 Ma trận không (zeros): Tất phần tử ma trận >> C = zeros (2,3) (tạo ma trận zêro có hàng, cột) C= 0 0 0 4.3.2 Ma trận đơn vị (ones): Tất phần tử ma trận >> C = ones (2,3) (tạo ma trận đơn vị có hàng, cột) C= 1 1 1 4.3.3 Ma trận ma phƣơng Magic: Ma trận có tổng giá trị phần tử hàng = tổng giá trị phần tử cột = tổng tất giá trị phần tử đường chéo ma trận, ví dụ: >> A = Magic (3) A= 2.3.4 Ma trận eye: có tất phần tử đường chéo 1, phần tử khác có giá trị 0, ví dụ: >> B = eye (3) B= ThS LẠI MINH HỌC – Khoa KSTH Page 0 0 2.4 CÁC PHÉP TỐN VECTOR Cơng thức A+B, A-B A.B = C B\A A/B AB Phép toán Cộng, trừ Nhân mảng Chia trái mảng Chia phải mảng Luỹ thừa mảng Matlab A+B, A-B A.*B B.\A A./B A.^B 2.4.1 Các phần tử số thực: >>A = [1 2;2 1] A= 1 2 1 >> B = [1 2; 1 1] B= 2 1 1 1 >> C = A.*B C= >> D = A./B D= 1.0000 0.5000 1.0000 2.0000 1.0000 1.0000 >> E = A.\B E= ThS LẠI MINH HỌC – Khoa KSTH Page 1.0000 2.0000 1.0000 0.5000 1.0000 1.0000 >> F = A.^B F= 1 1 2.4.2 Các phần tử số phức >>A = [1+i 2+3i;3-4i 1+3i] A= 1.0000 + 1.0000i 2.0000 + 3.0000i 3.0000 - 4.0000i 1.0000 + 3.0000i >> B = [2+i 2+2i;1-4i 3+3i] B= 2.0000 + 1.0000i 2.0000 + 2.0000i 1.0000 - 4.0000i 3.0000 + 3.0000i >> C = A.*B C= 1.0000 + 3.0000i -2.0000 +10.0000i -13.0000 -16.0000i -6.0000 +12.0000i 2.4.3 Các phần tử tham số: >> syms a b c d >>A=[a b; c d] A= [ a, b] [ c, d] >> B = A ThS LẠI MINH HỌC – Khoa KSTH Page 10 Chƣơng 7: Dãy số 7.1 Tính giới hạn(limit): limit(F, x, a) : Tìm giới hạn biểu thức F x a limit(F, a) : Tìm giới hạn biểu thức F với biến độc lập limit(F) : Tìm giới hạn biểu thức F a = limit(F, x, a, „right‟) Lim it(F, x, a, „left‟) : Tìm giới hạn phải bên trái Ví dụ: >>syms x a t h >>limit(sin(x)/x) ans = >>limit(1/x,x,0,‟right‟) ans = inf >>limit(1/x,x,0,‟left‟) ans = -inf >>limit((sin(x+h)-sin(x))/h,h,0) ans = cos(x) >>v = [(1+a/x)^x,exp(-x)]; >>limit(v,x,inf,‟left‟) ans = [exp(a),0] 7.2 Tính tổng dãy số biến symbolic(symsum): symsum(S): Tổng biểu thức symbolic theo biến symbolic k , k xác định lệnh findsym từ k -1 symsum(S,v): Tổng biểu thức symbolic S theo biến symbolic v,v xác định từ k - symsum(S,a,b), symsum(S,v,a,b): Tổng biểu thức symbolic S theo symbolic v, v xác định từ v = a đến v = b Ví dụ 1: >>syms k n x >>symsum(k^2) ans = 1/3*k^3-1/2*k^2+1/6*k ThS LẠI MINH HỌC – Khoa KSTH Page 91 >>symsum(k) ans = 1/2*k^2-1/2*k >>symsum(sin(k*pi)/k,0,n) ans = -1/2*sin(k*(n+1))/k+1/2*sin(k)/k/(cos(k)-1)*cos(k*(n+1))-1/2*sin(k)/k/(cos(k)-1) >>symsum(k^2,0,10) ans = 385 >>symsum(x^k/sym(„k!‟), k, 0,inf) ans = exp(x) Vi dụ: Cho tổng dãy S1 = + 1 … 2 S2 = + x + x2 +… >>syms x k >>s1 = symsum(1/k^2,1,inf) %inf vơ s1 = 1/6*pi^2 >>s2 = symsum(x^k,k,0,inf) Tìm hàm ngƣợc (finverse): finverse(f): Tìm hàm ngược f f hàm symbolic với biến x finverse(f,u): Tìm hàm ngược f f hàm symbolic với biến u Ví dụ 2: >>syms u v x >>finverse(1/tan(x)) ans = atan(1/x) >>finverse(exp(u-2*v),u) ans = 2*v+log(u) s2 = -1/(x-1) 7.3 Khai triển Khai triển taylor(taylor): ThS LẠI MINH HỌC – Khoa KSTH Page 92 taylor(f) taylor(f,n,v): Cho ta xấp xỉ đa thức theo Maclaurin bậc (n-1) biểu thức, hàm khai triển symbolic f v biến độc lập biểu thức v xâu (string) biến symbolic taylor(f,n,v,a): Khai triển Taylor biểu thức hay hàm symbolic f quanh điểm a Đối số giá trị số, hàm symbolic hay xâu…Nếu không cho gía trị n Matlab n = Vi dụ: Khai triển Taylor hàm f = exsin(x) quanh điểm x0 = (Nếu x0 = ta có khai triển Maclaurin) >>syms x >> f = exp(x*sin(x)); >>t = taylor(f,4,2) % khai triển số hạng khác o xung quanh điểm x0 = f = exp(2*sin(2)) + exp(2*sin(2))*(2*cos(2) + sin(2))*(x-2) + exp(2*sin(2)) *(-sin(2) + cos(2) + 2*cos(2)^2 + 2*cos(2)*sin(2) + 1/2*sin(2)^2)*(x-2)^2 + exp(2*sin(2)) * (-1/3*cos(2)-1/2*sin(2)cos(2)*sin(2) + 2*cos(2)^2-sin(2)^2 + 4/3*cos(2)^3 + 2*cos(2)^2*sin(2) +cos(2)*sin(2)^2 + 1/6*sin(2)^3)*(x-2)^3 7.4 Các phép biến đổi 7.4.1 Biến đổi Furiê a) Biến đổi Furiê thuận F = fourier(f): Biến đổi fourier hàm vô hướng f với biến độc lập f cho ta hàm qua phép biến đổi nàylà w F = fourier(f,v): F hàm biến v thay biến w F = fourier(f,u,v): f hàm u F hàm v chúng thay biến x w Ví dụ: >>syms x w u >>f = exp(-x^2) >>fourier(f) ans = pi^(1/2)*exp(-1/4*w^2) >>g = exp(-abs(w)) >>fourier(g) ans = 2/(1+t^2) >>f= x*exp(-abs(x)) >>fourier(f,u) ans = -4*i/(1+u^2)^2*u >>syms x v u real ThS LẠI MINH HỌC – Khoa KSTH Page 93 >>f= exp(-x^2*abs(v))*sin(v)/v >>fourier(f,v,u) ans = -atan((u-1)/x^2)+atan((u+1)/x^2) b) Biến đổi Furiê ngƣợc f = ifourier(F): Biến đổi ngược hàm mục tiêu vô hướng F với biến độc lập w phép biến đổi ngược hàm x f = ifourier(F,u): f hàm củabiến u thay biến x f = ifourier(F,v,u): F hàm v f hàm u chúng thay biến w x tương ứng Ví dụ: >>syms a w x t v real >>f = exp(-w^2/(4*a^2)) >>F = ifourier(f); >>F = simple(F) F = a*exp(-x^2*a^2)/pi^(1/2) >>g=exp(-abs(x)) >>ifourier(g) ans = 1/(1+t^2)/pi >>f=2*exp(-abs(w))-1 >>simplify(ifourier(f,t)) ans = (2-pi*Dirac(t)-pi*Dirac(t)*t^2)/(pi+pi*t^2) >>f=exp(-w^2*abs(v))*sin(v)/v; >>ifourier(f,v,t) ans = 1/2*(atan((t+1)/w^2) - atan((-1+t)/w^2))/pi 7.4.2 Biến đổi laplace a) Biến đổi Laplace thuận L = laplace(F): Biến đổi Laplace hàm F với biến độc lập t cho ta hàm s L = laplace(F,t): L hàm t thay biến s ThS LẠI MINH HỌC – Khoa KSTH Page 94 L = laplace(F,w,z): L hàm z F hàm w, thay biến symbolic s t tương ứng Ví dụ: >>syms t v x a; >> f=exp(-50*t); >> laplace(f) ans = 1/(s+50) >> g = 1/sqrt(x) >> laplace(g) ans = (pi/s)^(1/2)>>f=exp(-a*t) >>laplace(f,x) ans= 1/(x + 50) >>f = 1- cos(t*v); >>laplace(f,x) ans = 1/x-x/(x^2+v^2) b) Biến đổi Laplace ngƣợc F = ilaplace(L): Biến đổi Laplace ngược hàm symbolic L với biến độc lập s Nó cho ta hàm t F = ilaplace(L,y): F hàm y thay biến t F = ilaplace(L,y,x): F hàm x L hàm y, thay biến symbolic t s Ví dụ: >>syms s a t >>f=1/s^2 >>ilaplace(f) ans = t >>g=1/(t-a)^2, >>ilaplace(g) ans = x*exp(a*x) >>syms u a x, ThS LẠI MINH HỌC – Khoa KSTH Page 95 >>f=1/(u^2-a^2), >>ilaplace(f,x) ans = 1/(-a^2)^(1/2)*sin((-a^2)^(1/2)*x) >>syms s v x, >>f=s^3*v/(s^2+v^2), >>ilaplace(f,v,x) ans = s^3*cos(s*x) CHƢƠNG SIMULINK Khởi động Sinulink: Để khởi động Simulink ta theo bước sau: • khởi động MATLAB • click vào icon Simulink MATLAB toolbar hay đánh lệnh Simulink cửa sổ MATLAB Lúc hình xuất cửa sổ Simulink Library Browser, có thư viện khối Simulink Tạo mơ hình mới: Để tạo mơ hình mới, click vào icon cửa sổ Simulink Library Browser hay chọn menu File | New | Model cửa sổ MATLAB Mơ phƣơng trình: Phương trình dùng để biến đổi độ Celcius thành độ Fahrenheit : TF = (9/5)TC + 32 Trước hết ta khảo sát khối cần để tạo mơ hình: • khối ramp thư viện Sources để input tín hiệu nhiệt độ • khối Constant thư viện Sources để tạo số 32 • khối Gain thư viện Math để tạo hệ số 9/5 • khối Sum thư viện Math để cộng hai đại lượng • khối Scope thư viện Sinks để hiển thị kết Tiếp ta đưa khối vào cửa sổ mơ hình, gán giá trị thơng số cho Gain Constant cách nhấp đúp lên chúng để mở khối Sau ta nối khối Khối Ramp đưa nhiệt độ Celcius mơ hình Mở khối thay đổi giá trị khởi gán Initial output Khối Gain nhân nhiệt độ với hệ số 9/5 Khối Sum cộng giá trị 32 với kết đưa nhiệt độ Fahrenheit Khối Scope để xem kết Sơ đồ mô sau Bây Start từ menu Simulation để chạy simulation Simulation chạy 10 giây,tương ứng với nhiệt độ Celcius biến đổi từ đến 10o ThS LẠI MINH HỌC – Khoa KSTH Page 96 Mơ hệ phƣơng trình tuyến tính: Ta xét hệ phương trình tuyến tính có hai ẩn: Mơ phƣơng trình bậc cao: Ta xét phương trình : ThS LẠI MINH HỌC – Khoa KSTH Page 97 Mô hệ thống liên tục đơn giản: Ta mơ hình hố hệ mơ tả phương trình vi phân Mơ hệ phƣơng trình vi phân bậc cao: Ta xét hệ mơ tả phương trình vi phân bậc hai sau: ThS LẠI MINH HỌC – Khoa KSTH Page 98 Mơ hệ có điều kiện đầu khác không ThS LẠI MINH HỌC – Khoa KSTH Page 99 Mô hệ cho sơ đồ khối:Xét hệ có cấu trúc sơ đồ khối sau: ThS LẠI MINH HỌC – Khoa KSTH Page 100 10 Mơ hình hố hệ phi tuyến: ThS LẠI MINH HỌC – Khoa KSTH Page 101 11 Mô điều khiển động chiều ThS LẠI MINH HỌC – Khoa KSTH Page 102 12 Mô mạch R-L-C ThS LẠI MINH HỌC – Khoa KSTH Page 103 ThS LẠI MINH HỌC – Khoa KSTH Page 104 13 Mô hệ thống lò xo 14 Bộ chỉnh lƣu ThS LẠI MINH HỌC – Khoa KSTH Page 105 ... toạ độ: MATLAB cung cấp 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 giải vào đồ thị... Z=a+jb ThS LẠI MINH HỌC – Khoa KSTH Page CHƢƠNG : MA TRẬN VÀ CÁC PHÉP TOÁN VỀ MA TRẬN TRONG MATLAB 2.1 Khái niệm Các liệu đưa vào xử lý MATLAB dạng ma trận Ma trận A có n hàng, m cột gọi ma trận... y=1,9766 Vận dụng Matlab vào giảng dạy chƣơng “Dao động học” Phần kiến thức chương “Dao động học” chủ yếu sử dụng mối quan hệ hàm cos, sin để khảo sát trạng thái dao động vật Người giáo viên sử dụng