giáo trình, bài giảng matlab cho ngành điện

87 152 0
giáo trình, bài giảng matlab cho ngành điện

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Để xây dựng thuật toán giải bài toán mạch này, ta chuyển phương trình mạch sang số phức, khi đó hệ phương trình vi phân mô tả mạch sẽ trở thành hệ phương trình đại số và dễ dàng giải được bằng bất kỳ ngôn ngữ lập trình nào như Pascal, C... Xét mạch điện tổng quát gồm m nhánh, n nút. Ta sẽ lập được hệ gồm m phương trình vi phân như sau:

CHƯƠNG 1: MATLAB CƠ BẢN 1.1 CÁC TOÁN TỬ CƠ BẢN CỦA MATLAB Các tốn tử 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) * ví dụ: Phép tính ma trận Phép tính maûng y y’ x–y -3 -3 -3 x–2 -3 -3 -3 10 18 x x’ 123 x+y x+2 x*y phép toán sai x * y x’* y 32 x’.* y phép toán sai x * y’ phép toán sai x.* 2 x.\ y 5/2 x * y’ 10 12 12 15 18 x*2 x\y 16/7 2\x 1/2 3/2 x/y x/2 0 0 1/6 1/3 1/2 1/2 2./ x x./ y x./ 2 2/3 1/4 2/5 1/2 1/2 3/2 3/2 x.^ y 1/2 32 729 x.^ sai sai 2.^ x sai x^y x^2 2^x phép toán phép toán phép toán Toán tử quan hệ (Relational Operators): Toán tử Công dụng < So sánh nhỏ > So sánh lớn >= So sánh lớn =[1 3;4 6;7 9] %so sánh trực tiếp x (x 5) với ma trận ans = % rõ ràng phầ tử 1,2,3,4,5 =A ans = 1 1 0 0 » x=A % dòng lệnh tức cho x= ma traän A x= » x==A % so saùnh x A ans = % tất phần tử 1 1 1 1 » x=5 % cho laïi x=5 x= » x==A % so saùnh x = A ans = 0 0 % phần tử 5=x (vì x=5) 0 » x4 & 1+ máy tính thực 1+2 3, sau tới 3>4 thực & cuối ta kết qủa Ký tự đặc biệt (Special Characters): Ký hiệu Công dụng [] Khai báo vector ma trận () Thực phép toán ưu tiên, khai báo biến số vector = Thực phép gán ‘ Chuyển vò ma trận tìm lượng liên hiệp số phức Điểm chấm thập phân , Phân biệt phần tử ma trận đối số dòng lệnh ; Ngăn cách hàng khai báo ma trận % Thông báo dòng thích ! Mở cửa sổ MS – DOS dấu ‘:’ a) Công dụng: Tạo vector ma trận phụ lặp lặp lại giá trò b) Giải thích: Khai báo Công dụng j:k Tạo chuỗi j, j+1, j+2,…., k-1, k j:i:k Tạo chuỗi j, j+i, j+2I,….,k-i, k A(: , j) Chỉ cột thứ j ma trận A A(i , :) Chỉ hàng thứ i ma trận A(: , :) Chỉ toàn ma trận A A(j , k) Chỉ phần tử A(j), A(j+1)…A(k) A(: , j , k) Chỉ phần tử A(:, j), A(:, j+1)…A(:, k) A(:) Chỉ tất thành phần ma trận A c) Ví dụ: khai báo D = : 10 ta kết quả: D = 10 khai báo D = : :10 ta kết quaû: D = 10 Nhập xuất liệu từ dòng lệnh: Khi nhập ma trận từ bàn phím ta phải tuân theo quy định sau : • ngăn cách phần tử ma trận dấu “,” hay dấu trống • dùng dấu “;” để kết thúc hàng • bao phần tử ma trận cặp dấu ngoặc vuông [ ] Để nhập ma trận sau: Nhập xuất liệu từ file: Nhập xuất liệu từ bàn phím: Lệnh input cho phép ta nhập số liệu từ bàn phím Ví dụ: x = input(’Nhap x: ’) Lệnh format cho phép xác định dạng thức liệu Ví dụ: format rat % so huu ti format long % so có 14 chu so sau dau phay format long e % so dang mu format hex % so dang hex format short e %so dang mu ngan format short %tro ve so dang ngan (default) Ta dùng disp fprintf để hiển thị biến Ví dụ: disp(‘Tri so cua x = ‘), disp(x) Ta viết chương trình ct1_2.m sau clc f = input(‘Nhap nhiet Fahrenheit[F]:’); c = 5/9*(f ‐ 32); fprintf(‘%5.2f(do Fahrenheit) la %5.2f(do C).\n’, f, c) fid = fopen(‘ct1_2.dat’, ‘w’); fprintf(fid, ‘%5.2f(do Fahrenheit) la %5.2f(do C).\n’, f, c); fclose(fid); Trong trường hợp ta muốn nhập chuỗi từ bàn phím, ta cần phải thêm kí tự s vào đối số Ví dụ: ans = input(‘Ban tra loi hoac : ‘,’s’) Các hàm toán học: a Các hàm toán học bản: b Các hàm toán học tự tạo Muốn ta tạo file f1.m sau: function y = f1(x) y = 1./(1+8*x.^2); file f2.m: function y = f2(x) y(1) = x(1)*x(1)+4*x(2)*x(2) ‐5; y(2) = 2*x(1)*x(1)-2*x(1)-3*x(2) -2.5; Khi nhập lệnh f1(2) ta có giá trị hàm f1 x = Khi nhập lệnh f2([2 4]) ta có giá trị hàm f2 x1 = x2 = Lệnh feval(‘f1’, 2) feval(‘f2’, [2 4]) cho kết tương tự Cách thứ hai để biểu diễn hàm tốn học biến dòng lệnh tạo đối tượng inline từ biểu thức chuỗi Ví dụ ta nhập từ dòng lệnh hàm sau: f1 = inline(’1./(1 + 8*x.^2)’,’x’); f1([0 1]), feval(f1, [0 1]) Ta viết: f1 = ‘1./(1 + 8*x.^2)’; x = [0 1]; eval(f1) c Các lệnh xử lí hàm: Lệnh fplot vẽ đồ thị hàm tốn học giá trị cho Ví dụ: fplot(‘f1’, [‐5 ]) grid on Cho hàm toán học biến, ta dùng lệnh fminbnd MATLAB để tìm cực tiểu địa phương hàm khoảng cho Ví dụ: f = inline(‘1./((x ‐ 0.3).^2+0.01) + 1./((x ‐ 0.9).^2 + 0.04) ‐ ‘); x = fminbnd(f, 0.3, 1) Lệnh fminsearch tương tự hàm fminbnd dùng để tìm cực tiểu địa phương hàm nhiều biến Ta có hàm biến lưu file three_var.m sau: function b = three_var(v) x = v(1); y = v(2); z = v(3); b = x.^2 + 2.5*sin(y) ‐ z^2*x^2*y^2; Bây tìm cực tiểu hàm x = ‐0.6 , y = ‐1.2 z = 0.135 lệnh: v = [‐0.6 ‐1.2 0.135]; a = fminsearch(‘three_var’, v) Các phép toán ma trận vec tơ: a Khái niệm chung: Giả sử ta tạo ma trận a b lệnh: a = [1 3; 6]; b = [3 ‐2 1] Ta sửa đổi chúng A = [a; 9] B = [b; [1 ‐1]]’ Toán tử ‘ dùng để chuyển vị ma trận thực chuyển vị liên hợp ma trận phức Nếu muốn chuyển vị ma trận phức, ta dùng thêm toán tử “.” nghĩa phải viết “.’” Ví dụ: C = [1 + 2*i ‐ 4*i; + i ‐ 2*j]; X = C’ Y = C.’ b Chỉ số: Phần tử hàng i cột j ma trận m×n có kí hiệu A(i, j) Tuy nhiên ta tham chiếu tới phần tử mảng nhờ số, ví dụ A(k) với k = i + (j ‐ 1)m Cách thường dùng để tham chiếu vec tơ hang hay cột Trong trường hợp ma trận đầy đủ xem ma trận cột dài tạo từ cột ma trận ban đầu Như viết A(5) có nghĩa tham chiếu phần tử A(2, 2) Để xác định kích thước ma trận ta dùng lệnh length(trả kích thước lớn nhất) hay size(số hàng cột) Ví dụ: c = [1 4; 8]; length(c) [m, n] = size(c) d Tạo ma trận hàm có sẵn: MATLAB cung cấp số hàm để tạo ma trận bản: zeros tạo ma trận mà phần tử zeros 10 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: Mơ hệ có điều kiện đầu khác không 73 74 Mô hệ cho sơ đồ khối:Xét hệ có cấu trúc sơ đồ khối sau: 75 10 Mơ hình hoá hệ phi tuyến: 76 77 11 SYMBOLIC MATLAB TOOLBOX Khái niệm chung: Symbolic Math Toolboxes kết hợp tính tốn chữ vào mơi trường MATLAB Các toolbox bổ sung tiện ích số đồ thị với kiểu tính tốn tốn học khác Khởi động TOOLBOX: x = sym(‘x’) a = sym(‘alpha’) rho = sym(‘(1 + sqrt(5))/2’) Bây ta thực hiên phép tốn khác với rho Ví dụ: f = rho^2 ‐ rho ‐ 78 f= (1/2+1/2*5^(1/2))^2‐3/2‐1/2*5^(1/2) Ta rút gọn biểu thức: simplify(f) ans =0 a = sym(‘a’) b = sym(‘b’) c = sym(‘c’) x = sym(‘x’) hay đơn giản là: syms a b c x Nói chung ta dùng sym hay syms để tạo biến chữ nên dùng syms để tiết kiệm thời gian Biến đổi số chữ: a Tạo biến thực phức: Lệnh sym cho phép ta mơ tả thuộc tính tốn học biến chữ cách dùng tuỳ chọn real Phát biểu: x = sym(‘x’,’real’); y = sym(‘y’,’real’); hay hiệu hơn: syms x y real z = x + i*y tạo biến chữ x y có thuộc tính số thực Đặc biệt: f = x^2 + y^2 thực số không âm Như z biến phức lệnh: conj(x) conj(z) expand(z*conj(z)) 79 cho kết quả: return the complex conjugates of the variables xx ‐ i*y x^2 + y^2 Lệnh conj toán tử tạo số phức liên hợp Để xóa thuộc tính real x ta dùng lệnh: syms x unreal hay: x = sym(‘x’,’unreal’) Lệnh clear x khơng xố thuộc tính số real x b Tạo hàm trừu tượng: Nếu ta muốn tạo hàm trừ tượng(nghĩa hàm không xác định) f(x) cần dùng lệnh: f = sym(‘f(x)’) Khi f hoạt động f(x) xử lí lệnh toolbox Ví dụ để tính vi phân bậc ta viết: df = (subs(f,’x’,’x+h’) – f)/’h’ hay syms x h df = (subs(f,x,x+h)–f)/h trả về: df = (f(x+h)‐f(x))/h ứng dụng hàm sym hữu ích biến đổi Fourrier, Laplace z c Dùng sym để truy cập hàm Maple: Ta truy cập hàm giai thừa k! Maple dùng sym kfac = sym(‘k!’) Để tính 6! hay k! ta viết: syms k n subs(kfac,k,6) ans = 720 subs(kfac,k,n) ans = n! hay tính 12! ta viết: prod(1:12) d Ví dụ tạo ma trận chữ: Một ma trận vòng ma trận mà hàng sau có cách dịch phần tử hàng trước lần.Ta tạo ma trận vòng A phần tử a, b c: 80 syms a b c A = [a b c; b c a; c a b] kết quả: A= [ a, b, c ] [ b, c, a ] [ c, a, b ] Do A ma trận vòng tổng hàng cột nhau: sum(A(1,:)) ans = a+b+c sum(A(1,:)) = = sum(A(:,2)) ans = Bây ta thay A(2, 3) beta b alpha: syms alpha beta A(2,3) = beta; A = subs(A,b,alpha) A= [ a, alpha, c] [ alpha, c, beta] [ c, a, alpha] Từ ví dụ ta thấy dùng đối tượng chữ tượng tự dùng số MATLAB Nếu ta tìm đạo hàm hàm không mô tả biến độc lập (nghĩa đạo hàm theo biến nào) kết là: f’ = nxn‐1 g’ = acos(at + b) h’ =J v (z)(v/z)‐Jv+1(z) Như biến độc lập x, t z MATLAB hiểu biến độc lập chữ thường nằm cuối bảng chữ x, y, z Khi không thấy chữ này, MATLAB tìm chữ gần coi biến độc lập Các biến khác n, a, b v coi hay thông 81 số Tuy nhiên ta lấy đạo hàm f theo n cách viết rõ biến độc lập Ta dùng lệnh sau để tạo hàm: syms a b n nu t x z f = x^n; g = sin(a*t + b); Để đạo hàm hàm f ta viết: diff(f); ans = x^n*n/x Trong ví dụ x biến độc lập Nếu muốn tính đạo hàm f theo n ta cần viết: diff(f,n) ans = x^n*log(x) Tạo hàm toán học chữ: a Dùng biểu thức chữ: Các lệnh: syms x y z r = sqrt(x^2 + y^2 + z^2) t = atan(y/x) f = sin(x*y)/(x*y) tạo biểu thức chữ r, t f Ta dùng lệnh diff, int, subs hay lệnh Symbolic Math Toolbox khác để xử lí biểu thức b Tạo M‐file: M‐file cho phép ta dùng hàm tổng quát Ví dụ ta muốn tạo hàm sinc = sin(x)/x ta viết M‐file có nội dung sau: function z = sinc(x) if isequal(x, sym(0)) z = 1; else z = sin(x)/x; end Ta mở rộng ví dụ cho hàm biến khác Tính tốn: a Đạo hàm: Ta tạo biểu thức chữ: syms a x f = sin(a*x) Vậy thì: df = diff(f) tính đạo hàm hàm f(x) theo x Kết là: df = cos(a*x)*a 82 Để tính đạo hàm f theo a ta viết: dfa = diff(f,a) kết quả: dfa= cos(a*x)*x Để tính đạo hàm bậc f theo x a ta viết: diff(f,2) ans = ‐ sin(a*x)*a^2 diff(f,x,2) ans = ‐ sin(a*x)*x^2 Hàm diff dùng đối số ma trận Trong trường hợp đạo hàm thực phần tử Ví dụ: syms a x A = [cos(a*x),sin(a*x);‐sin(a*x),cos(a*x)] kết quả: A= [ cos(a*x), sin(a*x)] [‐sin(a*x), cos(a*x)] lệnh : dy = diff(A) cho kết quả: dy = [ ‐sin(a*x)*a, cos(a*x)*a] [ ‐cos(a*x)*a, ‐sin(a*x)*a] 83 CHƯƠNG 9: POWER SYSTEM BLOCKSET 1.Các hệ thống bao gồm: Electrical Sources Elements Power Electronics Machines Connectors Measuremets Extras Demos 84 Giới thiệu điện tử công suất: Power System Blockset 85 CHƯƠNG 10: ỨNG DỤNG MATLAB TRONG ĐIỀU KHIỂN TỰ ĐỘNG Các dạng mơ hình hệ thống Ví dụ: Ta tạo số mơ hình nhờ lệnh MATLAB sau(lưu ctspacestate.m): clc ts = [1 2]; ms = [1 4]; sys1 = tf(ts, ms) sys2 = zpk([‐6 1], [‐5 1], 3) sys3 = ss([1 2; 4], [1 1; 1], [0 1; 2; 1], 0) 86 Biến đổi hàm truyền thành khơng gian ‐ trạng thái: Cho phương trình vi phân: 87 ... fplot vẽ đồ thị hàm tốn học giá trị cho Ví dụ: fplot(‘f1’, [‐5 ]) grid on Cho hàm tốn học biến, ta dùng lệnh fminbnd MATLAB để tìm cực tiểu địa phương hàm khoảng cho Ví dụ: f = inline(‘1./((x ‐ 0.3).^2+0.01)... xuất liệu từ file: Nhập xuất liệu từ bàn phím: Lệnh input cho phép ta nhập số liệu từ bàn phím Ví dụ: x = input(’Nhap x: ’) Lệnh format cho phép xác định dạng thức liệu Ví dụ: format rat % so huu... ma trận A A= » x>=A ans = 1 1 0 0 » x=A % dòng lệnh tức cho x= ma traän A x= » x==A % so saùnh x A ans = % tất phần tử 1 1 1 1 » x=5 % cho laïi x=5 x= » x==A % so saùnh x = A ans = 0 0 % phần

Ngày đăng: 24/02/2019, 20:56

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan