Tập bài giảng được biên soạn dùng cho sinh viên ngành công nghệ kỹ thuật Điện, Điện tử trường Đại học Sư phạm kỹ thuật Nam Định, nội dung bao gồm 4 chương, được trình bày cụ thể như sau: MATLAB trong giải tích mạch điện; Ứng dụng MATLAB giải tích mạch điện tuyến tính ở chế độ xác lập; Ứng dụng MATLAB giải tích mạch điện tuyến tính trong quá trình quá độ; Ứng dụng MATLAB giải tích một số mạch điện tử cơ bản.
MATLAB TRONG GIẢI TÍCH MẠCH ĐIỆN
Lập trình MATLAB
1.1.1 Giới thiệu MATLAB a Các phiên bản phần mềm MATLAB
Phần mềm MATLAB đã được cải tiến và nâng cấp lên qua nhiều phiên bản:
Phiên bản đầu tiên của MATLAB, phiên bản 1.0, được phát hành vào năm 1984, được viết bằng ngôn ngữ C cho máy tính MS-DOS Sự kiện ra mắt này diễn ra tại Hội nghị IEEE về thiết kế và điều khiển tại Las Vegas, Nevada.
- Năm 1986, MATLAB 2 ra đời trong đó hỗ trợ UNIX
- Năm 1990 Simulink 1.0 được phát hành gói chung với MATLAB
Năm 1992, MATLAB 4 đã giới thiệu hỗ trợ đồ họa màu 2-D và 3-D cùng với các ma trận truy tìm Cũng trong năm này, phiên bản MATLAB Student Edition dành cho sinh viên được phát hành.
- Năm 1993 MATLAB cho MS Windows ra đời Đồng thời công ty này có trang web là www.mathworks.com
- Năm 1995 MATLAB cho Linux ra đời Trình dịch MATLAB có khả năng chuyển dịch từ ngôn ngữ MATLAB sang ngôn ngữ C cũng được phát hành trong dịp này
- Năm 1996 MATLAB 5 bao gồm thêm các kiểu dữ liệu, hình ảnh hóa, bộ truy sửa lỗi (debugger), và bộ tạo dựng GUI
- Năm 2000 MATLAB 6 cho đổi mới môi trường làm việc MATLAB, thêm LAPACK và FFTW (Fastest Fourier Transform in the West - "Biến đổi Fourier nhanh nhất của phương Tây")
- Năm 2002 MATLAB 6.5 phát hành đã cải thiện tốc độ tính toán, sử dụng phương pháp dịch JIT (Just in Time) và tái hỗ trợ MAC
Năm 2004, MATLAB 7 được phát hành với nhiều tính năng nổi bật như khả năng tính toán chính xác đơn và kiểu nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm và môi trường phân tích số liệu tương tác.
- Đến tháng 12/2008, phiên bản 7.7 được phát hành với SP3 cải thiện Simulink cùng với hơn 75 sản phẩm khác
- Năm 2009 cho ra đời 2 phiên bản 7.8 (R2009a) và 7.9 (R2009b)
- Năm 2010 phiên bản 7.10 (R2010a) cũng đã được phát hành
Người dùng có thể chọn phiên bản MATLAB phù hợp với nhu cầu sử dụng và cấu hình máy tính của mình Trong tài liệu này, phiên bản MATLAB được sử dụng cho mô phỏng là Matlab 7.8.0.347 (R2009a).
Hình 1.1 Phần mềm MATLAB version 7.8.0.347 (R2009a) b Cửa sổ làm việc của MATLAB
Sau khi cài đặt phần mềm (tham khảo cách cài đặt phần mềm tại mathworks.com ), khởi động chương trình, giao diện sử dụng chương trình như sau:
Hình 1.2 Cửa sổ làm việc của MATLAB
- Current Directory: Vùng quản lý các File trong thư mục mà ta lưu các dự án làm việc trên Matlab
- Command Window: Vùng cửa sổ lệnh cho phép gõ trực tiếp các lệnh để thực hiện chương trình
- Workspace : Không gian làm việc, hiển thị các file mà dự án tạo ra để xử lý các số liệu trong quá trình làm việc
- Command History: Lưu lại lịch sử các lệnh mà người sử dụng đã dùng theo thời gian
Các file MATLAB có dạng tệp mở rộng là: *.m và chỉ chạy trong môi trường MATLAB Có 2 cách để nhập lệnh trong MATLAB:
+ Nhập lệnh trực tiếp từ cửa sổ command Window
Để nhập lệnh từ một file, bạn có thể sử dụng M-file hoặc lệnh load Phương pháp này khác biệt so với việc nhập lệnh trực tiếp trên cửa sổ lệnh, nơi bạn sẽ thấy dấu nhắc “>>”.
Khi bạn nhập lệnh vào cửa sổ lệnh, lệnh sẽ được thực hiện ngay lập tức và kết quả sẽ hiển thị trên màn hình Nếu bạn không muốn kết quả hiển thị, hãy thêm dấu “;” sau lệnh để lưu kết quả vào bộ nhớ của chương trình.
Lệnh trên tạo ra biến x với giá trị 15 Nếu không có dấu “;”, kết quả sẽ hiển thị giá trị x, trong khi lệnh có dấu “;” sẽ lưu giá trị của x vào chương trình, và khi cần sử dụng, người dùng phải gọi tên biến x Ngoài ra, MATLAB cũng hỗ trợ các phím tắt hữu ích cho việc lập trình.
Bảng 1.1 Bảng các phím tắt trong MATLAB
↑ hoặc Ctrl + P Gọi lại lệnh trước đó
↓ hoặc Ctrl + N Gọi lệnh sau
Để thực hiện các thao tác cơ bản trong MATLAB, bạn có thể sử dụng các phím tắt như: ← hoặc Ctrl + B để lùi lại một ký tự, → hoặc Ctrl + F để tiến lên một ký tự, Ctrl + → hoặc Ctrl + R để sang phải một từ, và Ctrl + ← hoặc Ctrl + L để sang trái một từ Để về đầu dòng, sử dụng Home hoặc Ctrl + A, và để về cuối dòng, dùng End hoặc Ctrl + E Nếu bạn muốn xóa dòng, hãy nhấn Esc hoặc Ctrl + U; để xóa ký tự tại chỗ con nháy đứng, dùng Del hoặc Ctrl + D; và để xóa ký tự trước chỗ con nháy đứng, sử dụng Backspace hoặc Ctrl + H.
Bảng 1.2 Bảng các phép toán cơ bản trong MATLAB
` Chuyển vị ma trận hay số phức liên hợp d Các toán tử quan hệ :
Bảng 1.3 Bảng toán tử quan hệ trong MATLAB
== Bằng e Các toán tử logic :
Bảng 1.4 Các toán tử Logic trong MATLAB
~ NOT f Các biến và hằng :
- Biến trong MATLAB: MATLAB cho phép không cần phải khai báo biến trước khi sử dụng Qui tắc đặt tên biến:
+ Ký tự đầu tiên phải là chữ viết trong bảng chữ cái (Alphabe) + Các kí tự sau có thể là chữ cái hoặc số, hay _
+ MATLAB phân biệt chữ hoa với chữ thường
- Hằng số trong MATLAB: đây là các biến đã được định nghĩa sẵn trong MATLAB, khi sử dụng không được đặt tên theo các biến này
Bảng 1.5 Các hằng số trong MATLAB
Ký hiệu Ý nghĩa pi 3.14159265 i Số ảo j Tương tự i eps Sai số 2 -52 realmin Số thực nhỏ nhất ( 2 -1022 ) realmax Số thực lớn nhất ( 2 1023 ) inf Vô cùng lớn
NaN Not a Number g Các hàm toán học:
Bảng 1.6 Các hàm toán học thông dụng trong MATLAB
The article outlines key mathematical functions and their meanings: exp(x) represents the exponential function e^x, while sqrt(x) denotes the square root of x The natural logarithm is indicated by log(x), and log10(x) refers to the logarithm base 10 The absolute value of a complex number x is given by abs(x), and angle(x) signifies the argument of the complex number The conjugate of x is expressed as conj(x), with imag(x) representing the imaginary part and real(x) the real part of the complex number The sign of x is indicated by sign(x) Trigonometric functions include cos(x) for cosine, sin(x) for sine, and tan(x) for tangent, while their inverse functions are represented as acos(x) for arccosine, asin(x) for arcsine, and atan(x) for arctangent Lastly, cosh(x) denotes the hyperbolic cosine of x.
1.1.2 Ma trận a Khái niệm ma trận trong MATLAB
Xét ma trận A gồm n hàng, m cột, ký hiệu A(nxm:)
MATLAB làm việc với các số liệu dạng ma trận, ma trận trong MATLAB được khai báo theo nguyên tắc sau:
+ Ngăn cách các phần tử của ma trận bằng dấu “,” hay khoảng trống + Dùng dấu “;” để kết thúc một hàng
+ Bao quanh các phần tử của ma trận bằng cặp dấu ngoặc vuông [ ] MATLAB phân biệt chữ hoa và chữ thường
Các số liệu đưa vào môi trường làm việc của MATLAB được lưu lại cho đến khi gặp lệnh clear all
Ví dụ: Khai báo các ma trận:
Tại cửa sổ lệnh, nhập các lệnh sau:
7 b Chỉ số của các phần tử trong ma trận
Một phần tử trong ma trận được xác định bởi chỉ số hàng và cột Với ma trận A có kích thước m hàng và n cột, phần tử tại hàng i và cột j được truy cập bằng lệnh A(i,j), trong đó i và j đều phải lớn hơn hoặc bằng 1.
Ta cũng có thể tham chiếu tới phần tử của ma trận chỉ với một chỉ số:
Để xác định kích thước của một ma trận A(k) với k = i + (j - 1)m, chúng ta sử dụng lệnh length để trả về kích thước lớn nhất hoặc size để biết số hàng và cột Để truy cập toàn bộ các phần tử trong một hàng hoặc cột, ta sử dụng toán tử (:).
+ A(:,n): gọi toàn bộ số hàng tương ứng với cột thứ n của ma trận A
+ A(m,:): gọi toàn bộ số cột tương ứng với hàng m của ma trận A
+ A(x:y,n): gọi từ hàng x đến hàng y tương ứng với cột n của ma trận A
+ A(m,x:y): gọi từ cột x đến cột y tương ứng với hàng m của ma trận A
Ví dụ: Cho ma trận 1 2 3 4
+ Nhập vào ma trận X, hiển thị ra cửa sổ lệnh
+ Truy cập đến phần tử ở hàng 2, cột 3 của ma trận
+ Xác định kích thước lớn nhất của ma trận
+ Xác định số hàng và số côt của ma trận
+ Xác định các phần tử hàng 2 của ma trận
+ Xác định các phần tử từ hàng 1 đến hàng 2 của cột thứ 3 của ma trận + Xác định các phần tử cột 3 của ma trận
+ Xác định các phần tử từ cột 2 đến cột 3 hàng 2 của ma trận
% Nhập vào ma trận X, hiển thị ra cửa sổ lệnh
% Truy cập đến phần tử ở hàng 2, cột 3 của ma trận
% Hoặc có thể sử dụng cách tham chiếu với 1 chỉ số k=i+(j-1)m=2+(3-1).2=6
% Xác định kích thước lớn nhất của ma trận
% Xác định số hàng và số côt của ma trận
% Xác định các phần tử hàng 2 của ma trận
% Xác định các phần tử từ hàng 1 đến hàng 2 của cột thứ 3 của ma trận
% Xác định các phần tử cột 3 của ma trận
% Xác định các phần tử từ cột 2 đến cột 3 hàng 2 của ma trận
>>X(2,2:3) ans 6 7 c Tạo ma trận bằng hàm có sẵn
MATLAB cung cấp thư viện các hàm hữu ích để tạo ma trận cơ bản, trong đó hàm zeros(nxm) cho phép người dùng tạo ra ma trận kích thước (nxm) với tất cả các phần tử đều bằng 0.
Ví dụ 1: Viết lệnh tạo ma trận a(2x3) và b(3x3) có các phần tử đều bằng 0 Giải
+ ones(nxm): Tạo ra ma trận nxm có các phần tử đều bằng 1
Ví dụ 2: Viết lệnh tạo ma trận z(2x3) và p(3x3) có các phần tử đều bằng 1 Giải
+ rand(n,m): tạo ma trận nxm có các phần tử ngẫu nhiên phân bố đều
Ví dụ 3: Viết lệnh tạo ma trận d(4x4) có các phần tử ngẫu nhiên phân bố đều
+ randn(n,m): tạo ma trận nxm có các phần tử ngẫu nhiên phân bố trực giao
Ví dụ 4: Viết lệnh tạo ma trận e kích thước (4x4) có các phần tử ngẫu nhiên phân bố trực giao
>> e=randn(4,4) e -0.1241 0.6715 0.4889 0.2939 1.4897 -1.2075 1.0347 -0.7873 1.4090 0.7172 0.7269 0.8884 1.4172 1.6302 -0.3034 -1.1471 + eye(n): tạo ma trận đơn vị kích thước nxn (ma trận vuông)
Ví dụ 5: Tạo ma trận f(4x4) có các phần tử trên đường chéo chính bằng 1, các phần tử còn lại đều bằng 0
+ eye(m, n): tạo ma trận đơn vị mở rộng (ma trận không phải là ma trận vuông, có thêm hàng hoặc cột đều bằng không)
Ví dụ 6: Viết lệnh tạo ma trận g được tạo bởi ma trận đơn vị (3x3) và có thêm 2 cột mà các phần tử đều bằng 0
0 0 1 0 0 d Các phép toán trên ma trận
- Phép chuyển vị: Ma trận chuyển vị A T của ma trận A được thành lập bằng cách đảo hàng thành cột của ma trận ban đầu
Hàm xác định ma trận chuyển vị trong MATLAB: >>A`
Ví dụ 1: Cho ma trận 1 2 3
+ Tìm ma trận chuyển vị của ma trận A
+ Kiểm tra kết quả bằng MATLAB
+ Ma trận chuyển vị của ma trận A:
+ Kiểm tra kết quả trên MATLAB:
Định thức của ma trận A, được ký hiệu là detA, được định :
Để tính định thức của ma trận A(nxm), có thể áp dụng công thức định nghĩa hoặc tách detA thành các định thức con
Hàm tính định thức trong MATLAB : >>det(A)
Ví dụ 2: Cho ma trận :
+ Tính định thức của ma trận A
+ Kiểm tra kết quả bằng MATLAB
+ Tính detA: Áp dụng công thức định nghĩa với n=3 và m=3:
Để tính định thức của ma trận A, có thể sử dụng công thức: detA = 2 × 0 - 3 × 1 + 5 × 1 - 1 × 2 + 0 × 5 - 1 × 1 + 2 × 0 - 1 × 3 + 9 Ngoài ra, một phương pháp khác là chọn một hàng hoặc một cột bất kỳ trong ma trận A và tính định thức dựa trên các định thức của các ma trận con không chứa hàng hoặc cột đã chọn Ví dụ, nếu chọn hàng 1, ta sẽ tiến hành tính toán dựa trên các phần tử của hàng đó.
+ Kiểm tra kết quả bằng MATLAB:
Xét ma trận vuông A(nxn):
Ma trận nghịch đảo A -1 của ma trận vuông A được định nghĩa là ma trận duy nhất thỏa mãn A*A -1 =1
Xác định ma trận nghịc đảo: Xét ma trận A(nxn) có định thức DA và Dij là định thức con của D bỏ đi hàng i, cột j
Ma trận nghịch đảo tồn tại khi và chỉ khi det(A)0 :
Trong đó: Aij được gọi là các phần phụ đại số,A ij ( 1) i j D ij
Hàm tính ma trận nghịch đảo trong MATLAB: >> inv(A)
Ví dụ 3: Cho ma trận
+ Tính ma trận nghịch đảo của ma trận A.
+ Kiểm tra kết quả bằng MATLAB
Tìm các phần phụ đại số A ij :
+ Kiểm tra kết quả bằng MATLAB:
- Phép tính cộng , trừ 2 ma trận: Điều kiện hai ma trận A và B phải có cùng kích thước hoặc một trong hai số vô hướng :
Ví dụ 4: Cho 2 ma trận:
+ Tính A+B + Tính A-B + Kiểm tra kết quả bằng MATLAB
+ Tính A+B: Lấy tổng từng phần tử tương ứng của 2 ma trận
+ Tính A-B: Lấy hiệu từng phần tử tương ứng của 2 ma trận
+ Kiểm tra kết quả bằng MATLAB:
- Phép nhân hai ma trận: Điều kiện số cột của ma trận A phải bằng số hàng của ma trận B, ngoại trừ một trong hai l số vô hướng:
Trong toán học, để thực hiện phép nhân hai ma trận A và B, số hàng của ma trận A phải bằng số cột của ma trận B, được biểu diễn bằng công thức X = A * B Ngoài ra, khi nhân hai ma trận với nhau theo cách nhân từng phần tử tương ứng, ký hiệu là X = A * B, thì kích thước của hai ma trận phải giống nhau.
Ví dụ 5: Cho 2 ma trận:
+ Kiểm tra kết quả bằng MATLAB
Khi thực hiện phép nhân ma trận C(1x3) với ma trận D(3x1), kết quả sẽ là ma trận C*D có kích thước (1x1) Phép nhân này được thực hiện bằng cách nhân từng phần tử của hàng ma trận C với các phần tử tương ứng trong cột ma trận D.
+ Tính D*C: Kích thước của ma trận D(3x1), C(1x3) nên D*C(3x3)
+ Tính C.*C: Phép nhân từng phần tử tương ứng của ma trận C với từng phần tử tương ứng của chính nó
+ Kiểm tra kết quả bằng MATLAB:
+ Lũy thừa một ma trận với số mũ k: X = A^k ( Tương đương với
+ Lũy thừa từng phần tử trong một ma trận: X = A.^k
Ví dụ 6: Cho ma trận
+ Tính A^2 + Tính A.^2 + Kiểm tra kết quả bằng MATLAB
+ Kiểm tra kết quả bằng MATLAB:
Đồ thị trên MATLAB
1.2.1 Các hàm vẽ đồ thị trên MATLAB a Đồ thị 2-D
- Các hàm vẽ đồ thị hàm số toán học:
Để vẽ đồ thị, sử dụng hàm plot(x1, y1, x2, y2, x3, y3, , xn, yn), trong đó x là biến được khai báo dưới dạng mảng Số lượng phần tử trong mảng càng nhiều thì độ chính xác của đồ thị càng cao Hàm số y = f(x) đại diện cho hàm toán học của x.
Hàm plot(x,y) vẽ đồ thị với trục hoành là các giá trị của mảng x và trục tung là các giá trị tương ứng của mảng y
Chú ý: Khi vẽ đồ thị, thông thường cần sử dụng một số lệnh sau:
+ Hiển thị đồ thị dưới dạng lưới: >> grid on + Lưu nhiều đồ thị trong 1 cửa sổ
Ví dụ 1: Cho vecto x=[0 3.7 6.1 6.4 5.8 3.9], biểu diễn đồ thị vecto x
% Hiển thị đồ thị grid on; xlabel('x') ylabel('y')
Hình 1.4 Minh họa hàm plot(x)
Ví dụ 2: Vẽ đồ thị hàm số y=sin(t)
0 1 2 3 4 5 6 7 x y t=0:pi/100:2*pi; % Mảng x từ 0 đến 2 pi, mỗi điểm cách nhau pi/100 y=sin(t); % Khai báo đồ thị hàm số y theo biến t plot(t,y) % Vẽ đồ thị hàm số y=sin(t)
% Hiển thị đồ thị grid on xlabel('t') ylabel('y')
Hình 1.5 Minh họa hàm plot(x,y)
Ví dụ 3: Cho 3 dòng điện được biểu diễn:
% Khai báo 3 dòng điện i_a0*cos(pi*t); i_b0*cos(pi*t+2*pi/3); i_c0*cos(pi*t-2*pi/3);
% Vẽ đồ thị 3 dòng điện theo biến t
% Hiển thị đồ thị grid on xlabel('t(s)') ylabel('i(t)(A)')
Hình 1.6 Minh họa hàm plot(x 1 ,y 2 ,x 2 ,y 2 ,x 3 ,y 3 )
Trong đó: X: mảng gồm m phần tử X = 1:M
Ví dụ 4: Cho số lượng sinh viên được xếp loại như sau:
Xuất sắc Giỏi Khá Trung bình Yếu
Vẽ đồ thị dạng cột biểu diễn số lượng sinh viên (đã xếp loại) theo từng lớp
Giải Thành lập các ma trận :
% Ma trận số liệu về sinh viên
% Ma trận số lượng lớp
Hình 1.7 Minh họa hàm bar(X,Y)
Trong đó: X: vectơ dữ liệu str: chuỗi chứa nhãn của đồ thị
Ví dụ 5 Cho số lượng phân bố kết quả học tập của sinh viên như sau:
Xếp loại Xuất sắc Giỏi Khá Trung bình Yếu
Viết chương trình vẽ đồ thị biểu diễn số lượng sinh viên mỗi loại trên biểu đồ quạt
Biểu diễn số lượng sinh viên mỗi loại trên biểu đồ quạt:
% Ma trận số lượng sinh viên
% Vẽ biểu đồ quạt pie(Y,{'Xuat sac','Gioi','Kha','Trung binh','Yeu'})
Hình 1.8 Minh họa hàm pie(X,str)
Ví dụ 2.6 Vẽ đồ thị dạng vùng cho hàm số y=sin(x)
%Khai báo biến x x =[0:pi/100:2*pi];
% Khai báo hàm số y theo biến x y = 2*sin(x);
% Vẽ đồ thị dạng vùng area(x,y);
% Hiển thị grid on xlabel('x')
Hình 1.9.Minh họa hàm area(x,y)
- Đồ thị của dữ liệu rời rạc
Ví dụ 2.7: Cho tín hiệu rời rạc cos( t) 0 50
Vẽ đồ thị tín hiệu rời rạc y
% Khai báo các tham số alpha =0.02; beta =0 5;
% Khai báo hàm số theo t y = exp(-alpha*t).*cos(beta*t);
% Vẽ đồ thị hàm số rời rạc stem(t,y);
Hình 1.10.Minh họa hàm stem(x,y)
- Đồ thị dạng bậc thang
Ví dụ 2.8 Cho hàm số sin ( t) 0 10
Vẽ đồ thị dạng bậc thang biểu diễn hàm số
Để vẽ đồ thị dạng bậc thang, chúng ta sử dụng hàm stairs(t,f), giúp tạo ra đồ thị rời rạc theo mức Để hiển thị rõ ràng dạng hàm số, ta có thể sử dụng hàm plot(x,y) kết hợp với đồ thị dạng bậc thang.
% Khai báo các tham số alpha = 0.01; beta = 0.5;
% Vẽ đồ thị hàm số dạng bậc thang stairs(t,y)
% Vẽ thêm đồ thị dạng nét đứt hold on; plot(t,y,' '); hold off
% Hiển thị grid on xlabel('t') ylabel('y')
Hình 1.11.Minh họa hàm stairs(t,f) b Đồ thị 3-D trong MATLAB:
- Hàm vẽ đồ thị trong không gian 3 chiều:
>>meshgrid(x,y): tạo ra mảng X, Y từ miền giá trị của x, y
Ví dụ1 : Vẽ mặt 3D sin ost z=t x t y c
% Khai báo biến t t = 0:0.02*pi:25*pi;
% Hiển thị grid on xlabel('x') ylabel('y') zlabel('z')
Hình 1.12 Minh họa hàm plot3(x,y,z)
Ví dụ 2: Vẽ mặt z(x, y)x 2 ye x 2 y 2 với 4 x y, 4
% Hiển thị grid on xlabel('x') ylabel('y') zlabel('z')
Hình 1.13 Minh họa hàm meshgrid(x,y)
- Hàm vẽ biểu đồ cột dạng 3D:
Trong đó: X – Ma trận trục hoành
Ví dụ 3: Cho số lượng sinh viên được xếp loại như sau:
Xuất sắc Giỏi Khá Trung bình Yếu
Vẽ đồ thị dạng cột 3D biểu diễn số lượng sinh viên (đã xếp loại) theo từng lớp Giải
Thành lập các ma trận :
% Khai báo ma trận số liệu về sinh viên
% Ma trận số lượng lớp
% Vẽ đồ thị cột dạng 3D bar3(X,Y)
% Hiển thị grid on xlabel('x') ylabel('y') zlabel('z')
Hình 1.14 Minh họa hàm bar3(X,Y)
- Hàm vẽ đồ thị quạt 3D:
Y – Ma trận dữ liệu đầu vào
Ví dụ 4 Cho số lượng phân bố kết quả học tập của sinh viên như sau:
Xếp loại Xuất sắc Giỏi Khá Trung bình Yếu
Viết chương trình vẽ đồ thị so sánh tỷ lệ % số lượng sinh viên mỗi loại Giải
So sánh tỷ lệ % về số lượng sinh viên ở mỗi loại
% Khai báo ma trận số lượng sinh viên
% Vẽ đồ thị quạt dạng 3D pie3(Y)
Hình 1.15 Minh họa hàm pie3(Y)
1.2.2 Chỉnh sửa đồ thị và chú thích a Chỉnh sửa đồ thị
MATLAB cho phép người sử dụng chỉnh sửa đường nét, màu sắc của các đồ thị theo cấu trúc: >>plot(x,y ,'đường nét màu sắc')
+ Đặc tả kiểu đường vẽ: Đường vẽ có thể là nét liền (mặc định, nếu không khai báo), nét chấm(.), nét cộng (+) do người sử dụng lựa chọn
+ Đặc tả màu và kích thước đường vẽ:
Màu sắc trong MATLAB được chỉnh sửa theo các mã màu quy ước
Bảng 1.14 Mã màu sắc đồ thị trong MATLAB
Mã màu Màu hiển thị r (red) Đỏ tươi g (green) Xanh lá b (blue) Xanh lục c (cyan) Xanh da trời m (Magenta) Đỏ sậm y (yellow) Vàng k (black) Đen w (while) Trắng
Chú ý: màu mặc định là blue (Xanh lục)
Ngoài ra,đồ thị còn được vẽ bởi nhiều điểm, các dạng điểm đánh dấu có thể được chỉnh sửa theo các mã quy ước
Bảng 1.15 Mã hình dạng điểm trong đồ thị MATLAB
Mã điểm Kiểu đánh dấu
* Điểm dấu sao d Điểm hạt kim cương
^ Điểm tam giác hướng lên
> Điểm tam giác hướng sang phải p Điểm ngũ giác
Điểm chấm x Điểm chữ thập s Điểm hình vuông v Điểm tam giác hướng xuống
< Điểm tam giác hướng sang trái h Điểm lục giác
Ví dụ 1: Cho hàm số y=tan(sin x)-sin(tan x)
+ Vẽ đồ thị hàm số + Yêu cầu chỉnh sửa đồ thị có các đặc tả sau :
‐ Đường vẽ là đường đứt nét( )
‐ Khối đánh dấu hình vuông (s), đường vẽ màu đỏ(r) Giải
+ Vẽ đồ thị hàm số:
% Khai báo biến x x = -pi : pi/10 : pi;
% Khai báo hàm số y y = tan(sin(x)) - sin(tan(x));
% Vẽ đồ thị hàm số y plot(x,y)
% Hiển thị grid on xlabel('x') ylabel('y')
Hình 1.16a.Đồ thị mặc định hàm plot(x,y) + Yêu cầu chỉnh sửa đồ thị có các đặc tả sau :
‐ Đường vẽ là đường đứt nét( )
Để chỉnh sửa đồ thị, bạn có thể thêm lệnh vào lệnh plot với cú pháp: plot(x, y, ' rs'), trong đó ' ' đại diện cho nét đứt, 'r' là màu đỏ và 's' là điểm hình vuông.
Hình 1.16b.Đồ thị hàm plot(x,y) sau chỉnh sửa màu và nét vẽ
-3 -2 -1 0 1 2 3 x y b Chú thích cho đồ thị
Khi vẽ đồ thị, bạn cần cung cấp các thông tin quan trọng như tên đồ thị, tên trục tung và trục hoành, cùng với đơn vị tính Ngoài ra, việc đánh dấu các điểm trên đồ thị cũng rất cần thiết để đảm bảo sự rõ ràng và chính xác trong việc trình bày dữ liệu.
MATLAB cung cấp các lệnh ghi nhãn lên đồ thị gồm :
Bảng 1.17 Các lệnh ghi nhãn lên đồ thị trong MATLAB
Các lệnh cơ bản trong đồ họa bao gồm: "title" để thêm nhãn cho đồ họa, "xlabel" và "ylabel" để thêm nhãn cho trục x và trục y tương ứng, "zlabel" để thêm nhãn cho trục z, "legend" để thêm chú giải cho đồ thị, "text" để hiển thị chuỗi văn bản tại vị trí cụ thể, và "gtext" để đặt văn bản lên đồ họa thông qua chuột.
\bf bold font (chữ in đậm)
\it italics font (chữ in nghiêng)
\sl oblique font (chữ nghiêng)
Các kí tự đặc biệt xem trong String properties của Help
Sử dụng các lệnh xlabel, ylabel và zlabel để gán nhãn cho các trục tọa độ Để thêm văn bản vào bất kỳ vị trí nào trên hình vẽ, bạn có thể sử dụng hàm gtext.
Chú ý: Nếu muốn đồ thị hiển thị ở dạng các ô lưới, sử dụng lệnh >> grid on, muốn bỏ chức năng này sử dụng lệnh >>grid off
Ví dụ 2: Cho hàm số y=sin x
Viết chương trình vẽ đồ thị hàm số và sử dụng các lệnh ghi nhãn để đặt tên cho đồ thị và các trục
Chỉ ra điểm cực đại và điểm cực tiểu trên đồ thị
% Khai báo biến x x = - pi: 1: pi;
% Khai báo hàm số y y = sin(x);
% Vẽ đồ thị hàm số plot(x, y)
% Hiển thị dạng lưới grid on
% Nhãn cho trục tung ylabel('sin(t)', 'Fontsize', 13)
% Tên đồ thị title('Do thi ham so y=sin(x)', 'Fontsize', 13)
Để đánh dấu các điểm trên đồ thị, bạn có thể sử dụng hàm gtext() Khi đó, một dấu thập sẽ xuất hiện trên đồ thị, cho phép bạn click vào điểm cần đánh dấu Ví dụ, để chú thích cho điểm cực đại, bạn sử dụng lệnh gtext('Diem cuc dai'), và để chú thích cho điểm cực tiểu, sử dụng lệnh gtext('Diem cuc tieu').
Hình 1.17b Minh họa lệnh ghi chú thích gtext()
Do thi ham so y=sin(x)
Do thi ham so y=sin(x)
1.2.3 Đồ thị tọa độ Logarit và tọa độ cực a Tọa độ Logarit Đồ thị Logarit là ứng dụng quan trọng trong Matlab, có rất nhiều ứng dụng trong kỹ thuật như đồ thị Bode, biểu diễn độ lợi của hệ thống Đồ thị Logarit có các cấu trúc sau:
Bảng 1.18 Hàm vẽ đồ thị Logarit
Lệnh loglog (x, y) biểu diễn trục hoành là log 10 (x) và trục tung là log 10 (y) Lệnh semilogx (x, y) có trục hoành là log 10 (x) và trục tung là y Cuối cùng, lệnh semilogy (x, y) thể hiện trục hoành là x và trục tung là log 10 (y).
Ví dụ 1: Cho một hệ thống khuếch đại âm thanh có hệ số khuếch đại (hệ số tăng ích hay độ lợi) thay đổi theo tần số như sau:
Vẽ đồ thị Bode đặc trưng cho hệ thống
% Khai báo hệ số khuếch đại g = [ 5 10 30 32 34 34 34 34 32 30 10 5];
% Vẽ đồ thị logarit semilogx(f, g)
% Tên và chú thích cho đồ thị title('Bode plot of an amplifier') xlabel('Frequency in Hz') ylabel('Gain in dB') grid on
Hình 1.18 Minh họa hàm vẽ đồ thị logarit b Tọa độ cực
Số phức có thể được biểu diễn theo nhiều cách khác nhau, trong đó dạng cực được đặc trưng bởi độ lớn và góc pha trên mặt phẳng phức Để vẽ đồ thị trên tọa độ cực, MATLAB sử dụng hàm phù hợp.
>> polar(theta,rho) Ngoài ra, để biểu diễn vecto phức sử dụng hàm:
>> compass(theta,rho) Trong đó: theta: góc pha quy đổi sang radian rho: độ lớn
Ví dụ 2: Cho số phức zre j với r 1.2; 10 0
Vẽ đồ thị của z trên tọa độ cực và biểu diễn số phức z dưới dạng vecto
+ Đồ thị tọa độ cực:
% Khai báo các tham số r = 1.2; theta = 10*pi/180;
% Vẽ đồ thị dạng cực polar(theta,r)
% Tên đồ thị title('Polar Plot')
Bode plot of an amplifier
Hình 1.19a Minh họa hàm vẽ đồ thị tọa độ cực
Biểu diễn vecto phức: compass(theta,r) % Biểu diễn vecto phức
Hình 1.19b Minh họa hàm vẽ số phức dạng vecto
1.2.4 Điều khiển màn hình đồ thị
MATLAB bao gồm hai cửa sổ chính: cửa sổ lệnh và cửa sổ đồ thị Tùy thuộc vào phiên bản phần mềm, người dùng có thể hiển thị từng cửa sổ một hoặc cả hai cùng lúc Các lệnh điều khiển màn hình giúp tùy chỉnh cách hiển thị này.
Bảng 1.19 Các lệnh điều khiển màn hình đồ thị
Trong Matlab, một số lệnh hữu ích bao gồm: "shg" để hiển thị cửa sổ đồ thị, "any key" để chuyển sang cửa sổ lệnh, "clc" để xóa cửa sổ lệnh, "clg" để xóa sổ đồ thị, và "home" để trở về con trỏ lệnh Để dễ dàng biểu diễn và so sánh các đồ thị, bạn có thể sử dụng lệnh "subplot" để phân chia cửa sổ đồ thị thành nhiều phần.
Trong bài viết này, chúng ta sẽ tìm hiểu về các chỉ số liên quan đến vị trí hiển thị đồ thị, bao gồm chỉ số hàng (i), chỉ số cột (j) và chỉ số thứ tự hiển thị (k) Những chỉ số này đóng vai trò quan trọng trong việc xác định cách thức và thứ tự mà đồ thị được trình bày.
Ví dụ 1: Cho 3 dòng điện được biểu diễn:
Vẽ đồ thị i a (t), i b (t), i c (t) trên 3 đồ thị khác nhau và hiển thị trong cùng một cửa sổ đồ thị
% Khai báo các biến và đồ thị t=0:0.1:10; i_a0*cos(pi*t); i_b0*cos(pi*t+2*pi/3); i_c0*cos(pi*t-2*pi/3);
% Vẽ đồ thị i a (t),i b (t),i c (t) theo hàng ngang
% Đồ thị dòng i a (t) subplot(1,3,1) plot(t,i_a) title('i_a(t)') xlabel('t(s)') ylabel('i(V)')
% Đồ thị dòng i b (t) subplot(1,3,2) plot(t,i_b) title('i_b(t)') xlabel('t(s)') ylabel('i(V)')
% Đồ thị dòng i c (t) subplot(1,3,3) plot(t,i_c) title('i_c(t)') xlabel('t(s)') ylabel('i(V)')
Hình 1.20a Minh họa lệnh subplot theo cột Muốn hiển thị theo hàng dọc ta sử dụng lệnh subplot theo các thông số: subplot(3,1,1) subplot(3,1,2) subplot(3,1,3) Kết quả:
Hình 1.20b Minh họa lệnh subplot theo hàng
Các toán tử điều khiển
Vòng lặp for dùng khi biết trước số lần lặp
Cú pháp như sau: for = : : end
Để tính tổng của bình phương các số từ 1 đến 100, ta khởi tạo biến tổng với giá trị bằng 0 Sử dụng vòng lặp từ 1 đến 100, ta cộng bình phương của từng số vào tổng Cuối cùng, hiển thị giá trị của tổng S.
Ví dụ 2: Cho hàm số (t) 2
Với t=0 đến 10ms, vẽ đồ thị hàm số
% Khai báo hàm số for i= 0:10 x(i+1) = 2*i; y(i+1) = 2*sin(i); end
% Vẽ đồ thị hàm số plot(x,y) grid on
% Tên đồ thị title('Do thi ham so dung toan tu for') xlabel('x') ylabel('y')
Hình 1.21 Minh họa hàm sin dùng toán tử for
Do thi ham so dung toan tu for x y
Ví dụ 3: Viêt chương trình nhập giá trị đầu vào cho N trở kháng cho mạch điện Giải
N=input('Nhập số trở kháng:'); for i=1:N fprintf('Nhập Z(%d)=',i); z(i)=input('='); end
Kết quả: Giả sử nhập vào 3 trở kháng như sau
Nhập số trở kháng:3 Nhập Z(1) Nhập Z(2) Nhập Z(3)0
1.3.2 Toán tử if a Cấu trúc đơn giản if
end Nếu cho kết quả đúng thì phần trong thân của if được thực hiện
thường là các phép toán so sánh giữa hai ma trận: Bảng 1.20 Các phép toán so sánh hai ma trận
Phép so sánh Ý nghĩ a=b a lớn hơn hoặc bằng b a==b a bằng b a~=b a khác b
Hoặc có thể là phép so sánh giữa hai toán tử logic: Bảng 1.21 Các phép so sánh toán tử logic
Phép so sánh Ý nghĩ a&b a and b a!b a or b
Kết quả của các phép toán này, nếu biểu thức đúng thì trả ra giá trị là 1 và nếu sai thì trả ra giá trị là 0
Ví dụ1: Cho ma trận a 1 2 3 4 5 6 và b 1 2 3 3 3 6
Viết chương trình so sánh 2 ma trận
Kết quả trả về là một ma trận 1x6, trong đó các phần tử có giá trị 1 tương ứng với 4 phần tử bằng nhau của hai ma trận, trong khi các phần tử có giá trị 0 tương ứng với 2 phần tử khác nhau Cấu trúc điều kiện if được sử dụng đầy đủ với cú pháp if .
if
end
… c Cấu trúc if- elseif if
elseif
elseif
… end d Cấu trúc if-else if
else end
Nếu đúng thì thực hiện , nếu sai thì thực hiện
Ví dụ 2: Cho bộ chuyển đổi A/D 3 bit với tín hiệu đầu vào là tín hiệu tương tự x và tín hiệu đầu ra là tín hiệu số theo biểu thức:
Viết function thực hiện biến đổi tín hiệu x sang y, kiểm tra hoạt động của hàm với tín hiệu tương tự x=-1.25; 2.57 và 6.0V
Giải function Y_dig = adc_3(X_analog)
% Hàm adc_3 dùng chuyển đổi tín hiệu tương tự sang số 3 bit
% Sử dụng hàm: Y_dig = adc_3(X_analog)
% Y_dig là tín hiệu số
% X_analog là tín hiệu tương tự if X_analog < -2.5
Kiểm tra lại chương trình :
Vòng lặp while dùng khi không biết trước số lần lặp
Cú pháp : while
Khi kiểm tra điều kiện đúng thì chương trình sẽ thực hiện
Sau khi thực hiện , chương trình sẽ kiểm tra lại, nếu
vẫn đúng thì thực hiện lại ; trường hợp sai thì sẽ thoát ra khỏi vòng lặp để thực hiện
Ví dụ 3: Viết chương trình in ra chuoi “Hello” lên mà hình với số lần nhập từ bàn phím
Giải n = input('Nhập số lần in:'); i = 0; while i ~= n disp('Hello'); i = i + 1; end
Kết quả thực hiện trên cửa sổ lệnh với n=3:
Nhập số lần in:3 Hello Hello Hello
Ví dụ 4: Xác định số lượng các số nguyên liên tiếp thỏa mãn tổng của chúng luôn nhỏ hơn hoặc bằng 210
The code initializes an integer counter and a sum variable, setting the maximum value to 210 It employs a while loop to accumulate the sum until it reaches or exceeds the maximum value Upon exiting the loop, it checks if the sum equals the maximum, determining the total count of integers used If the sum exceeds the maximum, it adjusts the total count accordingly, subtracting the last added integer from the sum This process effectively calculates the total integers and their cumulative sum up to a specified limit.
Kết quả: last_int 21 num_int 20 tt_int_ct 210
1.3.4 Các hàm vào/ra a Nhập dữ liệu từ bàn phím
Có 2 cách để nhập dữ liệu:
- Gán giá trị trực tiếp cho biến
Cú pháp: x=a Trong đó: x là tên biến a là giá trị của biến
- Nhập số liệu từ bàn phím bằng hàm input():
Cú pháp: x = input('prompt') Trong đó: x là tên biến
'prompt' là dòng văn bản mà người sử dụng nhập vào
Ví dụ: >> x=input('Nhập vào x=')
Nhập vào xChú ý: Biến khi nhập vào sẽ có kiểu mặc định là kiểu long, muốn thay đổi kiểu dữ liệu nhập vào ta sử dụng hàm format
Bảng 1.22 Định dạng kiểu dữ liệu trong MATLAB
Các lệnh định dạng số trong lập trình bao gồm: "format short" để hiển thị số thập phân với 5 ký tự sau dấu phẩy, "format long" cho số thập phân với 15 ký tự sau dấu phẩy, và "format rat" để trình bày số hữu tỉ dưới dạng phân số Đối với số dạng hàm mũ, "format short e" hiển thị 5 ký tự sau dấu phẩy, trong khi "format long e" hiển thị 15 ký tự Lệnh "format hex" được sử dụng để hiển thị số thập lục phân Cuối cùng, lệnh "format +" sẽ hiển thị dấu “+” cho giá trị dương và số “0” cho giá trị âm.
Ví dụ: Cho biến x /3, thay đổi kiểu dữ liệu của x và hiển thị ra cửa sổ lệnh Giải
>> x x + b Xuất dữ liệu ra màn hình
Có 2 cách để hiển thị dữ liệu
Để kiểm tra giá trị của một biến trong MATLAB, bạn có thể nhập tên biến vào cửa sổ lệnh Nếu biến đã được khai báo, chương trình sẽ hiển thị tên và giá trị của biến đó.
>> x % Gọi biến x đã được nhập x 10
- Cách 2: Dùng hàm disp() và fprintf() để hiển thị các biến
>> disp(x) % Hàm hiển thị biến x đã được nhập
10 + Hàm fprintf(): Hiển thị giá trị của biến bằng biểu thức biến thông qua các ký tự quy ước:
>> fprintf('x=%f',x) % Hàm hiển thị biến x đã được nhập x.000000
Trong đó %f là ký tự thay thế giá trị thực của biến x
Khi biến có kiểu dữ liệu khác, ta sử dụng các ký tự sau để thay thế
Bảng 1.23 Các ký tự thay thế biến trong MATLAB
Ký tự Kiểu dữ liệu
%i Số thập phân có dấu
%o Số bát phân không dấu
%u Số thập phân không dấu
Ví dụ: Sử dụng MATLAB, viết chương trình chuyển đổi nhiệt độ Fahrenheit sang độ C
Nhiệt độ Fahrenheit từng là thang đo phổ biến cho việc đo đạc thời tiết, công nghiệp và y tế tại hầu hết các quốc gia nói tiếng Anh cho đến những năm 1960.
Nhiệt độ Fahrenheit được chuyển đổi sang nhiệt độ C theo công thức:
Như vậy, chương trinh cần nhập một biến nhiệt độ Fahrenheit vào từ bàn phím và xuất ra dữ liệu là một biến nhiệt độ C
Chương trình được viết như sau: f=input('Nhập nhiệt độ Fehrenheit:') c=5/9*(f-32); fprintf('%5.2f độ Fahrenheit là %5.2f độ C', f,c)
Chạy chương trình với nhiệt độ Fehrenhei nhập vào là 37F, kết quả:
Nhập nhiệt độ Fehrenheit:37 f 37 37.00 độ Fahrenheit là 2.78 độ C c Sử dụng công cụ Debug để gỡ lỗi trong MATLAB
MATLAB cung cấp một công cụ gỡ rối mạnh mẽ gọi là debug, giúp lập trình viên theo dõi quá trình hoạt động của chương trình Công cụ này cho phép phát hiện các lỗi trong mã nguồn, từ đó dễ dàng xác định và sửa chữa những điểm sai sót trong ý tưởng lập trình.
Trình Debug thường gồm tính năng thực hiện tuần tự các lệnh và song song với
Để thực hiện việc debug bằng cách chạy tuần tự từng dòng lệnh, bạn cần chèn một breakpoint (điểm ngắt) vào chương trình Sau khi chương trình dừng tại điểm ngắt, bạn có thể sử dụng các tính năng Step hoặc Step In để theo dõi từng dòng lệnh trong quá trình debug.
- Nhấn chạy chương trình thì chương trình sẽ chạy cho tới câu lệnh có breakpoint thì nó sẽ ngừng giữa chừng để bắt đầu quá trình debug:
Bắt đầu sử dụng lệnh Step (F10) hoặc Step In (F11) để lần lượt theo dõi từng câu lệnh và hàm, giúp bạn quan sát quá trình thực hiện lệnh diễn ra như thế nào.
Khác biết giữa Step và Step In:
+ Step chỉ thực hiện tất cả các lệnh trong dòng đó và nhảy sang dòng lệnh tiếp theo
Lệnh "Step In" cho phép thực hiện từng lệnh nhỏ trong dòng lệnh, bao gồm cả việc đi vào các hàm và thực hiện từng lệnh con bên trong Ngược lại, lệnh "Step" chỉ thực hiện toàn bộ hàm và chuyển ngay đến lệnh tiếp theo trong file chính.
+ Step Out ngược lại với Step In, khi các bạn đang ở trong hàm, dùng
Bước 3 Quan sát giá trị các biến
Sử dụng lệnh Step và Step In để điều khiển quá trình thực hiện lệnh theo ý muốn sau mỗi bước Theo dõi giá trị của biến trong cửa sổ workspace để kiểm tra xem chương trình có hoạt động đúng như mong đợi hay không, từ đó xác định và khắc phục các lỗi xảy ra.
Sau khi Debug bỏ breakpoint bằng cách đặt dấu nháy ở dòng lệnh, nhấn F12
Ví dụ: Cho chương trình tính giai thừa của số tự nhiên n=3 gt=1; n=3; for i=0:n; gt=gt*i; end disp(gt)
Khi chạy chương trình, không có thông báo lỗi nhưng kết quả bằng 0 (lỗi giải thuật)
Sử dụng công cụ Debug để sửa lỗi sai trong chương trình
Hình 1.22a Đặt dấu nháy chương trình tới điểm cần ngắt
Hình 1.22b Chọn Debug/Set Breakpoint để chèn điểm ngắt
Hình 1.22c Breakpoint được chèn (dấu chấm đỏ ở dòng lệnh tương ứng)
Nhấn biểu tượng “play” để bắt đầu mô phỏng
Hình 1.23a Con trỏ lệnh (mũi tên xanh) dừng ở dòng có Breakpoint
Hình 1.23b Nhấn Step (F10) để chương trình chạy từng bước
Bước 3 : Quan sát giá trị các biến
Hình 1.24 Cửa sổ Workspace Chạy từng bước, quan sát giá trị các biến trong quá trình thực thi lệnh trên Workspace tại cửa sổ lệnh:
Giá trị khởi gán ban đầu i=0 dẫn đến biến gt=0, và các giá trị tiếp theo khi i thay đổi cũng giữ nguyên bằng không Do đó, chúng ta cần khai báo lại i từ 1 đến n.
Chương trình được viết lại: gt=1; n=3; for i=1:n; gt=gt*i; end disp(gt)
Nhấn F12 để bỏ các Breakpoin và chạy lại chương trình mới sửa
Bài 1.1 Cho điện áp xả của trên tụ điện v(t) 10(1 e 0.2 t )
Vẽ đồ thị v(t) với t=0 đến 50s, lấy mẫu 5s
Xác định phần thực, phần ảo, modul, argumet của z
Bài 1.3 Viết function tính tổng trở của một nhánh gồm n điện trở mắc nối tiếp Bài 1.4 Viết function tính tổng trở của một nhánh gồm n điện trở mắc song song Bài 1.5 Cho số phức z0.5 j6 3.5 e j 0.6 (3 j6)e j 0.3
Biểu diễn số phức dưới dạng đại số và dạng cực
Bài 1.6 Viết function tính giai thừa của một số tự nhiên n
Sử dùng hàm để tính 7! x3!4!
Bài 1.7 Viết fuction tính diện tích tam giác khi biết độ dài 3 cạnh là a, b, c
Trong MATLAB, để thực hiện các yêu cầu sau: a Gán vector x là dòng thứ nhất của ma trận A b Gán ma trận y là hai dòng còn lại của A c Tính tổng theo dòng thứ hai của ma trận A d Tính tổng theo cột thứ hai của ma trận A e Tìm giá trị lớn nhất và nhỏ nhất trong ma trận A f Tính tổng tất cả các phần tử của ma trận A Bài 1.9 yêu cầu giải hệ phương trình tuyến tính.
Bài 1.10 Cho lực đẩy Coulomb giữa hai proton: 1 2 2
Giả sử r thay đổi từ 1.0 10x 15 m đến 1.0 10x 14 m với khoảng cách 2.0 10x 15 m
Viết chương trình vẽ đồ thị biểu diễn sự thay đổi lực theo khoảng cách
Bài 1.11 Cho phương trình dòng điện qua một transistor trường:
T là nhiệt độ Kelvin (Giả sử xét với nhiệt độ phòng là 23 0 C) q là điện tích của 1 electron (q=1,602.10 -19 C)
Sử dụng phần mềm Matlab để viết chương trình vẽ đồ thị dòng điện i DS tương ứng với các giá trị U GS từ 1,5V đến 5V, với các bước nhảy 0,5V Chương trình cần có tên đồ thị, tên các trục tọa độ và hiển thị đồ thị dưới dạng lưới Bài 1.12 yêu cầu phân tích một hệ thống thông tin với tín hiệu tin tức.
Và tín hiệu sóng mang c t ( ) 10cos(10000 ) t
Biết tín hiệu điều chế có phương trình: s t ( ) m t c t ( ) ( )
Dùng phần mềm Matlab viết chương trình vẽ đồ thị m(t), c(t) và s(t) : a Trên cùng một hệ tọa độ b Trên 3 hệ tọa độ hiển thị trên cùng một đồ thị
Hướng dẫn giải bài tập chương 1
Bài 1.1 Cho điện áp xả của trên tụ điện v(t) 10(1 e 0.2 t )
Vẽ đồ thị v(t) với t=0 đến 50s, lấy mẫu 5s
Giải t=0:5:50; vt*(1-exp(-0.2*t)); plot(t,vt) grid on title('Do thi dien ap xa tren tu dien') xlabel('t(s)') ylabel('v(t)(V)')
Hình BT1.1 Điện áp xả trên tụ
Xác định phần thực, phần ảo, modul, argumet của z
Do thi dien ap xa tren tu dien t(s) v (t )( V ) z_1 17.2000 + 6.4000i
Bài 1.3 Viết function tính tổng trở của một nhánh gồm n điện trở mắc nối tiếp
Giải function[z]=noi_tiep(r) n=input('Nhập n=') for i=1 :n fprintf('Nhập R%d',i) r(i)=input('='); end; z=sum(r); disp('Giá trị tổng trở mắc nối tiếp') disp(z); end
Bài 1.4 Viết function tính tổng trở của một nhánh gồm n điện trở mắc song song
Giải function[z]=song_song(r) n=input('Nhap vao n=') for i=1 :b fprintf('NhậpR%d',i) r(i)=input('='); end; z=sum(1./r); disp('Giá trị tổng trở mắc song song') disp(z) end
Biểu diễn số phức dưới dạng đại số và dạng cực Giải
% Khai báo z z=0.5+j*6+3.5*exp(j*0.6)+(3+j*6)*exp(j*0.3*pi);
% Biểu diễn dạng đại số disp('Dạng đại số:') z
% Biểu diễn z dạng cực z_mags(z); z_phase=angle(z)*180/pi; disp('Dạng cực:') fprintf('z=%5.2f*e^(j*%5.2f)',z_mag,z_phase)
Bài 1.6 Viết function tính giai thừa của một số tự nhiên n
Giải function [ gt ] = giai_thua( N )
N=input('Nhập N='); if N==0 gt=1; elseif N0 n=1; for i=1:N gt=gt*i; end; disp(gt) end; end
Sử dùng hàm để tính 7! x3!4!
>> x=giai_thua(7)/(giai_thua(3)*giai_thua(4)) x 35
Bài 1.7 Viết fuction tính diện tích tam giác khi biết độ dài 3 cạnh là a, b, c
Giải function [ s ] = dien_tich_tam_giac(a,b,c) if (((a+b)>c)&((b+c)>a)&((c+a)>b)&(a>0)&(b>0)&(c>0)) p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); else fprintf('%5.2f,%5.2f,%5.2f không phải là 3 cạnh của tam giác',a,b,c); end
ỨNG DỤNG MATLAB GIẢI TÍCH MẠCH ĐIỆN TUYẾN TÍNH Ở CHẾ ĐỘ XÁC LẬP
Phân tích mạch điện một chiều
2.1.1 Các khái niệm a Cấu trúc mạch điện
Cấu trúc mạch điện bao gồm các thành phần chính như nhánh, nút, vòng, mắt và lưới Trong đó, nhánh được định nghĩa là một đường có chứa một hoặc nhiều phần tử được kết nối theo phương pháp đấu nối tiếp.
Hình 2.1 Nhánh trong mạch điện + Nút: là giao điểm của tối thiểu ba nhánh trong một mạch điện
Ví dụ: Mạch điện có 4 nút A, B, C, D
Vòng là một hệ thống kín bao gồm nhiều nhánh, trong đó mỗi nút chỉ được đi qua một lần duy nhất Sự hình thành các vòng khác nhau phụ thuộc vào phương pháp tổ hợp các nhánh trong mạch điện.
Hình 2.3 Vòng trong mạch điện + Mắt lưới: được gọi là một vòng cơ bản, là một vòng mà bên trong không tìm thấy được vòng nào khác
Ví dụ: Mạch điện 3 mắt lưới độc lập
Mạch điện 3 mắt lưới độc lập bao gồm các phần tử nguồn được phân loại thành nguồn áp độc lập, nguồn áp phụ thuộc, nguồn dòng độc lập và nguồn dòng phụ thuộc.
Nguồn áp độc lập là loại nguồn điện có khả năng duy trì điện áp V giữa hai đầu của nó, bất chấp các phần tử khác trong mạch và dòng điện chạy qua nguồn.
Hình 2.5 Ký hiệu nguồn áp độc lập
Nguồn dòng độc lập có khả năng duy trì dòng điện i qua nhánh chứa nguồn theo hàm xác định theo thời gian t, bất chấp sự ảnh hưởng của các phần tử khác trong mạch mà nguồn kết nối.
Dòng điện i(t) của nguồn dòng, độc lập với điện áp đặt ngang qua hai đầu nguồn dòng
Chú ý : Trong thực tế, nguồn dòng thường chỉ gặp trong các mạch tương đương thay thế cho các linh kiện bán dẫn, hay trong các mạch bốn cực
Hình 2.6 Ký hiệu nguồn dòng độc lập Nguồn áp phụ thuộc:
Nguồn áp phụ thuộc, hay còn gọi là nguồn áp bị điều khiển, là loại nguồn điện có giá trị điện áp v giữa hai đầu phụ thuộc vào một điện áp hoặc dòng điện khác trong mạch.
Nguồn áp phụ thuộc được chia thành hai dạng:
+ Nguồn áp phụ thuộc áp
+ Nguồn áp phụ thuộc dòng
Hình 2.7 Ký hiệu nguồn áp phụ thuộc
Nguồn dòng phụ thuộc, hay còn gọi là nguồn dòng bị điều khiển, là loại nguồn mà giá trị dòng điện i tại nguồn này phụ thuộc vào một điện áp hoặc dòng điện từ một vị trí khác trong mạch.
Nguồn dòng phụ thuộc được chia thành hai dạng:
+ Nguồn dòng phụ thuộc áp
+ Nguồn dòng phụ thuộc dòng
Hình 2.8 Ký hiệu nguồn dòng phụ thuộc c Các định luật cơ bản của mạch điện
- Định luật Kirchhoff 1 (KCL- Kirchhoff Current Law): Định luật này có thể phát biểu theo một trong hai phương pháp :
Theo cách phát biểu này, chúng ta có thể qui ước :
- Dòng điện đi vào nút có giá trị dương
- Dòng điện đi ra khỏi nút có giá trị âm
Tổng giá trị dòng điện vào một nút luôn bằng tổng giá trị dòng điện ra khỏi nút Khi phân tích mạch điện, nếu chưa xác định được hướng dòng điện trên nhánh, có thể tự do chọn hướng chuyển dịch cho dòng điện Kết quả sẽ cho biết được hướng và giá trị dòng điện thực tế.
- Nếu giá trị tính được có giá trị dương dòng điện có hướng thực tế như đã chọn
- Nếu giá trị tính được có giá trị âm dòng điện có hướng thực tế ngược với hướng đã chọn
- Định luật Kirchhoff 2 (KVL - Kirchhoff Voltage Law): Định luật này có thể phát biểu theo một trong hai phương pháp :
Tổng đại số điện áp của các nhánh theo một vòng kín bằng không
Theo cách phát biểu này, muốn viết phương trình định luật Kirchhoff2 chúng ta cần thực hiện qui trình sau :
- Chọn chiều dòng điện chạy trong vòng khảo sát (chọn tùy ý)
- Xác định điện áp xuất hiện giữa hai đầu các phần tử
Bắt đầu từ phần tử chuẩn trong mạch, theo chiều dòng điện để thiết lập phương trình điện áp Nếu điện áp trên các phần tử cùng hướng với điện áp của phần tử chuẩn, các giá trị này sẽ dương; ngược lại, nếu điện áp trên các phần tử trái ngược với hướng của phần tử chuẩn, các giá trị này sẽ âm.
Nếu trong mạch ta xác định phân biệt các phần tử nguồn và phần tử tiêu thụ, ta có thể phát biểu như sau:
Tổng điện áp cung cấp từ nguồn bằng tổng điện áp đặt trên từng phần tử tiêu thụ
2.1.2 Các phương pháp giải tích mạch điện:
Từ hai định luật Kirchhoff có thể lập được các phương trình của mạch
- Định luật Kirchhoff 1 cho (N n – 1) phương trình độc lập ( N n là số nút trong mạch điện)
- Định luật Kirchhoff 2 cho (N nh -N n + 1) phương trình độc lập (N nh là số nhánh trong mạch điện)
Dựa trên các phương trình liên quan đến dòng điện và điện áp, các nhà nghiên cứu đã phát triển các phương pháp phân tích mạch điện bằng cách biến đổi các mối quan hệ này để giải theo các ẩn số mới Hai phương pháp điển hình trong phân tích mạch điện là Phương pháp điện áp nút (Nodal Analysis) và Phương pháp dòng điện vòng (Loop Analysis).
Phương pháp điện áp nút cho phép xác định dòng điện chạy trong các nhánh mạch bằng cách thay thế các ẩn số thực là dòng điện bằng các ẩn số trung gian là điện áp tại các nút Trong quá trình này, cần chú ý đến việc biểu diễn các nhánh trong mạch theo dẫn nạp để đảm bảo tính chính xác và hiệu quả của phương pháp.
Phương pháp điện áp nút trong giải tích mạch điện bao gồm các bước như sau: Đầu tiên, đánh dấu các nút A, B, C, D, O và chọn một nút làm gốc với điện thế quy ước là 0V Điện thế của các nút còn lại sẽ được tính so với nút gốc Đồng thời, các nhánh của mạch được biểu diễn dưới dạng dẫn nạp.
Bước 2: Thành lập hệ phương trình điện áp nút cho mạch Hệ phương trình viết cho (N n -1) nút, trừ nút gốc Cơ sở là định luật Kirchhoff 1
Phương trình dòng điện tại một nút có thể viết theo thuật toán:
N: Số nút trong mạch điện
Y n : Dẫn nạp trên các nhánh tại nút đang xét
U n : Điện áp tại nút đang xét
Y k : Dẫn nạp các nhánh lân cận
U k : Điện áp các nút lân cận với nút đang xét
I sk : Dòng điện đi vào nút đang xét Chú ý: I sk mang dấu “+” nếu chiều của Is k đi vào nút đang xét và ngược lại thì mang dấu “-”
Bước 3: Xây dựng hệ phương trình điện áp nút dạng ma trận
Hệ phương trình có thể viết dưới dạng phương trình ma trận:
+ Y : là ma trận dẫn nạp nút, nó có đặc điểm là:
Các phần tử trên đường chéo chính là các dẫn nạp nút
Các phần tử hai bên đường chéo là dẫn nạp chung đối xứng nhau qua đường chéo chính
+ V : là ma trận điện áp nút, chứa các phần tử là giá trị điện áp tại các nút quy ước A, B, C, D, O, là ẩn số trung gian cần tìm
+ I s : là ma trận chứa các phần tử là các nguồn dòng đi vào hoặc đi ra nút đang xét
Bước 4: Giải hệ phương trình để tìm ra ma trận điện áp nút
Nhân cả 2 vế với ma trận Y 1 : Y 1 Y * V Y 1 I s
Trong MATLAB, để tìm nghịch đảo của ma trận A ta sử dụng lệnh
Bước 5: Hiển thị kết quả
Sau khi giải hệ phương trình, ma trận Is được xác định có dạng ma trận m hàng và 1 cột, trong đó các phần tử của ma trận thể hiện giá trị điện áp tại từng nút.
Từ giá trị trung gian này, ta xác định được giá trị cường độ dòng điện trong mỗi nhánh
Trong MATLAB, ta sử dụng lệnh >>disp(I) để hiển thị kết quả
Ví dụ 1 : Cho mạch điện như hình vẽ
Viết chương trình tính dòng điện trên mỗi nhánh bằng phương pháp điện áp nút
Giải Bước 1: Ký hiệu các nút lần lượt là V 1 , V 2 , V 3 và chọn nút gốc như hình vẽ
Bước 2: Viết phương trình điện áp nút tại từng nút:
Xét V 1 : Y 1Y V 2 1 Y V 2 2 YV 1 3 I s 1 Xét V 2 : Y 2 Y 3 Y V 4 2– Y V 2 1 Y V 4 3 0 Xét V 3 : Y 4Y V 1 3– YV 1 1– Y V 4 2 I s 2 Bước 3: Xây dựng hệ phương trình điện áp nút:
Ta biến đổi hệ như sau:
Đưa hệ phương trình về dạng ma trận: s1 1
, gọi là ma trận dẫn nạp
, gọi là ma trận điện áp nút
, gọi là ma trận nguồn dòng
Ta được hệ: Y V Is , gọi là hệ phương trình điện áp nút dạng ma trận Bước 4 và bước 5, sử dụng Matlab để thực hiện:
% Nhập vào các tham số đầu vào
% Thành lập các ma trận
% Tính ma trận điện áp nút và các dòng nhánh
% Hiển thị kết quả disp(' Giá trị các dòng nhánh');
Kết quả chương trình trên cửa sổ lệnh:
Giá trị các dòng nhánh:
I1=-0.4286 I2=5.4286 I3=7.0000 I4= -1.5714 Nhận xét: I 1 và I 4 mang dấu âm nên có chiều ngược lại so với chiều ký hiệu trên hình vẽ b Pháp pháp dòng vòng
Phương pháp dòng điện là một kỹ thuật phân tích mạch điện, trong đó các ẩn số thực về dòng điện trong các nhánh được thay thế bằng các ẩn số trung gian là dòng điện vòng giả định trong các vòng kín Cần lưu ý rằng các nhánh mạch phải được biểu diễn theo trở kháng.
Các bước giải tích mạch điện theo phương pháp dòng điện vòng :
Để thành lập các vòng cho mạch điện, mỗi vòng cần tương ứng với một dòng điện giả định và phải chứa ít nhất một nhánh mới so với các vòng đã thành lập trước Các vòng cơ bản ứng với mỗi cây sẽ đáp ứng điều kiện này, và tổng số vòng cần thành lập là (N nh - N n + 1).
Phân tích mạch điện xoay chiều
2.2.1 Phân tích mạch điện xoay chiều một pha a Khái niệm dòng điện xoay chiều một pha
Dòng điện xoay chiều là dòng điện có cường độ biến thiên điều hòa theo thời gian (theo hàm cos hay sin của thời gian)
+ i: giá trị cường độ dòng điện xoay chiều tức thời, đơn vị (A) + I 0 > 0: giá trị cường độ dòng điện cực đại của dòng điện xoay chiều
+ ω, φ i : là các hằng số, ω > 0 là tần số góc + (ωt + φ i ) : pha tại thời điểm t
+ φi : Pha ban đầu của dòng điện Tương ứng với dòng điện ta có khái niệm điện áp xoay chiều:
(t) 0cos( t u ) (V) u U Đặt φ = φ u – φ i , được gọi là độ lệch pha của hiệu điện thế và dòng điện trong mạch
+ Nếu φ > 0 thì khi đó hiệu điện thế nhanh pha hơn dòng điện, hay dòng điện chậm pha hơn hiệu điện thế
Khi φ > 0, hiệu điện thế chậm pha hơn dòng điện, trong khi dòng điện nhanh pha hơn hiệu điện thế Để giải quyết mạch xoay chiều một pha, các dòng điện và điện áp hình sin thường được biểu diễn dưới dạng số phức Sau đó, các thuật toán giải tích mạch điện được áp dụng tương tự như đối với dòng điện một chiều.
Kết quả thu được là một số phức: z Z m m
Thực hiện chuyển đổi ngược lại sang miền thời gian: cos( t ) m m zZ
Số phức biểu diễn các đại lượng xoay chiều thường được ký hiệu bằng các chữ in hoa, có dấu chấm trên đầu , , o o o
nhưng trong Matlab không cho phép ký hiệu như vậy nên ta sử dụng chữ in hoa để biểu diễn (I, U, E)
Bảng 2.1 Nguồn điện xoay chiều một pha dạng phức
Nguồn xoay chiều Dạng thời gian Dạng phức Biểu diễn bằng Matlab
I I e I I 0 / sqrt 2 * exp j * i Điện áp u(t)U 0 cos( t u ) (V) 0
Ví dụ: Dòng điện (t) 10sin( t ) i 6
Và được khai báo trong MATLAB:
Dòng điện i(t) được chuyển đổi thành dạng phức bao gồm cả phần thực và phần ảo Các thành phần trong mạch điện xoay chiều như điện trở, tụ điện và điện cảm sẽ được biểu diễn bằng tổng trở phức.
Bảng 2.2 Trở kháng dạng phức của các phần tử trong mạch xoay chiều
Các phần tử Trở kháng Biểu diễn bằng
Ví dụ 1: Cho mạch điện xoay chiều:
Chuyển các nguồn xoay chiều sang dạng phức và tính trở kháng cho mỗi nhánh
* Chuyển các nguồn xoay chiều sang dạng phức:
Các nguồn này được khai báo trực tiếp trên MATLAB như sau:
Hoặc, có thể khai báo tổng quát trên Scrip file:
V1=input('Nhập V1='); % V10/sqrt(2)*exp(j*pi/3)
V2=input('Nhập V2='); % V20/sqrt(2)*exp(j*pi/3)
Giá trị sau dấu “%” là giá trị được nhập từ bàn phím trên cửa sổ lệnh
* Tính trở kháng cho mỗi nhánh:
- Nhánh 2: là nhánh thuần trở R 2 Z 2 R 2
- Nhánh 3: là nhánh thuần trở R 3 Z 3 R 3
- Nhánh 4: là nhánh thuần trở R 4 Z 4 R 4
% Khai báo các phần tử
% Tính các trở kháng trên mỗi nhánh
% Hiển thị kết quả: disp('Trở kháng nhánh các nhánh:') Z1
Kết quả trên cửa sổ lệnh:
Ví dụ 2: Cho mạch điện như hình vẽ s (t)
Sử dụng phần mềm MATLAB, viết chương trình xác định V o (t)
Để xác định điện áp Vo(t), có thể sử dụng phương pháp điện áp nút hoặc phương pháp dòng vòng Tuy nhiên, vì bài toán yêu cầu xác định Vo(t), nên phương pháp điện áp nút được lựa chọn để đơn giản hóa, với Vo(t) là điện áp tại một nút trong mạch điện.
Ký hiệu các nút và chọn nút nguồn như hình vẽ
Chuyển đổi các phần tử trên mỗi nhánh sang dạng phức:
Viết phương trình điện áp nút tại mỗi nút:
Ta đưa về hệ phương trình:
Biến đổi về hệ phương trình điện áp nút dạng ma trận:
Từ đó, xây dựng được phương trình ma trận: Y U I s
Ta xác định được ma trận điện áp nút U, và Vo chính phần tử thứ 3 của ma trận
Vo=U(3) % Có thể viết Vo=U3 vì ma trận U chỉ có 1 cột duy nhất
Giả sử ta được kết quả là một số phức:V o V m 3 3
Thực hiện chuyển đổi trong miền thời gian: V o (t)V m 3 cos( t+ ) 3
% Nhập các tham số đầu vào
% Định nghĩa các dẫn nạp
% Thành lập ma trận dẫn nạp
% Thành lập Ma trận nguồn dòng
% Tính ma trận điện áp nút
% Hiển thị kết quả fprintf('Vo(t)=%f.cos(%f.t + %f V) ',V3_abs,w,V3_ang);
2.2.2 Phân tích mạch điện xoay chiều ba pha a Khái niệm mạch điện xoay chiều ba pha
Mạch điện xoay chiều ba pha là hệ thống ba dòng điện xoay chiều một pha, có cùng biên độ, tần số,nhưng lệch pha nhau một góc 120 0
+ Dây pha: Là dây nối từ nguồn tới tải.
+ Dây trung tính: Là dây nối giữa 2 điểm trung tính từ nguồn tới tải.
Điện áp pha là điện áp giữa điểm đầu và điểm cuối của một pha (U A, U B, U C), trong khi điện áp dây là điện áp giữa hai điểm đầu của hai pha khác nhau (U AB, U BC, U CA) Dòng điện pha là dòng điện chảy từ điểm cuối đến điểm đầu của một pha (I A, I B, I C), còn dòng điện dây là dòng điện đi giữa hai pha khác nhau (I AB, I BC, I CA).
Tổng trở pha C (Z C) là một phần quan trọng trong mạch điện 3 pha Khi tổng trở của ba pha là bằng nhau (Z A = Z B = Z C), mạch điện được gọi là mạch 3 pha đối xứng Ngược lại, nếu tổng trở của một trong ba pha khác với hai pha còn lại, mạch điện được xem là mạch 3 pha không đối xứng Biểu diễn mạch điện xoay chiều ba pha có thể được thực hiện dễ dàng trong MATLAB.
Giả sử có nguồn điện xoay chiều ba pha:
Trong MATLAB, ta phải biểu diễn dưới dạng các số phức:
Ví dụ : Cho nguồn xoay chiều ba pha:
Viết chương trình trên MATLAB: a Vẽ đồ thị nguồn 3 pha trong miền thời gian b Vẽ đồ thị nguồn 3 pha trong miền phức
% a Vẽ đồ thị trên miền thời gian
% Khai báo các dòng điện trên miền thời gian i_1"0*sin(pi*t); i_2"0*sin(pi*t-2*pi/3); i_3"0*sin(pi*t+2*pi/3);
% Vẽ đồ thị và chú thích plot(t,i_1,'.',t,i_2,'+',t,i_3,' ')
% Tên đồ thị title('Do thi nguon dien xoay chieu 3 pha');
% Tên các trục tung và trục hoành xlabel('t(s)'); ylabel('i(t)(V)');
% Hiển thị dạng lưới grid on;
Hình 2.9 Đồ thị nguồn điện xoay chiều 3 pha trên miền thời gian
Do thi nguon dien xoay chieu 3 pha t(s) i( t) (V )
% b Vẽ đồ thị tọa độ cực
% Khai báo các dòng điện dạng phức
% Vẽ đồ thị phức compass([I_1 I_2 I_3]) title('Do thi nguon dien 3 pha dang phuc');
Hình 2.10 Đồ thị nguồn điện xoay chiều 3 pha trên phức c Phân tích mạch điện xoay chiều 3 pha
Khi khảo sát mạch điện xoay chiều 3 pha tổng quát chúng ta quan tâm đến tổng trở của đường dây truyền tải , chia mạch điện 3 pha thành 4 dạng:
Các bước tổng quát phân tích mạch điện xoay chiều ba pha :
Bước 1: Chuyển đổi các thành phần xoay chiều trong mạch điện sang dạng số phức (phức hóa các phần tử trong mạch điện xoay chiều)
Bước 2: Chuyển đổi sơ đồ mạch điện (có thể sử dụng phương pháp đổi nối hình sao sang hình tam giác và ngược lại)
Do thi nguon dien 3 pha dang phuc
Bước 3: Áp dụng các thuật toán giải tích mạch điện lập hệ phương trình dạng ma trận
Bước 4 Viết chương trình giải tích cho mạch điện
Phương pháp giải tích mạch điện cho từng dạng mạch điện được trình bày như sau:
- Nguồn nối hình sao, tải nối hình sao
Hình 2.11 Sơ đồ mạch điện xoay chiều ba pha nối YY
Phương pháp giải tích mạch điện: Áp dụng phương trình điện thế nút tại nút N khi chọn trung tính O‟ làm nút chuẩn (mass)
Ví dụ: Cho mạch điện xoay chiều 3 pha nối YY như hình 2.11
(t) 220 2 sin 120 (t) 220 2 sin 120 dA dB dC dO d
Để xây dựng hệ phương trình nhằm tìm các dòng điện trên tải, bạn cần sử dụng phần mềm Matlab Chương trình sẽ được viết để xác định các dòng điện I A, I B và I C, với các tham số đầu vào được nhập trực tiếp từ bàn phím.
Giải a Xây dựng phương trình tính dòng điện trên mỗi tải
Phân tích: Sử dụng phương pháp điện áp nút và biểu diễn sơ đồ mạch điện như sau:
Trên mỗi nhánh gồm 2 trở kháng nối tiếp nên ta có thể biểu diễn các phần tử dưới dạng dẫn nạp tương đương:
Trong đó, dẫn nạp trên các nhánh lần lượt là:
Chọn O‟ là mass, ta viết phương trình điện áp nút tại O
Sau khi tính được UO, các dòng trên mỗi tải được tính như sau:
b Viết chương trình trên MATLAB Scrip file:
% Nhập vào các trở kháng
Z_d=input('Nhập vào các trở kháng dây =');
Z_t=input('Nhập trở kháng tải=');
% Nhập vào các suất điện động
% Thành lập ma trận dẫn nạp
% Thành lập ma trận nguồn dòng
% Tính ma trận điện áp nút
% Tính các dòng điện trên mỗi pha
% Hiển thị kết quả disp('Giá trị các dòng trên mỗi tải:') ;
Kết quả chương trình trên cửa sổ lệnh như sau:
Nhập vào các trở kháng dây =0.1+0.1*j Nhập trở kháng tải Z_t+12*j
Nhập E_A"0*exp(j*0) Nhập E_B"0*exp(-j*2*pi/3) Nhập E_C"0*exp(+j*2*pi/3) Giá trị các dòng trên mỗi tải:
- Nguồn hình nối sao - tải nối hình tam giác
Hình 2.12 Sơ đồ mạch điện xoay chiều ba pha nối Y Phương pháp giải tích mạch điện: Đối với mạch điện xoay chiều ba pha nối
Y , có thể áp dụng một trong các phương pháp sau đây:
+ Giải trực tiếp mạch điện bằng cách áp dụng phương trình dòng vòng
+ Biến đổi tải từ dạng sang dạng Y; chuyển mạch điện về dạng nguồn Y tải
Y để tính toán các thông số Sau đó chuyển đổi các giá trị tính toán được trên tải Y về các giá trị tương đương cho tải
Ví dụ: Cho sơ đồ mạch điện xoay chiều ba pha nối Y như hình 2.12 Biết:
(t) 220 2 sin 120 ; (t) 220 2 sin 120 dA dB dC d
Để giải bài toán, trước tiên cần xây dựng hệ phương trình nhằm xác định các dòng điện I_AB, I_BC và I_CA Sau đó, sử dụng phần mềm Matlab để viết chương trình, cho phép người dùng nhập các tham số đầu vào từ bàn phím để tìm ra các giá trị của các dòng điện này.
Giải a Xây dựng phương trình tính dòng điện trên mỗi tải
Chọn phương pháp dòng vòng, biểu diễn sơ đồ mạch điện:
Phương trình dòng điện trên mỗi vòng:
Vòng 1: (Z dA Z AB Z )I dB v1 Z ( I ) Z I dB v 2 dA v3 E A E B Vòng 2: (Z dB Z BC Z )I dC v 2 Z ( I ) Z I dB v1 dC v3 E B E C
Vòng 3: (Z dA Z CA Z ) I dC v1 Z I dA v1 Z I dC v 2 E A E C
Từ đó ta có hệ phương trình: dA dB v1 dB v 2 dA v 3 dB v1 dB dC v 2 dC v 3 dA v1 dC v 2 dC dA v 3
Biến đổi về hệ phương trình dạng ma trận:
1 dA dB dB dC 2 dC dA 3
AB dB dA dB BC dC v B C dA dC CA v A C
Giải hệ ta tìm được các dòng vòng, từ đó suy ra:
b Viết chương trình trên MATLAB Scrip:
% Nhập vào các trở kháng
Z_d=input('Nhập các trở kháng trên dây Z_d=');
Z_t=input('Nhập trở kháng tải=');
% Thành lập các ma trận
Z=[(Z_dA+Z_AB+Z_dB) –Z_dB Z_dA; -Z_dB (Z_dB+Z_BC+Z_dC) Z_dc; Z_dA Z_dC (Z_dC +Z_CA+Z_dA)]; E=[E_A-E_B; E_B-E_C; E_A-E_C];
% Tính ma trận dòng vòng
% Tính các dòng trên mỗi tải
% Hiển thị kết quả disp('Giá trị các dòng trên mỗi tải:') ; I_AB
Kết quả thực hiện chương trình trên cửa sổ lênh:
Nhập vào các trở kháng dây Z_d=0.2 Nhập trở kháng tải Z_t+9*j Nhập E_A"0*exp(j*0) Nhập E_B"0*exp(-j*2*pi/3) Nhập E_C"0*exp(+j*2*pi/3) Giá trị các dòng trên mỗi tải:
- Nguồn nối hình tam giác, tải nối hình sao
Hình 2.13 Sơ đồ mạch điện xoay chiều ba pha nối Y
Phương pháp giải tích mạch điện bao gồm việc áp dụng các kỹ thuật như biến đổi nguồn áp 3 pha từ hình thức sang hình thức Y, nhằm chuyển đổi mạch điện về dạng nguồn Y tải Y.
+ Giải trực tiếp mạch điện bằng phương pháp dòng vòng
Ví dụ: Cho mạch điện xoay chiều ba pha nối Y như hình 2.13
(t) 208 2 sin 120 (t) 208 2 sin 120 dA dB dC d
Để xác định các dòng điện trên tải, cần xây dựng hệ phương trình phù hợp Sử dụng phần mềm Matlab, bạn có thể viết một chương trình cho phép người dùng nhập các tham số đầu vào từ bàn phím để tính toán các dòng điện I A, I B và I C.
Giải: a Xây dựng hệ phương trình tìm các dòng điện trên tải
Sử dụng phương pháp dòng vòng, biểu diễn sơ đồ mạch điện:
Phương trình dòng điện trên mỗi vòng: dA dB v1 dB v 2 dA v3
(Z Z A Z B Z )I (Z Z )( I ) (Z B Z )I A E AB dB dC v 2 dB v1 dC v3
(Z Z B Z C Z )I (Z Z )( I ) (Z B Z )I C E BC dA dC v3 dA v1 dC v 2
Từ đó ta có hệ phương trình: dA dB v1 dB v 2 dA v 3 dB v1 dB dC v 2 dC v 3 dA v1 dC v 2 dC dA v 3
Biến đổi về hệ phương trình dạng ma trận: dA dB 1 dB dC 2 dC dA 3
A B dB B dA A dB B B C dC C v BC dA A dC C C A v CA
Giải hệ ta tìm được các dòng vòng, từ đó suy ra:
b Viết chương trình trên MATLAB Scrip:
% Nhập vào các trở kháng
Z_d=input('Nhập trở kháng dây Zd=');
Z_t=input('Nhập trở kháng tải=');
% Nhập vào các suất điện động
% Thành lập các ma trận
Z=[(Z_dA+Z_A+Z_B+Z_dB) - (Z_dB+Z_B) (Z_dA+Z_A); -(Z_dB+Z_B) (Z_dB+Z_B+Z_C+Z_dC) (Z_dC+Z_C);
% Tính ma trận dòng vòng
% Tính các dòng trên mỗi tải
% Hiển thị kết quả disp('Giá trị các dòng điện trên mỗi pha:') ; I_A
Kết quả chương trình thực hiện trên cửa sổ lệnh:
Nhập trở kháng dây Z_d=0.1 Nhập trở kháng tải Nhập E_AB 8*exp(j*0) Nhập E_BC 8*exp(-j*2*pi/3) Nhập E_CA 8*exp(+j*2*pi/3) Giá trị các dòng điện trên mỗi tải:
- Nguồn nối hình tam giác, tải nối hình tam giác
Trong sơ đồ mạch điện xoay chiều ba pha nối , có thể áp dụng nhiều phương pháp để giải mạch điện Các phương pháp giải tích mạch điện này giúp phân tích và tính toán các thông số quan trọng của mạch.
+ Giải trực tiếp mạch điện dùng phương trình dòng vòng
+ Giữ nguyên nguồn áp 3 pha dạng và biến đổi tải sang dạng Y; đưa bài
+ Biến đổi nguồn áp 3 pha từ dạng sang dạng Y; giữ nguyên tải dạng ; đưa bài toán về trường hợp nguồn Y tải
+ Biến đổi cả nguồn và tải từ dạng sang dạng Y; đưa bài toán về dạng nguồn
Ví dụ 2: Cho mạch điện xoay chiều ba pha nối như hình 2.14
(t) 208 2 sin 120 (t) 208 2 sin 120 dA dB dC d
Để giải quyết bài toán, trước tiên cần xây dựng hệ phương trình để tìm các dòng điện I_AB, I_BC và I_CA Tiếp theo, sử dụng phần mềm Matlab để viết chương trình cho phép người dùng nhập các tham số đầu vào từ bàn phím nhằm tính toán các dòng điện này.
Giải a Xây dựng phương trình giải tích cho mạch điện
Sử dụng phương pháp dòng vòng, chuyển đổi sơ đồ mạch điện như sau:
Viết phương trình điện áp trên mỗi vòng:
3 1 2 dA AB dB v dB v dA v AB dB BC dC v dB v dC v BC dC CA dA v dA v dC v CA
Từ đó, xây dựng được hệ phương trình: dA AB dB v1 dB v 2 dA v 3 AB
(Z Z Z ) I E dB v dC v BC dA v dC v
1 dA AB dB dB dC 2 dC CA dA 3
(Z Z Z ) v AB dB dA dB BC dC v BC dA dC v CA
Giải hệ, ta xác định được Iv1, Iv2, Iv3 Từ đó suy ra:
I I b Chương trình trên MATLAB Scrip:
% Nhập vào các trở kháng
Z_d=input('Nhập trở kháng dây Z_d=');
Z_t=input('Nhập trở kháng tải=');
% Nhập vào các suất điện động
% Thành lập các ma trận trở kháng
Z=[(Z_dA+Z_AB+Z_dB) -Z_dB Z_dA ;
-Z_dB (Z_dB+Z_BC+Z_dC) Z_dc ;
Z_dA Z_dC (Z_dC+Z_CA+Z_dA)];
% Thành lập ma trận nguồn dòng
% Tính ma trận dòng vòng
% Tính các dòng trên mỗi pha
% Hiển thị kết quả disp('Giá trị các dòng điện trên mỗi tải:') ;
Kết quả trên cửa sổ lệnh:
Nhập trở kháng trên tải+20*j
Giá trị các dòng điện trên mỗi tải:
2.2.3 Phân tích đáp ứng tần số a Đơn vị Decibel
Decibel (dB) là đơn vị logarit dùng để so sánh độ mạnh (intensity) của hai đại lượng vật lý có cùng thứ nguyên như công suất, điện áp và cường độ dòng điện Đối với công suất, công thức tính được biểu diễn là 10log(out/in) dB P.
10log out 20log out v in in
10log out 20log out i in in
Ví dụ : Tính độ lợi công suất và điện áp của hệ thống khuếch đại sau:
Giải Độ lợi công suất: W 10 W
Trong mạch điện tử, sự thay đổi tần số tín hiệu vào sẽ dẫn đến sự thay đổi tín hiệu đầu ra Để khảo sát sự thay đổi này, cần sử dụng các mạch lọc, loại mạch chỉ cho phép tín hiệu trong một khoảng tần số nhất định đi qua.
Tính chất của mạch lọc được xác định bởi đáp ứng tần số của nó Đáp ứng tần số với tín hiệu hình Sin được biểu diễn là H(jω).
+ H(j ) được gọi là đáp ứng biên độ:
+ được gọi là đáp ứng pha:
Để biểu diễn đáp ứng tần số, cần phải thể hiện được đáp ứng biên độ và pha theo tần số Để đơn giản hóa, ta đặt s = jω.
( ) H(s) được viết dưới dạng phân thức như sau:
a a n , n 1, , ,a a 1 0 và b m , b m 1, , b , b1 0 được gọi là các hệ số của bộ lọc c Khảo sát đáp ứng tần số dùng Matlab
Giả sử ta có đáp ứng tần số:
, Để biểu diễn H(s), Matlab sử dụng hàm freqs có cấu trúc như sau:
>> hs= freqs(num,den,range) Trong đó:
+ range: dải tần số khảo sát, sử dụng đơn vị logarit
+ hs: là đáp ứng tần số dạng phức
Ví dụ1 : Cho đáp ứng tần số của mạch điện:
Viết chương trình trên Matlab vẽ đồ thị độ lớn đáp ứng biên độ của H(s) Giải
% Định nghĩa đáp ứng tần số num = [2 0 4]; den = [1 4 16]; w = logspace(-2, 4); h_s = freqs(num, den, w); f = w/(2*pi); hs(hs);
% Đáp ứng biên độ mag = 20*log10(h_s); semilogx(f, mag) grid on title('Dap ung bien do') xlabel('Frequency, Hz') ylabel('Gain, dB')
Hình 2.18 Đáp ứng biên độ của H(s)
Ví dụ 2: Cho mạch điện như hình vẽ:
V in V out (t) a Xác định đáp ứng tần số của mạch b Sử dụng Matlab, vẽ đáp ứng tần số của mạch
Giải a Trong miền tần số:
R sL sC sCR s LC sCR sR L s sR
R = 10000; num = [R/L 0 ]; den = [1 R/L 1/(L*C)]; w = logspace(1,4); h = freqs(num,den,w); f = w/(2*pi); mag = abs(h); % Biên độ phase = angle(h)*180/pi; % Pha
% Vẽ đồ thị đáp ứng tần số biên độ subplot(1,2,1) loglog(f, mag,'+') grid on ylabel('magnitude')
% Vẽ đồ thị đáp ứng tần số pha subplot(1,2,2) semilogx(f, phase,'*') grid on title('Dap ung pha') xlabel('Frequency, Hz') ylabel('angle in degrees')
Kết quả chương trình như sau:
Hình 2.19 Đáp ứng biên độ và đáp ứng pha của mạch RLC nối tiếp
Dap ung bien do m a g n it u d e
Cho mạch điện như hình BT2.1 a Xây dựng hệ phương trình tìm các điện áp nút dạng ma trận b Biết : I s 1 3 ,A I s 2 4 ,A I s 3 6A
Dùng phần mềm Matlab viết chương trình tìm các dòng nhánh
Cho mạch điện như hình BT2.2 a Xây dựng hệ phương trình tìm các dòng vòng dạng ma trận b Biết : V s 1 V s 2 6V
Dùng phần mềm Matlab viết chương trình tìm các dòng nhánh