拉巴次仁
(西藏大學理學院 西藏 拉薩 850000)
Matlab是美國Mathworks 公司推出的一套集數(shù)值分析、矩陣運算、信號處理和圖形顯示于一體的高性能軟件,它已經(jīng)成為數(shù)學計算、數(shù)據(jù)分析與可視化、信號處理和仿真等領(lǐng)域首先的工具軟件.動態(tài)電路分析的基本方法是建立微分方程,然后用高等數(shù)學知識求解微分方程,最后得到電壓電流響應(yīng)的表達式,然而動態(tài)電路分析中,最困難的事情是求解微分方程,即便是求出微分方程的解,結(jié)果中也看不出其物理含義.文章通過幾個實例介紹了Matlab在電路分析教學中的應(yīng)用,幫助學生更好更快地了解電路特性和掌握電路原理.
【例1】圖1(a)所示的RC電路中的開關(guān)連接至1端已經(jīng)很久,在t=0時,開關(guān)迅速由1端轉(zhuǎn)換到2端,如圖1(b)所示,試求t≥0 的電容電壓uC(t),并畫出波形.
圖1
解析:由圖1(b)所示電路的KVL方程、KCL方程和VCR方程得到以下微分方程
上式是常系數(shù)線性一階齊次微分方程,編寫如下的Matlab程序來求該微分方程的解,并畫出電壓響應(yīng)曲線.
clear all;clc
syms u t
uc=dsolve(′0.05*Du+u=0′,′u(0)=3.5′,′t′); %解微分方程(設(shè)時間常數(shù)RC=0.05 s,初始值3.5 V)
picture=ezplot(uc); set(picture,′color′,′k′,′LineWidth′,2) %畫出時間常數(shù)RC=0.05 s時的波形
axis([0 0.30 3.5])
hold on
uc=dsolve(′0.02*Du+u=0′,′u(0)=3.5′,′t′); %解微分方程(設(shè)時間常數(shù)RC=0.02 s,初始值
3.5 V)
picture=ezplot(uc); set(picture,′color′,′k′,′LineStyle′,′--′,′LineWidth′,2) %畫出時間常數(shù)RC=0.02s時的波形
axis([0 0.30 3.5])
xlabel(′t /s′,′FontSize′,14,′FontAngle′,′italic′);
ylabel(′u_c(t)/ V′,′FontSize′,14,′FontAngle′,′italic′)
legend(′RC=0.05s′,′RC=0.02 s′)
圖2形象直觀地展示了電容電壓與電路時間常數(shù)之間的關(guān)系.電路時間常數(shù)RC的大小決定著電容電壓放電的快慢,在課堂上容易修改RC的值,可繪制不同的曲線,幫助學生更好地了解RC零輸入響應(yīng)的特性.
圖2 RC電路零輸入響應(yīng)的波形
【例2】電路如圖3所示, 試求RLC串聯(lián)電路的響應(yīng),并畫出響應(yīng)波形.
圖3
解析:根據(jù)KCL,KVL和VCR方程,列出圖3的微分方程
以上是二階非齊次微分方程,用傳統(tǒng)的筆算方法解此微分方程,對于大多數(shù)藏族學生來說有很大的難度,它是二階電路分析教學中的難點.用Matlab強大的數(shù)值計算功能,很輕松地解出上面二階微分方程,使師生們從繁重的數(shù)學計算中解脫出來,并順利地完成該章節(jié)的學習任務(wù).
使用ode45函數(shù)解此微分方程,先要把該二階微分方程改寫為一階常微分方程組
然后,創(chuàng)建一個M函數(shù)文件myfun(),Matlab的代碼設(shè)置如下:
function myfun()
clear all;clc
ts=[0,3];%
u0=[3;0.28];
[t,u]=ode45(@myfun1,ts,u0,[],6,1,0.04,0); %解微分方程,設(shè)參數(shù)值
picture=plot(t,u(:,1),′k′,t,u(:,2),′k--′); %畫圖
set(picture,′LineWidth′,2)
xlabel(′t′,′FontSize′,12,′FontAngle′,′italic′)
ylabel(′u_c(t) / i_L(t)′,′FontSize′,12,′FontAngle′,′italic′)
legend(′電壓波形′,′電流波形′)
function up=myfun1(t,u,R,L,C,U)
up=[u(2);-(R/L)*u(2)-1/(L*C)*u(1)+U/(L*C)];
hold on
alpha=R/2*L;
text(1,2,[′衰減系數(shù) alpha=′,num2str(alpha)])
圖4
圖4(a)是電容電壓初始值為3 V,電感電流初始值為0.28 A,R=6 Ω,L=1 H,C=0.04 F,U=0時得到的電容電壓和電感電流的波形圖;圖4(b)是其他參數(shù)值不變,R=1時得到的圖.另外,當U等于某常量時又可以得到直流激勵下RLC串聯(lián)電路的響應(yīng),因此該程序基本上通用于RLC串聯(lián)的二階電路分析.
【例3】圖5所示的RC電路,電路原來已經(jīng)達到穩(wěn)定狀態(tài),在t=0時開關(guān)斷開,正弦電流iS(t)=ISmcos(ωt+φi)作用于RC電路,求電容電壓uc(t)的響應(yīng),并畫圖.
圖5
解析:寫出開關(guān)斷開之后電路的微分方程
求解上述微分方程中,涉及到解三角函數(shù)方程,求解過程相當?shù)姆爆?,又容易出錯,課堂上一直把解三角函數(shù)的過程跳過,直接給出結(jié)果.我們利用Matlab強大的數(shù)值計算的功能,解出上述正弦穩(wěn)態(tài)響應(yīng)的表達式,并把結(jié)果圖形顯示,Matlab的程序如下:
clear all; clc
syms u C R t w b I U
u=dsolve(′C*Du+1/R*u=I*cos(w*t+b)′,′u(0)=U′);
w=2;U=0;I=2;R=1;C=2;
b=pi/6; %theta
uc=eval(u); %電容電壓的表達式
t=0∶0.001∶10;
uc3=eval(u); %電容電壓的表達式
plot(t,uc3,′k′,′Linewidth′,2)
hold on
t=0∶0.001∶10;
uc1=-3226857735129493/9570149208162304*
exp(-1/2*t); %從上面的uc表達式中截取瞬態(tài)的響應(yīng)
plot(t,uc1,′k--′,′Linewidth′,1.5)
hold on
t=0∶0.001∶10;
uc2=2/17*cos(2*t+1/6*pi)+8/17*sin(2*t+1/6*pi);%從上面的uc表達式中截取正弦穩(wěn)態(tài)響應(yīng)
plot(t,uc2,′k-.′,′Linewidth′,1.5)
grid on
xlabel(′t′,′FontSize′,12,′FontAngle′,′italic′)
ylabel(′u_c(t)′,′FontSize′,12,′FontAngle′,′italic′)
set(gca,′XTick′,[0 5 10]);
set(gca,′YTick′,[-0.4 -0.2 0 0.2 0.4]);
axis([0 10 -0.62 0.8])
legend(′電容電壓的曲線′,′瞬態(tài)響應(yīng)′,′正弦穩(wěn)態(tài)響應(yīng)′);
圖6中實線波形是正弦穩(wěn)態(tài)響應(yīng)曲線,從整個時間段里看,該曲線并非按正弦規(guī)律變換,所以也就談不上什么正弦穩(wěn)態(tài)響應(yīng)了.從圖上看出,時間大概過了5 s之后,該曲線基本上正弦規(guī)曲線,那么5 s之前的曲線為什么不是正弦曲線呢?
為了解釋這個現(xiàn)象,我們首先分析了由Matlab計算得到的電容電壓的表達式,發(fā)現(xiàn)該表達式是由兩個部分構(gòu)成,我們把這兩部分分別從表達式中截取后編程,其結(jié)果展示在一張圖上(圖6中的兩個虛線波形),通過上面技術(shù)上的處理后我們清楚地看到,實線的波形是兩個虛線波形的疊加,即一個按正弦規(guī)律變化的曲線(穩(wěn)態(tài)),另一個按指數(shù)規(guī)律遞減的曲線(瞬態(tài)),當瞬態(tài)響應(yīng)消失之后(理論上消失它需要無限長時間,實際上瞬態(tài)響應(yīng)在極短的時間里消失完),剩下的只是穩(wěn)態(tài)響應(yīng),我們所說的正弦穩(wěn)態(tài)響應(yīng)就是這剩下的響應(yīng).如果不借助計算機的可視化功能,上面的現(xiàn)象在課堂上很難用語言來解釋清楚.
圖6 正弦穩(wěn)態(tài)響應(yīng)
【例4】圖7所示電路為RLC串聯(lián)諧振電路,畫出該諧振電路的頻率特性曲線.
圖7
解析:圖7所示電路的轉(zhuǎn)移電壓比為
根據(jù)以上表達式,編寫Matlab程序如下:
%求網(wǎng)絡(luò)函數(shù)的幅值,畫幅頻特性曲線
clear all;clc; figure(1)
w0=500; Q=[0.5 1 2];
w=1∶500000;
for i=1∶3
H=abs(1./(1+j*Q(i)*(w/w0-w0./w)));
if i==1
semilogx(w/w0,H,′k--′,′Linewidth′,2)
end
if i==2
semilogx(w/w0,H,′k′,′Linewidth′,2)
end
if i==3
semilogx(w/w0,H,′k:′,′Linewidth′,2)
end
xlabel(′omega/omega_c′)
ylabel(′|H(jomega)|′)
set(gca,′XTick′,[0.001 0.01 0.1 1 10 100 1000]);
set(gca,′YTick′,[0 0.5 0.707 1 ]);
axis([0 1000 0 1.05])
hold on
end
legend(′Q=0.5′,′Q=1′,′Q=2′);
%求網(wǎng)絡(luò)函數(shù)的相位角,畫出相頻特性
clear all;clc; figure(2) %lun7
w0=500;Q=[0.5 1 2];w=1∶500000;
for i=1∶3
Theta=angle(1./(1+j*Q(i)*(w/w0-w0./w)));%計算復(fù)數(shù)角度(弧度)
Theta=Theta*180/pi;%弧度變成角度
switch i
case 1
semilogx(w/w0,Theta,′k--′,′Linewidth′,2)
case 2
semilogx(w/w0,Theta,′k′,′Linewidth′,2)
case 3
semilogx(w/w0,Theta,′k:′,′Linewidth′,2)
end
xlabel(′omega/omega_c′)
ylabel(′ heta(omega)′)
set(gca,′XTick′,[0.01 0.1 1 10 100 1000 ]);
set(gca,′YTick′,[-90 0 90]);
axis([0 1000 -90 90])
hold on
end
legend(′Q=0.5′,′Q=1′,′Q=2′);
根據(jù)電路分析的理論知道,頻帶寬度與品質(zhì)因數(shù)Q成反比,Q越大,帶寬越窄,曲線越尖銳,對信號的選擇性越好,Matlab可視化得到的圖8(a)能生動形象地展示這個現(xiàn)象.圖8(b)是相頻特性曲線,它表明電壓U1和U2之間的相位關(guān)系.
圖8
由于Matlab軟件有諸多突出的優(yōu)點,大部分高等院校已經(jīng)把它列入課程計劃中,成為學生必須掌握的基本軟件之一.由于在電路分析中涉及大量的數(shù)學運算問題,并且往往需要其抽象的計算結(jié)果用圖形來展示,而Matlab恰好具有這個功能,因此我們嘗試著把它引入到電路分析的教學中,經(jīng)過幾年的教學實踐表明,這種計算機輔助教學方式是可行的,取得了較顯著的教學效果,深受學生的喜愛,認為計算機輔助教學方式可以在其他課程教學中去嘗試和推廣.
致謝:目前,西藏大學應(yīng)用物理專業(yè)和電子信息工程專業(yè)使用的電路分析課程教材是由胡翔駿編著的《電路分析》(第2版),因此文章中的實例均從該教材中改編而來,在此對該書作者表示感謝;同時也感謝匿名評審專家為本文提出的有益問題.
參考文獻
1 胡翔駿. 電路分析(第2版).北京: 高等教育出版,2007
2 曹戈.Matlab 教程及實訓. 北京: 機械工業(yè)出版社,2008
3 Desmond J.Higham,Nicholas J.Higham.MATLAB guide-2nded.USA:Societyfor Indus-trial and Applied Maathematics,2005
4 求是科技.Matlab7.0從入門到精通.北京:人民郵電出版社,2006