云南師范大學(xué)物理與電子信息學(xué)院 李小志 王 靜
基于MATLAB GUI的電流環(huán)磁場(chǎng)分布模擬
云南師范大學(xué)物理與電子信息學(xué)院 李小志 王 靜
利用MATLAB軟件的GUI設(shè)計(jì)功能建立用戶界面,模擬電流環(huán)的磁場(chǎng)及磁感線分布,可應(yīng)用于課堂的輔助教學(xué)。
電流環(huán);磁場(chǎng);MATLAB GUI
環(huán)電流的磁場(chǎng)分布是電磁學(xué)中的一個(gè)重要課題。目前,國(guó)內(nèi)外很多學(xué)者對(duì)電流環(huán)的磁場(chǎng)分布作了大量的相關(guān)研究。郭志勇,劉得軍在文獻(xiàn)[1]《一種圓環(huán)電流空間磁場(chǎng)數(shù)值計(jì)算方法》中提到圓環(huán)電流是最基本的理論磁體單元。介紹了利用“割圓法”的思想,從畢奧—薩伐爾定律出發(fā),推導(dǎo)了一種簡(jiǎn)單的圓環(huán)電流周圍空間任意點(diǎn)磁感應(yīng)強(qiáng)度數(shù)值計(jì)算方法。孫愛(ài)良在文獻(xiàn)[2]《環(huán)形電流平面內(nèi)的磁場(chǎng)》中應(yīng)用矢量方法并將數(shù)學(xué)中的橢圓積分應(yīng)用于計(jì)算中,給出了環(huán)形電流平面內(nèi)任意一點(diǎn)的磁感應(yīng)強(qiáng)度計(jì)算公式,更全面地討論了電流環(huán)的磁場(chǎng)在電流環(huán)平面上的磁場(chǎng)分布。張星輝在文獻(xiàn)[3]《圓電流磁感線的分布及磁感應(yīng)強(qiáng)度的函數(shù)表達(dá)式》一文中從矢量的角度對(duì)電流環(huán)在空間上任一一點(diǎn)的磁感線進(jìn)行了嚴(yán)格的計(jì)算分析,并利用MATLAB軟件將電流環(huán)在空間上的磁感線分布圖形象的顯示出來(lái)但繪制的磁感線分布圖為二維圖像用戶無(wú)法設(shè)置參數(shù)設(shè),不便于直觀比較不同參數(shù)下,電流環(huán)的磁場(chǎng)分布情況。
本文利用畢奧—薩伐爾定律討論圓環(huán)電流所產(chǎn)生的磁場(chǎng)分布情況,利用MATLAB軟件計(jì)算其數(shù)值解[4],并利用MATLAB軟件的GUI功能設(shè)計(jì)一交互式的用戶界面,用戶可以設(shè)定參數(shù)值,實(shí)時(shí)得到電流環(huán)的磁場(chǎng)分布和磁感線分布圖像。
圖1
y如圖1所示,根據(jù)畢奧—薩伐爾定律,以表示恒定電流的一電流元,在P點(diǎn)處產(chǎn)生的磁場(chǎng):
根據(jù)以上三式得:
將(4)式和(5)式代入畢奧-薩伐爾定律,得:
即有:
將上式沿著x軸,y軸,z軸三個(gè)方向分解,并進(jìn)行積分,得:
由對(duì)稱性可知,只要求得xoz平面上的磁場(chǎng),則整個(gè)空間的磁場(chǎng)可知。因此當(dāng)P點(diǎn)在x-z平面上時(shí)有y=0,此時(shí)P點(diǎn)的坐標(biāo)為(x,0,z)的計(jì)算結(jié)果具有普遍意義。
將P點(diǎn)的坐標(biāo)帶入以上各式,得:
MATLAB軟件具有強(qiáng)大的數(shù)值計(jì)算、仿真和可視化功能。對(duì)于(9)、(10)、(11)式的積分,可利用MATLAB的符號(hào)積分工具編程得到結(jié)果。在此基礎(chǔ)上,利用MATLAB的GUI功能編寫(xiě)一參數(shù)可調(diào)的交互式用戶平臺(tái)。用戶任意輸入?yún)?shù),該平臺(tái)即可得到該參數(shù)條件下的環(huán)形電流在空間中的磁場(chǎng)分布和磁感線分布圖像,計(jì)算結(jié)果直觀、生動(dòng)。
圖2 電流環(huán)的磁場(chǎng)分布設(shè)計(jì)界面
2.1 界面設(shè)計(jì)
GUI界面設(shè)計(jì)窗口由菜單欄、工具欄、控件工具欄及圖形對(duì)象設(shè)計(jì)區(qū)等部分組成。通過(guò)對(duì)這些環(huán)節(jié)編寫(xiě)相應(yīng)的回調(diào)函數(shù)代碼,設(shè)計(jì)出用戶需要的GUI交互環(huán)境[5]。電流環(huán)磁場(chǎng)分布模擬的MATLAB GUI界面設(shè)計(jì)如圖2所示。
它包括:(1)建立1主面板;(2)建立一個(gè)坐標(biāo)軸對(duì)象,設(shè)置屬性為axes1.用于顯示磁場(chǎng)分布或磁感應(yīng)強(qiáng)度的分布情況;(3)建立2個(gè)單選按鈕,提供滿足操作者不同視角觀察需求;(4)建立2個(gè)按鈕,用于重置參數(shù)和繪制目標(biāo)圖像;(5)建立5個(gè)文本標(biāo)簽,其中一個(gè)文本標(biāo)簽標(biāo)明實(shí)驗(yàn)主題,其余4個(gè)分別標(biāo)注環(huán)半徑、環(huán)電流及其相應(yīng)的單位;(6)建立3個(gè)文本框,其中2個(gè)用于分別輸入不同的參數(shù),1個(gè)根據(jù)坐標(biāo)軸對(duì)象標(biāo)注相應(yīng)的名稱;(7)建立一個(gè)下拉列表框,用戶通過(guò)選擇下拉列表框的項(xiàng)目運(yùn)行所需要的模擬圖像;(8)建立兩個(gè)菜單項(xiàng),分別提示是否退出界面和實(shí)驗(yàn)原理
本例設(shè)計(jì)的電流環(huán)磁場(chǎng)分布的模擬界面如圖2所示。
2.2 回調(diào)函數(shù)編寫(xiě)
在gui設(shè)計(jì)中,通過(guò)回調(diào)函數(shù)的編寫(xiě)來(lái)實(shí)現(xiàn)控件功能的實(shí)現(xiàn)。對(duì)于本例,回調(diào)程序的程序代碼如下:
axes(handles.axes1);
cla;
popup_sel_index = get(handles.listbox1,’Value’);
I=str2double(get(handles.edit2,’String’));
R=str2double(get(handles.edit1,’String’));
switch popup_sel_index
case 1 %繪制磁場(chǎng)分布圖像
mu0=4*pi*1e-7;
c0=mu0/(4*pi)*I;
N=100;
x=linspace(-3,3,N);y=x;
thta0=linspace(0,2*pi,N+1);
thta1=thta0(1:N);
y1=R*cos(thta1);
z1=R*sin(thta1);
thta2=thta0(2:N+1);
y2=R*cos(thta2);
z2=R*sin(thta2);
xc=0;yc=(y2+y1)/2;zc=(z2+z1)/2;
dlx=0;dly=y2-y1;dlz=z2-z1;
NGx=N;NGy=NGx;
for i=1:NGy
for j=1:NGx
rx=x(j)-xc;ry=y(i)-yc;rz=0-zc;
r3=sqrt(rx.^2+ry.^2+rz.^2).^3;
dlxr_x=dly.*rz-dlz.*ry;
dlxr_y=dly.*rx-dlx.*rz;
Bx(i,j)=sum(c0*dlxr_x./r3);
Bz(i,j)=sum(c0*dlxr_y./r3);
B=(Bx.^2+Bz.^2).^0.5;
end
end
surf(x,y,B);
shading interp
grid on
case 2 %繪制磁感線分布圖像
用戶可以輸入不同的環(huán)半徑和環(huán)電流的值,繪制相應(yīng)的電流環(huán)磁場(chǎng)分布圖像和磁感線分布圖像。例如當(dāng)用戶設(shè)置環(huán)半徑為1m,環(huán)電流為200A時(shí),點(diǎn)擊繪制圖像按鈕,得到以下如圖3和圖4所示的兩個(gè)圖像。
圖3 電流環(huán)y=0處x-z平面上的磁感強(qiáng)度分布
圖4 電流環(huán)y=0處x-z平面上的磁感線分布布
觀察以上圖像,可以直觀地看出,通電電流環(huán)的磁場(chǎng)分布關(guān)于環(huán)對(duì)稱。在附近小范圍內(nèi)的磁場(chǎng)強(qiáng),越往周邊擴(kuò)展,磁場(chǎng)衰減得非???其他區(qū)域的磁感強(qiáng)度較弱,電流環(huán)的磁感線分布也關(guān)于環(huán)對(duì)稱,并且越靠近原點(diǎn),磁感線分布越密集。
在利用畢奧—薩伐爾定律對(duì)電流環(huán)產(chǎn)生的磁場(chǎng)進(jìn)行分析的基礎(chǔ)上,利用MATLAB軟件強(qiáng)大的積分運(yùn)算功能得到磁場(chǎng)分布,再利用 GUI功能設(shè)計(jì)一交互式的用戶界面。用戶可以任意輸入?yún)?shù)并選擇觀察視角,實(shí)時(shí)觀察電流環(huán)的磁感強(qiáng)度分布和磁感線分布,節(jié)省了大量的計(jì)算時(shí)間,并能形象、直觀得觀察磁場(chǎng)分布,是對(duì)課堂教學(xué)的有效輔助。
[1]郭智勇,劉得軍.一種圓環(huán)電流空間磁場(chǎng)數(shù)值計(jì)算方法[J].科學(xué)與技術(shù)工程,2013(29):8715-8720.
[2]孫愛(ài)良.環(huán)形電流平面內(nèi)磁場(chǎng)[J].蘭州鐵道學(xué)院學(xué)報(bào),1999(1):101-104.
[3]張星輝.圓電流磁感線的分布及磁感應(yīng)強(qiáng)度的函數(shù)表達(dá)式[J].大學(xué)物理,2006(1):32-37.
[4]高翠云,汪莉麗.利用MATLAB進(jìn)行電磁學(xué)計(jì)算及可視化教學(xué)[J].孝感學(xué)院學(xué)報(bào),2006:28-30.
[5]陳垚光.精通MATLAB GUI設(shè)計(jì)[M].北京:電子工業(yè)出版社,2011:182.
李小志(1993—),女,云南師范大學(xué)物理與電子信息學(xué)院2011級(jí)本科生,物理教育專業(yè)。
王靜(1979—),女,碩士,云南師范大學(xué)物理與電子信息學(xué)院講師,主要從事物理教育研究。