Chapter-94
1
9.5 Mạch phi tuyến động và các PP số
Các bài toán có 2 phần :
1. Viết phương trình trạng thái.
2. Sử dụng thuật toán lặp.
Các thuật toán lặp :
Có hai nhóm :
1. Phương pháp khai triển Taylor : tìm
chuỗi gần đúng hàm tại x(t
n
).
2. Phương pháp đa thức hóa : tìm đa
thức gần đúng giá trò x(t
n
) theo p giá
trò trước đó .
9.5.1 Phương trình trạng thái :
Phương trình trạng thái có dạng :
x’ = f(x,t) , x
0
= x(t
0
) , hay nếu có n biến :
Các biến trạng thái :
Tụ điện: Chọn u
C
hay q
C
.
Cuộn dây: Chọn i
L
hay
\
L
.
Phương trình trạng thái
thường được thiết lập theo
các phương pháp : dòng
nhánh , thế nút hay mắc
lưới.
'
1112
'
2212
'
12
( , , , , )
( , , , , )
( , , , , )
n
n
nn n
xf
xx xt
xf
xx xt
xf
xx xt
°
°
®
°
°
¯
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
2
9.5.2 Phương pháp khai triển Taylor
Khai triển giá trò tại bước
tính thứ (n+1) : x(t
n+1
) theo
giá trò tại bước tính thứ (n) :
x(t
n
) bằng chuỗi Taylor và
chọn đến bậc p thích hợp (sai
số h
(p+1)
) , với h là bước tính :
Thuật toán khai triển Taylor
là thuật toán đơn bước : giá
trò được tìm khi chỉ cần biết
một giá trò của bước trước đó
.
1. Giải thuật Euler thuận :
2. Giải thuật Euler ngược :
Giải ra x
(n+1)
và lặp.
3. Giải thuật Runge-Kutta : xấp xỉ tiếp
tục các đạo hàm bậc cao và thiết lập
công thức lặp cho giá trò : x(t
n+1
) .
11
2
1
'( )
() ()
1!
''( )
2!
n
nn nn
n
nn
xt
x
txt tt
xt
tt
1
.,
nn n
x
xhfxnh
11
.,(1)
nn n
xxhfxnh
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
3
Giaỷi thuaọt Euler thuaọn : vớ duù 1
function vidu1=pplap()% Euler thuan
% e(t) = 200*i(
\
) + d
\
/dt
t0=0;tf=0.002;delta = 1*10^(-6);
y0 = 0;% bien tu thong
\
y=linspace(0,1,round(tf/delta)+1);
y(1) = y0;
for k=2:round(tf/delta)+1
et = 19*sin(10^4*(k-1)*delta);
iL = 50*y(k-1)+ 4*10^7*y(k-1)^3;
y(k) = y(k-1)+delta*(et-200*iL);
end
% Ve dang dong dien
t=0:delta:delta*round(tf/delta);
plot(t*1000,y*1000);
ylabel('Dang tu thong (mWb)');
% ==== End of Program ========
%ơ,*,1*0é10&+,1%
&/r0LQK&QJ
Chapter-94
4
Giải thuật Euler thuận : ví dụ 2
Xác đònh dạng từ thông và dòng điện trên cảm phi
tuyến .
Biết :
Giải
Phương trình trạng thái :
Chương trình MATLAB:
Wb_dt=[-5.3375 -0.5625 -0.45 0 0.45 0.5625 5.3375] ;
dong_dt=[-10 -0.45 -0.225 0 0.225 0.45 10];
% A
chuky = 1/50;
t0 = 0;
% gia tri ban dau
tf = 75*chuky ;%gia tri cuoi cua thoi gian toi da
delta = chuky/100; % buoc thoi gian tinh
Wb=linspace(0,1,round(tf/delta)+1); % Tao mang tu thong
iL=linspace(0,1,round(tf/delta)+1); % Tao mang luu dong
% Gan gia tri so kien vao mang
Wb(1) = 0;
iL(1) = 0;
e(t)
0
+
_
+
_
5
:
i(A)
\
(Wb)
0,225 0,45
-0,225-0,45
0,45
0,5625
-0,45
-0,5625
1 V
i
\
() 1 5.
d
et i
dt
\
\
( ) 120 2 sin(100 90 )
o
et t
S
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
5
Giaỷi thuaọt Euler thuaọn : vớ duù 2 (tt)
for k=2:round(tf/delta)+1
% Tinh toan cac gia tri dong theo tu thong
gt_hdt= interp1(Wb_dt,dong_dt,Wb(k-1));
% Noi suy theo MATLAB
et=120*sqrt(2)*
sin(100*pi*(k-1)*delta+pi/2);
fn = et + 1 -5*gt_hdt;
Wb(k)=Wb(k-1)+delta*fn;
% Euler thuan
iL(k)=interp1(Wb_dt,dong_dt,Wb(k));
end
% Ve dang dong dien : chi khao sat
50 ms cuoi cung
N = round(tf/delta);
t=0:delta:delta*N;
subplot(211);
plot(t(N-250:N),Wb(N-250:N));
ylabel(
'Tu thong (Wb)');
subplot(212);
plot(t(N-250:N),iL(N-250:N));
ylabel(
'Dong dien (A)');
%ơ,*,1*0é10&+,1%
&/r0LQK&QJ
Chapter-94
6
So sánh kết quả do Simulink tính
Hình bên là kết quả do
Simulink của MATLAB
tính toán và vẽ .Có thể
tham khảo tại trang web
của MathWorks-
>Documentation->
SimpowerSystems ; hay
http.see.deis.unical.it/ita/
Kizilcay/pdf/chap2.pdf.
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
7
3. Giải thuật Runge-Kutta
Gỉai Thuật R-K bậc 2 :
GT R-K bậc 3 (k
1
như trên) :
GT R-K bậc 4 (k
1
tính như trên) :
Giải thuật R-K tính nhiều các kết
quả trung gian và lưu chúng -> tốn
bộnhớ.
112
2
nn
h
x
xkk
1
,
nn
kfxt
211
,
nn
kfxhkt
123
3
4
nn
h
x
xkk
21
1
,
33
nn
h
k
f
xkth
§·
¨¸
©¹
32
22
,
33
nn
h
kfx kt h
§·
¨¸
©¹
11234
22
6
nn
h
x
xkkkk
21
1
,
22
nn
h
k
f
xkth
§·
¨¸
©¹
32
1
,
22
nn
h
kfx kt h
§·
¨¸
©¹
43
,
nn
kfxhkth
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
8
GT Runge-Kutta bậc 2 : Ví dụ 1
Tìm áp ra của mạch kẹp dương (đỉnh âm)
biết e(t) = 2sin(2
S
.10
3
t) V.
Giải
a) Thiết lập pt trạng thái : Viết KCL
Lưu ý:
Đặc tuyến i(e-u
C
) nhận được khi lấy đối
xứng qua gốc tọa độ đặc tuyến u-i của diode đã cho .
b) Chương trình MATLAB:
% Thuat toan Runge-Kutta bac 2
% x(n+1) = x(n) + h/2*(k1 + k2)
% k1 = f(xn,tn) ; k2 = f(xn+h*k1,tn+1)
% Cho phuong trình phi tuyen - Dac tuyen dang bang-do thi
% duc/dt = (e -uc) + 10^5*hdt(e-uc) ; e = 2sin(2*pi*f*t)
% u = e - uc
% Ve dang dac tuyen : dong = hdt(u)
ap_dt = [-10 -5 -0.6 -0.4 0 5 10 ];% V
dong_dt = [-40 -20 -0.004 0 0 0 0 ];% A
()
CC
C
du e u
Cieu
dt R
0 0,4 0,6
u(V)
i(mA)
4
+
_
10
P
F
100 K
:
+
-
u(t)
+-
u
C
e(t)
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
9
GT Runge-Kutta baäc 2 : Ví duï 1 (tt)
for k=2:round(tf/delta)+1
% Tinh toan cac gia tri ap
e = 2*sin(2*pi*f*(k-1)*delta);% tn
gt_hdt = interp1(ap_dt,dong_dt,
e - uc(k-1));
% Noi suy
k1 = e - uc(k-1) + 10^5*gt_hdt;
e = 2*sin(2*pi*f*(k)*delta);
% tn+1
gt_hdt = interp1(ap_dt,dong_dt,
e-(uc(k-1)+ delta*k1));
% Noi suy
k2 = e - (uc(k-1) + delta*k1) + 10^5*gt_hdt;
uc(k) = uc(k-1) + (delta/2)*(k1 + k2);
% bien trang thai
ap(k) = e - uc(k);% tin hieu ra
end
% Ve dang dien ap ra
t=0:delta:delta*round(tf/delta);
plot(t*1000,ap);
% don vi ms
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
10
GT Runge-Kutta bậc 4 : Ví dụ 1
Khóa K mở ra tại t = 0, biết đặc tuyến của cảm phi tuyến :
a) Viết phương trình trạng thái theo từ thông trên cuộn dây ? Xác đònh giá trò từ
thông tại t = 0
-
.
b) Viết chương trình tính từ thông khi 0 < t < 50(ms) , với bước tính h = 1(ms) theo
thuật toán Runge-Kutta bậc 4. Từ đó xác đònh thời gian quá độ của mạch (thời
gian khi độ thay đổi từ thông móc vòng sau một bước tính bé hơn 0,01% ).
Giải
a) Xác đònh : Khi t < 0 : cuộn dây xem như ngắn mạch :
Khi t > 0 : phương trình mô tả mạch :
b) Chương trình MATLAB:
function vidu11=pplap()
t0 = 0 ; tf = 0.05; delta = 0.001;
x0 = 0.4;
x = linspace(0,1,round(tf/delta)+1);
x(1) = x0;
2
() 0,5i
\
\
1
250 5,2
250
1
625
120
5, 2
i
250 V
i
1
120
:
0,2
:
5
:
t =
0
K
i
\
1
0, 2
0, 08( )
5, 2
ii A
0
0, 4( )Wb
\
2
250 125 250 62,5
d
i
dt
\
\
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
11
GT Runge-Kutta baäc 4 : Ví duï 1 (tt)
saiso = 1; flag = 0; k = 1;
while (saiso > 0.0001) & (flag == 0)
k = k + 1;
% Tinh gia tri bien theo Runge-
Kutta bac 4
k1 = 250-62.5*x(k-1)^2;
k2 = 250-62.5*(x(k-
1)+(delta/2)*k1)^2;
k3 = 250-62.5*(x(k-
1)+(delta/2)*k2)^2;
k4 = 250-62.5*(x(k-1)+(delta)*k3)^2;
x(k) = x(k-
1)+(delta/6)*(k1+2*k2+2*k3+k4);
% Tinh sai so
saiso = abs((x(k)-x(k-1))/x(k));
% Kiem tra thoi gian tinh
if k > round(tf/delta) flag = 1;
end
end
% == end of main ======
% So sanh va bao ket qua
if flag == 1
disp('Vout qua tmax cho tinh toan');
t=0:delta:(k-1)*delta;
plot(t,x(1:k)); % ve cac so lieu da tinh
else
disp('Thoi gian qua do la :');
disp((k-1)*delta);
disp('Gia tri tu thong khi do la :');
disp(x(k));
t=0:delta:(k-1)*delta;
plot(t,x(1:k)); % ve cac so lieu da tinh
end
%
Thoi gian qua do la : 0.0330
Gia tri tu thong khi do la : 1.9993
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
12
9.5.3 Phương pháp đa thức hóa
Xấp xỉ hàm và đạo hàm bằng đa thức bậc k, có đại lượng ở bước tính
(n+1) theo p giá trò ở p bước trước đó (gọi là giải thuật đa bước) . Nghiệm
tổng quát của giải thuật có dạng :
Để tính được x
(n+1)
, phải có các giá trò ở p bước trước đó. Dùng giải
thuật đơn bước (kiểu Taylor) để khởi động , sau đó dùng các giải thuật
đa bước để dễ kiểm soát sai số.
1. Giải thuật hình thang :
2. GT Adams-Bashforth (hiển do b
-1
= 0) bậc 2 và 3 như sau :
10 1 11 0
, , ,
n n p np n n n n p np np
xax axhbfxt bfxt bfxt
ªº
¬¼
111
,,
2
nn nn nn
h
x
xfxtfxt
ªº
¬¼
111
31
,,
22
nn nn nn
xxhfxt fxt
ªº
«»
¬¼
11122
23 16 5
,, ,
12 12 12
nn nn nn nn
xxhfxt fxt fxt
ªº
«»
¬¼
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
13
Giải Thuật Adams-Moulton
3. GT Adams-Moulton (ẩn do b
-1
z
0) bậc 2 và 3 như sau :
Ví dụ :
Vẽ dạng dòng và từ thông ?
Giải
function vidu16=pplap()
% PP Adams-Bashforth bac 2
% Khoi dong theo Euler thuan
% d
\
/dt = 1200sin(800
S
t)-750
\
5
= f(
\
,t)
% x(n+1) = x(n) +h((3/2)fn - (1/2)fn_1)
T = 1/400;t0 = 0; tf = 4*T; delta = T/50;
i
e(t)
+
_
500
:
\
e(t) =1200sin(800
S
t) V
i = 1,5
\
5
t=0
K
111
11
,,
22
nn nn nn
xxhfxt fxt
ªº
«»
¬¼
111 11
581
,,,
12 12 12
nn nn nn nn
xxhfxt fxt fxt
ªº
«»
¬¼
500 ( ) ( )
d
iet
dt
\
\
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ
Chapter-94
14
GT Adams-Bashforth baäc 2 : Ví duï 1
Wb = linspace(0,1,round(tf/delta)+1);
iL = linspace(0,1,round(tf/delta)+1);
Wb(1) = Wb0; iL(1) = 1.5*Wb(1)^5;
% gia tri tiep theo Euler thuan
Wb(2) = Wb(1) + delta*(-750*Wb(1)^5
+1200*sin(0));
iL(2) = 1.5*Wb(2)^5;
for k=3:round(tf/delta)+1
fn = -750*Wb(k-1)^5
+1200*sin((2*pi/T)*(k-1)*delta);
fn_1 = -750*Wb(k-2)^5
+1200*sin((2*pi/T)*(k-2)*delta);
Wb(k) = Wb(k-1) + delta*((3/2)*fn -
(1/2)*fn_1);
iL(k) = 1.5*Wb(k)^5;
end
%=== end of main =========
t=0:delta:delta*round(tf/delta);
subplot(211); plot(t*1000,Wb);
ylabel('Tu thong (Wb)');
subplot(212); plot(t*1000,iL);
ylabel('Dong dien (A)');
% == End of Program ======
%¬,*,Ҧ1*0Ð10Ҥ&+Ĉ,ӊ1%
&/r0LQK&ѭӡQJ