ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
---------------o0o---------------
TIỂU LUẬN
PHƯƠNG PHÁP TÍNH
TRONG KỸ THUẬT ĐIỆN
GVHD: PGS TS. Vũ Phan Tú
Học viên: Phan Đình Khải
MSHV: 1670347
TP. HỒ CHÍ MINH, THÁNG 01 NĂM 2017
1. FDM – Tính phân bố trường nhiệt trên đường dây
1.1.
Phương pháp Crank-Nicholson:
Giải quyết bài toán phân bố trường nhiệt trên dây dẫn trong không gian một chiều dùng
phương pháp Crank-Nicholson.
Giải phương trình Parabolic:
Xấp xỉ sai phân:
(
(
)
)
Điều kiện biên có thể tính theo công thức:
Ma trận vuông
Với
và
và vector r đã biết trước, ta có thể tính ra các biên.
được tính:
Tương đương với:
2
Tương tự ta tính được
1.2.
%
Thực hiện bằng chương trình Matlab:
Matlab Program 7: Heat
Diffusion in one dimensional
wire within the
%
Crank-Nicholson Method
clear;
% Khai báo thông số không gian và thời gian
L = 1.;
%
Chiều dài đường dây
T =1.;
%
Tổng thời gian tính toán
maxk = 2500;
%
Số khoảng chia thời gian
dt = T/maxk;
%
Bước sai phân thời gian
n = 50.;
%
Số khoảng chia không gian
dx = L/n;
%
Bước sai phân không gian
cond = 1/2;
%
Độ dẫn nhiệt
b = cond*dt/(dx*dx);
%
Parameter of the method
%
Khai báo cái điều kiện ban đầu
3
%
Khởi tạo nhiệt độ ban đầu của đường dây
for i = 1:n+1
x(i) =(i-1)*dx;
%Nhiệt độ ban đầu là biến
u(i,1) có dạng sin
u(i,1) =sin(pi*x(i));
end
%
Nhiệt độ tại biên (T=0)
for k=1:maxk+1
%Tại T=0, nhiệt độ tại biên
bằng 0
u(1,k) = 0.;
u(n+1,k) = 0.;
time(k) = (k-1)*dt;
end
% Khai báo ma trận M_right and
Ma trận
M_left
aal(1:n-2)=-b;
bbl(1:n-1)=2.+2.*b;
ccl(1:n-2)=-b;
MMl=diag(bbl,0)+diag(aal,1)+diag(ccl,1);
Ma trân
tương tự.
aar(1:n-2)=b;
bbr(1:n-1)=2.-2.*b;
ccr(1:n-2)=b;
MMr=diag(bbr,0)+diag(aar,1)+diag(ccr,1);
4
%
Giải phương trình ma trận
for k=2:maxk
%
Time Loop
uu=u(2:n,k-1);
u(2:n,k)=inv(MMl)*MMr*uu;
end
figure(1)
% Vẽ đồ thị
plot(x,u(:,1),'-',x,u(:,100),'',x,u(:,300),'-',x,u(:,600),'')
title('Temperature within the
Crank-Nicholson method')
xlabel('X')
ylabel('T')
figure(2)
mesh(x,time,u')
title('Temperature within the
Crank-Nicholson method')
xlabel('X')
ylabel('Temperature')
1.3.
Kết quả:
5
6
2. FDM – PHÂN BỐ ĐIỆN THẾ GIỮA 2 BẢN TỤ SONG SONG
Cơ sở lý thuyết
2.1.
Trong lý thuyết tĩnh điện cổ điện, điện trường liên quan với điện thế thông qua phương
trình sau:
E grad (U ) U
U U U
ex
ey
ez
x
y
z
(1)
Mặt khác, điện trường lại liên quan đến mật độ điện tích theo phương trình sau:
diverg ( E ) . E
Ex E y Ez
x
y
z 0
(2)
Theo giả thuyết mật độ điện tích ρ = 0 C.m-2 nên ta có:
diverg ( E ) . E 0
(3)
Thay điện trường trong phương trình thứ (1) vào phương trình thứ (3) ta có:
.[ grad (U )] . (U ) || ||2 U U 0
(4)
Phương trình trên chính là phương trình Laplace, thể hiện trong miền 2D ta được:
2U 2U
0
x 2 y 2
2.2.
(5)
Phân tích bài toán với FDM
Giải quyết bài toán phân bố điện thế giữa 2 bản tụ tiết diện vuông đặt song song với
nhau, cách điện bằng chân không với các thông số như sau:
- Hai bản tụ được đặt trong hộp vuông, kích thước 200x200 mm2.
- Chiều dài mỗi bản tụ là 160 mm.
- Khoảng cách giữa hai bản tụ song song là 80 mm
- Điện áp đặt lên bản tụ thứ nhất là 220V; điện áp đặt lên bản tụ thứ hai là -220V
7
- Giả sử mật độ điện tích giữa hai bản tụ là ρ = 0 C.m-2
Phương trình (5) là phương trình Eliptic, với giả thiết bề mặt của hộp vuông là kín và
điện thế phân bố ở khắp các phía trong hộp được xác định ổn định và đồng nhất, ta có
điều kiện biên Neuman cho bài toán như sau:
U ( x 0, y) 0;U ( x L, y);U ( x, y 0) 0;U ( x, y L) 0
(6)
Ngoài ra ta còn biết được điện thế tại các bản tụ, với bố trí các bản tụ ta có:
[
]
[
]
Phương trình (5) được giải bằng cách chia lưới thành LxL điểm, sử dụng phương pháp
sai phân hữu hạn với chuỗi Taylor bậc hai theo trục x và y ta được:
(8)
(9)
(10)
(11)
Cộng các phương trình lại, dùng xấp xỉ sai phân ta được lời giải cho bài toán như sau:
(12)
2.3.
Thực hiện bằng chương trình Matlab
Để giải bài toán, ta thực hiện đoạn code như sau:
% Điều kiện ban đầu
8
L=200;
% Kích thước ma trận và cũng là số
điểm chia
U=zeros(L,L);
% Định nghĩa ma trận U ban đầu là ma
trận 0
U(end/2-40,end/2-80:end/2+80)= 220;% Xác định điện áp bản
tụ (1)
U(end/2+40,end/2-80:end/2+80)=-220;% Xác định điện áp bản
tụ (2)
count=1;
% Biến đếm số vòng lặp
tolerance=6.00;
% Xác định dung sai = 6
norm_diff=100*rand(1);% Sai số dừng vòng lặp, ban đầu là
ngẫu nhiên
% Thực hiện vòng lặp
while norm_diff>tolerance % Thực hiện vòng lặp khi sai số
lớn hơn dung sai
Norm1=norm(U);
% Giá trị cũ lớn nhất của U trước
khi lặp
for i=2:L-1
% thực hiện 2 vòng lặp Jacobi
for j=2:L-1
% Giá trị điện thế trên 2 bản tụ luôn là hằng số
% Điều kiện để tiếp tục vòng lặp
if U(i,j)==220 || U(i,j)==-220
continue;
end
% Lời giải phương trình Laplace với FDM-2D
U(i,j)=(U(i-1,j)+U(i+1,j)+U(i,j1)+U(i,j+1))./4;
end
end
Norm2=norm(U);
% Giá trị lớn nhất của U sau mỗi
lần lặp
norm_diff=abs(Norm2-Norm1); % Sai số của giá trị mới và
cũ
count=count+1;
% Xác định số vòng lặp
end
% Hiển thị số vòng lặp
fprintf(' Number of iterations N=%d\n',count);
% Vẽ kết quả phân bố điện thế trong hộp vuông
surf(U);shading interp; colorbar;
xlabel(' Lx');
ylabel(' Ly');
9
zlabel(' Potential, in Volts');
title (' Electric potential of the parralel plate
Capacitor');
view(-54,6);
% Vẽ điện trường tĩnh tạo ra do 2 bản tụ
[Ex,Ey]=gradient(U);
figure, contour(U,'LineWidth',2);
hold on, quiver(Ex,Ey,4), hold off
title(' Electrical field of the parallel plate Capacitor in
static case');
% Thể hiện điện trường tĩnh rõ ràng hơn
figure,contour(U,'LineWidth',2); hold on, quiver(Ex,Ey,4),
hold
off;
zoom(3);
axis([10 40 130 160]);
xlabel(' Lx'), ylabel('Ly'), title(' Electrcial field :Zoom
x4 Left Corner of the 1st plate ')
2.4.
Kết quả:
10
11
3. FDM-FEM – GIẢI BÀI TOÁN ĐIỀU KIỆN BIÊN LOẠI 3
3.1.
Phân tích bài toán
Giải quyết bài toán có điều kiện biên hỗn hợp (điều kiện biên loại 3), phương trình vi phân
như sau:
Miền xác định:
Điều kiện biên:
tại x =2
Lời giải giải tích:
u = x2
Phân tích bài toán điều kiện biên loại 3 cũng tương tự như bài toán điều kiện biên
Dirichlet và điều kiện biên Neuman. Chỉ khác ở các biên, do đó ta cần phải sử đổi một
số điểm như sau:
- Xấp xỉ sai phân biên đạo hàm ta có:
Như vậy ma trận [A] và [F] phải thay đổi như sau:
Phân tích tương tự như trên, với phương pháp FEM-1D ta cũng cần thay đổi ma trận
[K] và [b] như sau:
Trong đó: α, β là hệ số của phương trình vi phân
M là số phần tử, M = n-1
3.2.
Thực hiện với chương trình Matlab
12
Để giải bài toán, ta thực hiện đoạn code như sau:
% Khai báo biến x, hàm U, miền khảo sát a-b, giá trị biên uaub
% hàm giá trị f, số điểm khảo sát n
function [x,U]=two_point(a,b,ua,ub,f,n)
clear
clc
%--------------------------Khai báo ban đầu------------n=24;
% Số điểm khảo sát
a=-1;
% Cận dưới của hàm số
b=2;
% Cận trên của hàm số
ua=1;
%--------------------Các hệ số của hàm số----------------A=-1;
B=0;
C=2;
%---------------------------FDM bậc 2------------------h=(b-a)/(n-1); % Khoảng chia Delta x
h1=h*h;
% Delta x bình phương
A1=sparse(n,n); % Định nghĩa ma trận A
F=zeros(n,1); % Định nghĩa ma trận F
% ------Thực hiện vòng lặp xác định ma trận A-----for i=2:n-2
A1(i,i)=(C*h1-2*A)/h1; % Định nghĩa số hạng A(i,i)
A1(i,i+1)=(A+h*B/2)/h1; % Định nghĩa số hạng A(i,i+1)
A1(i+1,i)=(A-h*B/2)/h1; % Định nghĩa số hạng A(i+1,i)
end
%----Các giá trị của ma trận A chưa được xác định trong vòng
lặp-A1(1,1)=1;
A1(2,1)=(A+h*B/2)/h1;
A1(n-1,n-1)=(C*h1-2*A)/h1;
A1(n-1,n)=(A+h*B/2)/h1;
A1(n,n-1)=-1/h; % Giá trị xác định từ ĐKB loại 3
A1(n,n)=3+1/h; % Giá trị xác định từ ĐKB loại 3
%----Thực hiện vòng lặp xác định hàm giá trị f----for i=2:n-1
13
x(i)=a+(i-1)*h;
% Xác định giá trị biến x trong mổi
phép lặp
F(i)=-2+2*x(i)^2; % Hàm giá trị f theo đề bài
end
%----Các giá trị hàm f chưa được xác định trong vòng lặp----F(1)=ua;
F(n)=16;
%----Xác định hàm cần tìm U1 theo FDM--------U1=A1\F;
U1=U1';
%----------------------Khai báo ban đầu FEM bậc 1------------N=n;
l=(b-a)/(N-1);
%---------------------------FEM bậc 1------------------K11=sparse(N,N);
% Định nghĩa ma trận độ cứng K
F11=zeros(N,1);
% Định nghĩa ma trận hàm giá trị f
b11=zeros(N,1);
% Định nghĩa ma trận b
%----Thực hiện vòng lặp xác định ma trận độ cứng K----for i=2:N-2
K11(i,i)=-2*A/l+2*C*l/3;
K11(i,i+1)=A/l+C*l/6;
K11(i+1,i)=A/l+C*l/6;
end
%----Các giá trị của ma trận K chưa được xác định trong vòng
lặp--K11(1,1)=1;
K11(2,1)=A/l+C*l/6;
K11(N-1,N-1)=-2*A/l+2*C*l/3;
K11(N-1,N)=A/l+C*l/6;
K11(N,N-1)=A/l+C*l/6;
% Giá trị xác định từ ĐKB loại 3
K11(N,N)=-A/l+C*l/3+3; % Giá trị xác định từ ĐKB loại 3
%----Thực hiện vòng lặp xác định ma trận b---for i=2:N-1
x(i)=a+(i-1)*l;
F11(i)=-2+2*x(i)^2;
b11(i)=F11(i)*l;
end
%----Các giá trị của ma trận b chưa được xác định trong vòng
lặp--b11(1)=ua;
b11(N)=F11(N-1)*l/2+16;
14
%----Xác định hàm cần tìm U11 theo FEM-----U11=K11\b11;
U11=U11';
%---------------------------------------------------%-------------------------Nghiệm chính xác----------m4=n*7;
% Định nghĩa số bước lặp để giải nghiệm
h4=(b-a)/(m4-1);
% Định nghĩa khoảng chia của mỗi bước lặp
u=zeros(m4,1);
% Định nghĩa ma trận của hàm cần tìm u
%----Thực hiện vòng lặp xác định nghiệm chính xác u --for i=1:m4
x(i)=a+(i-1)*h4;
u(i)=x(i)^2;
end
%----Giá trị biên của nghiệm chính xác-----u(1)=ua;
u(m4)=4;
%-------------------------------In kết quả ----------------------k=a:h4:b;
i=a:h:b;
z=a:l:b;
t=a:1/(n-1):b;
WW=spline(z,U11,t);
plot(k,u,'k',i,U1,'b',z,U11,'-rs','LineWidth',2,'MarkerEdgeColor','r','MarkerFaceColor','g',
'Mark
erSize',5);
xlabel('x direction');
ylabel('u(x)');
title('Comparison Between Analytic, FD and FE Numerical
Solutions');
grid on;
legend('Analytic Solution','2nd-Order FD Solution','1st-Order
FE
Solution');
%---------------------------------------------------------
--------3.3.
Kết quả
15
16