题目:
求把电压源
i
s
=
c
o
s
(
Ω
0
t
)
i_{s}=cos(\varOmega_{0}t)
is=cos(Ω0t)与电感
i
L
(
t
)
i_{L}(t)
iL(t)联系起来的常微分方程,这里电感量
L
=
1
H
L=1H
L=1H,且电感与一个电阻值
R
=
1
Ω
R=1\varOmega
R=1Ω的电阻并联(见图0.23),假定电感的初始电流为0。
(a)利用积分的梯形近似法从常微分方程获得一个离散方程。
(b)创建一个
M
A
T
L
A
B
MATLAB
MATLAB脚本文件用来求解差分方程,取
T
s
=
0.01
T_{s}=0.01
Ts=0.01,
i
s
i_{s}
is的频率分别取
Ω
0
=
0.005
π
,
0.05
π
和
0.5
π
\varOmega_{0}=0.005\pi,0.05\pi和0.5\pi
Ω0=0.005π,0.05π和0.5π用
M
A
T
L
A
B
MATLAB
MATLAB的
p
l
o
t
plot
plot函数,在同一个图中画出输入电流源
i
s
(
t
)
i_{s}(t)
is(t)和近似解
i
L
(
n
T
)
i_{L}(nT)
iL(nT)的图形。用
M
A
T
L
A
B
MATLAB
MATLAB的
f
i
l
t
e
r
filter
filter函数求解差分方程.
©利用
M
A
T
L
A
B
MATLAB
MATLAB求解常微分方程,取输入电流源
i
s
(
t
)
i_{s}(t)
is(t)的频率为
Ω
0
=
0.5
π
\varOmega_{0}=0.5\pi
Ω0=0.5π,并对比
i
s
(
t
)
和
i
L
(
t
)
i_{s}(t)和i_{L}(t)
is(t)和iL(t).
通过基尔霍夫电流定律,我们可知
i
s
(
t
)
=
i
L
(
t
)
+
i
R
(
t
)
=
V
L
(
t
)
R
+
i
L
(
t
)
i_{s}(t)=i_{L}(t)+i_{R}(t)=\frac{V_{L}(t)}{R}+i_{L}(t)
is(t)=iL(t)+iR(t)=RVL(t)+iL(t),我们知道
R
=
1
Ω
,
L
=
1
H
,
V
L
(
t
)
=
L
d
i
L
(
t
)
d
t
R=1\varOmega,L=1H,V_{L}(t)=L\frac{di_{L}(t)}{dt}
R=1Ω,L=1H,VL(t)=LdtdiL(t)带入可知
i
s
(
t
)
=
d
i
L
(
t
)
d
t
+
i
L
(
t
)
i_{s}(t)=\frac{di_{L}(t)}{dt}+i_{L}(t)
is(t)=dtdiL(t)+iL(t)
下面我们要把
i
s
(
t
)
=
d
i
L
(
t
)
d
t
+
i
L
(
t
)
i_{s}(t)=\frac{di_{L}(t)}{dt}+i_{L}(t)
is(t)=dtdiL(t)+iL(t)化为差分方程,并证明正确性。
我们对两边积分可以得到
i
L
(
t
1
)
−
i
L
(
t
0
)
=
∫
t
0
t
1
i
s
(
τ
)
d
τ
−
∫
t
0
t
1
i
L
(
τ
)
d
τ
i_{L}(t_{1})-i_{L}(t_{0})=\int_{t_{0}}^{t1}i_{s}(\tau)d\tau-\int_{t_{0}}^{t_{1}}i_{L}(\tau)d\tau
iL(t1)−iL(t0)=∫t0t1is(τ)dτ−∫t0t1iL(τ)dτ
下面由梯形近似可以得到
i
L
(
t
1
)
−
i
L
(
t
0
)
i_{L}(t_{1})-i_{L}(t_{0})
iL(t1)−iL(t0)
=
(
i
s
(
t
0
)
+
i
s
(
t
1
)
)
△
t
2
−
(
i
L
(
t
1
)
+
i
L
(
t
0
)
)
△
t
2
=(i_{s}(t_{0})+i_{s}(t_{1}))\frac{\triangle{t}}{2}-(i_{L}(t_{1})+i_{L}(t_{0}))\frac{\triangle{t}}{2}
=(is(t0)+is(t1))2△t−(iL(t1)+iL(t0))2△t
然后我们令
△
t
=
T
s
,
t
1
=
n
T
,
t
0
=
(
n
−
1
)
T
\triangle{t}=T_{s},t_{1}=nT,t_{0}=(n-1)T
△t=Ts,t1=nT,t0=(n−1)T
我们可以得到
i
L
(
n
T
s
)
+
T
s
−
2
2
+
T
s
i
L
(
(
n
−
1
)
T
s
)
i_{L}(nT_{s})+\frac{T_{s}-2}{2+T_{s}}i_{L}((n-1)T_{s})
iL(nTs)+2+TsTs−2iL((n−1)Ts)
=
T
s
2
+
T
s
[
i
s
(
n
T
s
)
+
i
s
(
(
n
−
1
)
T
s
)
]
=\frac{T_{s}}{2+T_{s}}[i_{s}(nT_{s})+i_{s}((n-1)T_{s})]
=2+TsTs[is(nTs)+is((n−1)Ts)]
到此为止,连续的微分方程化离散的微分方程就结束了。下面是编写代码求解微分方程和差分方程并对比其求解结果是否相同。
clc;clear;
Ts=0.01;
t=[0:Ts:100];
figure(4)
for k=0:2;
if k==0 subplot(311)
elseif k==1 subplot(312)
else subplot(313)
end
W0=0.005*10^k*pi;
is=cos(W0*t);
a=[1 (Ts-2)/(Ts+2)];%这个是i_l(n),i_l(n-1)的系数
b=[Ts/(Ts+2) Ts/(Ts+2)]%这个是i_s(n),i_s(n-1)的系数
il=filter(b,a,is);
H=1/sqrt(1+W0^2)*ones(1,length(t));
plot(t,is,t,il,'r',t,H,'g');xlabel('t');ylabel('i_s(t) i_L(t)');
axis([0 100 1.1*min(is) 1.1*max(is)])
legend('input current','output current','filter gain');grid
pause(0.1)%?
end
%当cos函数的输入频率为0.5pi时的连续微分方程的解法
clear all
syms t x y
x=cos(0.5*pi*t);
y=dsolve('Dy+y=cos(0.5*pi*t)','y(0)=0','t')
figure(5)
subplot(211)
ezplot(x,[0 100]);grid
subplot(212)
ezplot(y,[0 100]);grid
axis([0 100 -1 1])
由图可以看出两种方法所解得
i
L
(
t
)
i_{L}(t)
iL(t)基本相同,由此可断定我们将连续的微分方程化为离散方程的思路正确。