基于MATLAB的静电场模拟系统
目錄
- 摘要
- 1 引言
- 2 理論基礎
- 3 系統設計
- 3.1 程序設計代碼[2]、[3]
- 3.1.1 參數輸入代碼
- 3.1.2 二維電場線和三維等勢線的分布繪制代碼
- 3.1.3 三維電場線和三維等勢面的分布繪制代碼
- 3.1.4 靜電場中任意一點的電場強度和電勢大小的計算代碼
- 3.2 交互界面的設計和實現
- 4 結果分析與討論
- 4.1 系統運行界面
- 4.2 二維電場線分布和三維等勢線分布
- 4.2.1 單一點電荷
- 4.2.2 等量同號和等量異號點電荷
- 4.2.3 八個點電荷
- 4.3 三維電場線分布和三維等勢面分布
- 4.3.1 單一點電荷
- 4.3.2 等量同號和等量異號點電荷
- 4.3.3 八個點電荷
- 4.4 靜電場中任意一點的電場強度和電勢大小的計算
- 5 結論
- 參考文獻
- 附錄
- 附錄A 參數輸入代碼
- 附錄B 二維電場線和三維等勢線的分布繪制代碼
- 附錄C 三維電場線和三維等勢面的分布繪制代碼
- 附錄D 靜電場中任意一點的電場強度和電勢大小的計算代碼
摘要
靜電場的知識是非常重要但同時又是非常抽象的。尤其是電場疊加得到的合電場的電場線和電勢分布更是難以憑空想象。而目前網絡上大部分的資料都是簡單展示單個或兩個電荷產生的比較經典的電場分布模型,且都是展現的電場的二維分布。但實際上,電場在空間中的分布是三維的。
本文則基于科學計算軟件MATLAB,在借鑒部分參考資料的基礎上,編寫了基于MATLAB的靜電場模擬系統,利用計算機強大的算力來幫助我們更進一步直觀地認識靜電場這一物質。本系統還利用MATLAB的圖形用戶界面創建工具GUIDE創建了交互式界面,操作更加方便[1]。
關鍵詞:MATLAB;靜電場;交互式界面
1 引言
靜電場這一看不見摸不著的物質難以理解。由于條件限制,也不方便通過動手實驗去直觀感受靜電場的分布。很難想象出多個點電荷疊加得出的靜電場的電場線及電勢分布是什么樣的。如果想要對某個位置的電場強度和電勢大小進行定量分析,其中的計算量可想而知。而計算機的發展使得人們得以從大量的數據計算中擺脫出來,且運算速度越來越快。因此,本文基于科學計算軟件MATLAB,在借鑒部分參考資料的基礎上,編寫了基于MATLAB的靜電場模擬系統。該系統可實現最大將8個處于同一平面中的任意位置和電荷量的點電荷產生的靜電場進行疊加,并繪制出相應電場線分布和電勢分布圖形。還可以通過輸入坐標值得到靜電場中某一點處的電場強度和電勢大小。本系統還利用MATLAB的圖形用戶界面創建工具GUIDE創建了交互式界面,操作更加方便。
2 理論基礎
因為需要求坐標中一系列點的電勢和電場強度,為了方便計算,可先求出電勢φ,再直接利用電場強度和電勢的微分關系求解E。所以在模擬多個靜電場疊加之前,首先研究一個點電荷所產生的電場分布特點。由下述公式求得點電荷產生電場在某點的電勢。
根據疊加原理得到擴展到多個點電荷產生的靜電場疊加時的電勢計算公式。
又根據電場強度和電勢的微分關系,計算出電場強度。
但是在求解坐標系中某一點處的電場強度E時,只能通過分別求解Ex,Ey,Ez之后根據下述公式計算得到合場強。
最后根據計算所得的數據,利用MATLAB中的繪圖函數將圖形繪制出來即可。
3 系統設計
3.1 程序設計代碼[2]、[3]
3.1.1 參數輸入代碼
用于輸入點電荷的坐標位置和電荷量。
程序片段參見附錄A。
3.1.2 二維電場線和三維等勢線的分布繪制代碼
用于計算點電荷合成靜電場中的電勢大小和電場強度,并繪制二維電場線和三維等勢線的分布,這樣繪制出來的就是我們最許多資料和參考書上常見的電場的二維分布圖形。
計算和繪圖原理:
(1)建立平面二維坐標系。
(2)計算每個點電荷到坐標系中各點的距離,共計100*100=10000個點。
(3)根據得到的距離并利用疊加原理,計算所有點電荷在坐標系中每個點產生的電勢大小。
(4)根據得到的電勢,結合,計算坐標系中每個點處的電場強度。
(5)根據計算得到的數據,利用MATLAB中的圖形繪制函數繪制二維電場線和三維等勢線的分布。
程序片段參見附錄B。
3.1.3 三維電場線和三維等勢面的分布繪制代碼
用于計算點電荷合成靜電場中的電勢大小和電場強度,并繪制三維電場線和三維等勢面的分布。
計算和繪圖原理與二維電場線和三維等勢線的分布繪制相似,只是擴展到了三維坐標系上。
程序片段參見附錄C。
3.1.4 靜電場中任意一點的電場強度和電勢大小的計算代碼
用于計算點電荷合成靜電場中某一點的電場強度和電勢大小,并將結果返回到交互界面中。
計算原理:
(1)建立坐標系。
(2)計算所求坐標與各個點電荷之間的距離。
(3)利用疊加原理,計算所有點電荷在這一點產生的電勢之和。
(4)分別計算各點電荷與所求點在各坐標軸方向上的電場強度分量,最后合成總電場強度大小。
程序片段參見附錄D。
3.2 交互界面的設計和實現
利用MATLAB的圖形用戶界面創建工具GUIDE創建了交互式界面如圖所示。
MATLAB的GUIDE控件,簡化了GUI應用程序的開發。本系統主要是通過文本編輯器輸入參數,并在按鈕中的回調函數中寫入數據處理過程,單擊按鈕后,系統會自動生成需要繪制的圖形或者返回需要計算的數字到靜態文本框中顯示。
系統主要分兩大部分:
第一部分,圖形繪制。該系統最多可同時對8個點電荷的靜電場進行疊加,并繪制出相應的二維電場線分布和三維等勢線分布或三維電場線分布和三維等勢面分布。
第二部分,電場強度和電勢大小計算。當我們設置好點電荷的參數后,可以通過輸入坐標來計算靜電場中某一點處的電場強度和電勢大小。
4 結果分析與討論
4.1 系統運行界面
點擊運行之后系統會開始運行,如圖所示。
4.2 二維電場線分布和三維等勢線分布
4.2.1 單一點電荷
參數設置:
q1:x=5,y=5,q=3
繪圖結果如圖所示。
藍色帶箭頭線條為電場線分布,藍色圓弧和彩色的山峰狀圖形為電勢的分布和大小,顏色和高度都代表了電勢的大小。繪制結果與理論相符。
4.2.2 等量同號和等量異號點電荷
參數設置:
等量同號:q1:x=5,y=5,q=3 q2:x=-5,y=-5,q=3
等量異號:q1:x=5,y=5,q=3 q2:x=-5,y=-5,q=-3 繪圖結果如圖所示。
4.2.3 八個點電荷
參數設置:
q1:x=5,y=5,q=3 q2:x=6,y=-5,q=-3 q3:x=-5,y=3,q=3 q4:x=-5,y=-5,q=-3
q5:x=10,y=10,q=-2 q6:x=4,y=-10,q=4 q7:x=-10,y=10,q=-4 q8=x=-10,y=-8,q=4
繪圖結果如圖所示。
4.3 三維電場線分布和三維等勢面分布
4.3.1 單一點電荷
參數設置:
q1:x=10,y=5,z=-11,q=10
繪圖結果如圖所示。
藍色線條為電場分布,彩色閉合曲面為電勢分布,顏色代表電勢的大小,暖色核心為正電荷,冷色核心為負電荷。
4.3.2 等量同號和等量異號點電荷
參數設置:
等量同號:q1:x=5,y=5,z=5,q=3 q2:x=-5,y=-5,z=-5,q=3
等量異號:q1:x=5,y=5,z=5,q=3 q2:x=-5,y=-5,z=-5,q=-3
繪圖結果如圖所示。
4.3.3 八個點電荷
參數設置:
q1:x=6,y=6,z=6,q=3 q2:x=6,y=6,z=-6,q=-3 q3:x=6,y=-6,z=6,q=-3
q4:x=6,y=-6,z=-6,q=3 q5:x=-6,y=6,z=6,q=-3 q6:x=-6,y=6,z=-6,q=3
q7:x=-6,y=-6,z=6,q=3 q8:x=-6,y=-6,z=-6,q=-3
繪圖結果如圖所示。
4.4 靜電場中任意一點的電場強度和電勢大小的計算
參數設置:
q1:x=5,y=10,z=5,q=3 q2:x=-3,y=-5,z=-5,q=5 q3:x=3,y=6,z=-12,q=-6
繪圖結果如圖所示。
取任意坐標系中的點(1.3,6.4,12.9)和點(6.7,12.4,5)計算其所在處電場強度和電勢大小,計算結果如圖所示。
綜上所述,該系統對合成靜電場分布的模擬結果和參數計算結果均與實際相符,模擬效果較好。
5 結論
經過觀察與計算,模擬結果與實際結果相符,系統模擬效果較好。不足之處在于,由于程序中計算電勢和電場強度的公式中分母會出現為0的情況而使程序無法正常運行,因此參照網絡上的方法,在分母上加了一個無限小量eps(eps=2.22044604925031e-016),這樣便使程序可以正常運行,同時在可接受范圍內造成的誤差很小。
在這個模擬系統中,每畫一個圖都要處理數以萬計的數據,靠人力去計算根本不現實,而利用MATLAB和計算機強大的數據計算與處理能力,上萬的數據在幾秒鐘內就可以被處理完成,并且數據的可視化使得我們能夠更加直觀的觀察多個點電荷產生的疊加電場的電場線和電勢分布,我們能借此更直觀的認識靜電場這一物質,幫助我們的學習。
參考文獻
[1]欒玲,劉杰,馮立軍.基于MATLAB的點電荷系電場分布的用戶圖形界面設計[J].物理與工程,2016,26(4):72-74.
[2]王文濤,梅宇航.基于MATLAB的點電荷的靜電場模擬[J].中學物理,2013,31(03):95-96.
[3]劉浩,韓晶.MATLAB R2020a完全自學一本通[M].北京:電子工業出版社,2020:516-546.
附錄
說明:由于作者水平有限,matlab編程為自學,在編寫程序時只注重功能的實現,并沒有考慮程序的運行速度、內存的使用等專業問題,因而程序運行時可能出現運行速度較慢等問題,但不影響結果的呈現。程序的正常運行需要自行創建用戶界面,并將代碼放在對應模塊的回調函數中。
附錄A 參數輸入代碼
%總共需要傳入很多參數,但代碼都是一樣的,這里只截取一個 input=str2num(get(hObject,'String')); if(isempty(input))set(hObject,'String','0') end guidata(hObject,handles);附錄B 二維電場線和三維等勢線的分布繪制代碼
ep0=8.854*10.^(-12); %真空介電常數 e=1.602*10.^(-19); %元電荷電量 %獲取坐標和電荷量參數 x1=get(handles.edit1,'String');x11=str2num(x1); y1=get(handles.edit2,'String');y11=str2num(y1); q1=get(handles.edit3,'String');q11=str2num(q1)*e; %q的值為e的整數倍x2=get(handles.edit5,'String');x22=str2num(x2); y2=get(handles.edit6,'String');y22=str2num(y2); q2=get(handles.edit7,'String');q22=str2num(q2)*e;x3=get(handles.edit8,'String');x33=str2num(x3); y3=get(handles.edit9,'String');y33=str2num(y3); q3=get(handles.edit10,'String');q33=str2num(q3)*e;x4=get(handles.edit11,'String');x44=str2num(x4); y4=get(handles.edit12,'String');y44=str2num(y4); q4=get(handles.edit13,'String');q44=str2num(q4)*e; x5=get(handles.edit14,'String');x55=str2num(x5); y5=get(handles.edit15,'String');y55=str2num(y5); q5=get(handles.edit16,'String');q55=str2num(q5)*e;x6=get(handles.edit17,'String');x66=str2num(x6); y6=get(handles.edit18,'String');y66=str2num(y6); q6=get(handles.edit19,'String');q66=str2num(q6)*e;x7=get(handles.edit20,'String');x77=str2num(x7); y7=get(handles.edit21,'String');y77=str2num(y7); q7=get(handles.edit22,'String');q77=str2num(q7)*e;x8=get(handles.edit23,'String');x88=str2num(x8); y8=get(handles.edit24,'String');y88=str2num(y8); q8=get(handles.edit25,'String');q88=str2num(q8)*e; %設置二維坐標系范圍,建立二維坐標系lyd mul=max([q11/e,q22/e,q33/e,q44/e,q55/e,q66/e,q77/e,q88/e])/2; %坐標范圍要隨著電荷量的變化而變化 xm=20*mul; ym=20*mul; x=linspace(-xm,xm); y=linspace(-ym,ym); [X,Y]=meshgrid(x,y); %計算每個點電荷到坐標系中各點的距離 R1=sqrt((X-x11).^2+(Y-y11).^2); R2=sqrt((X-x22).^2+(Y-y22).^2); R3=sqrt((X-x33).^2+(Y-y33).^2); R4=sqrt((X-x44).^2+(Y-y44).^2); R5=sqrt((X-x55).^2+(Y-y55).^2); R6=sqrt((X-x66).^2+(Y-y66).^2); R7=sqrt((X-x77).^2+(Y-y77).^2); R8=sqrt((X-x88).^2+(Y-y88).^2); %計算電勢 U=(1./(4*pi*ep0))*((q11./R1)+(q22./R2)+(q33./R3)+(q44./R4)+(q55./R5)+(q66./R6)+(q77./R7)+(q88./R8)); %畫圖 figure colormap('jet');%設置配色,顏色表示電勢大小 contour3(X,Y,U,100);%畫三維電勢圖 title('二維電場線和三維等勢線分布圖');%設置標題 %設置坐標軸名 xlabel('X/m'); ylabel('Y/m'); zlabel('U/v'); grid on%顯示軸網格線 hold on%疊加繪圖 %繪制坐標軸 plot([-xm;xm],[0;0]) plot([0;0],[-ym;ym]) %標出各點電荷所在位置 if q11~=0 %只有電荷量不為零時才會標記電荷位置lydplot(x11,y11,'o','MarkerSize',10)%標出電荷位置 end if q22~=0plot(x22,y22,'o','MarkerSize',10) end if q33~=0plot(x33,y33,'o','MarkerSize',10) end if q44~=0plot(x44,y44,'o','MarkerSize',10) end if q55~=0plot(x55,y55,'o','MarkerSize',10) end if q66~=0plot(x66,y66,'o','MarkerSize',10) end if q77~=0plot(x77,y77,'o','MarkerSize',10) end if q88~=0plot(x88,y88,'o','MarkerSize',10) end %根據電場強度等于電勢的負梯度計算電場強度值 [Ex,Ey]=gradient(-U,x(2)-x(1),y(2)-y(1)); %繪制電場線 streamslice(X,Y,Ex,Ey)附錄C 三維電場線和三維等勢面的分布繪制代碼
ep0=8.854*10.^(-12); %真空介電常數 e=1.602*10.^(-19); %元電荷電量 %獲取坐標和電荷量參數 x1=get(handles.edit1,'String');x11=str2num(x1); y1=get(handles.edit2,'String');y11=str2num(y1); z1=get(handles.edit29,'String');z11=str2num(z1); q1=get(handles.edit3,'String');q11=str2num(q1)*e;%q的值為e的整數倍x2=get(handles.edit5,'String');x22=str2num(x2); y2=get(handles.edit6,'String');y22=str2num(y2); z2=get(handles.edit30,'String');z22=str2num(z2); q2=get(handles.edit7,'String');q22=str2num(q2)*e;x3=get(handles.edit8,'String');x33=str2num(x3); y3=get(handles.edit9,'String');y33=str2num(y3); z3=get(handles.edit31,'String');z33=str2num(z3); q3=get(handles.edit10,'String');q33=str2num(q3)*e;x4=get(handles.edit11,'String');x44=str2num(x4); y4=get(handles.edit12,'String');y44=str2num(y4); z4=get(handles.edit32,'String');z44=str2num(z4); q4=get(handles.edit13,'String');q44=str2num(q4)*e;x5=get(handles.edit14,'String');x55=str2num(x5); y5=get(handles.edit15,'String');y55=str2num(y5); z5=get(handles.edit33,'String');z55=str2num(z5); q5=get(handles.edit16,'String');q55=str2num(q5)*e;x6=get(handles.edit17,'String');x66=str2num(x6); y6=get(handles.edit18,'String');y66=str2num(y6); z6=get(handles.edit34,'String');z66=str2num(z6); q6=get(handles.edit19,'String');q66=str2num(q6)*e;x7=get(handles.edit20,'String');x77=str2num(x7); y7=get(handles.edit21,'String');y77=str2num(y7); z7=get(handles.edit35,'String');z77=str2num(z7); q7=get(handles.edit22,'String');q77=str2num(q7)*e;x8=get(handles.edit23,'String');x88=str2num(x8); y8=get(handles.edit24,'String');y88=str2num(y8); z8=get(handles.edit36,'String');z88=str2num(z8); q8=get(handles.edit25,'String');q88=str2num(q8)*e; %設置三維坐標系范圍,建立三維坐標系 mul=max([abs(q11)/e,abs(q22)/e,abs(q33)/e,abs(q44)/e,abs(q55)/e,abs(q66)/e,abs(q77)/e,abs(q88)/e])/2; %坐標范圍要隨著電荷量的變化而變化lyd xm=20*mul; ym=20*mul; zm=20*mul; x=linspace(-xm,xm); y=linspace(-ym,ym); z=linspace(-zm,zm); [X,Y,Z]=meshgrid(x,y,z); %計算每個點電荷到坐標系中各點的距離 R1=sqrt((X-x11).^2+(Y-y11).^2+(Z-z11).^2); R2=sqrt((X-x22).^2+(Y-y22).^2+(Z-z22).^2); R3=sqrt((X-x33).^2+(Y-y33).^2+(Z-z33).^2); R4=sqrt((X-x44).^2+(Y-y44).^2+(Z-z44).^2); R5=sqrt((X-x55).^2+(Y-y55).^2+(Z-z55).^2); R6=sqrt((X-x66).^2+(Y-y66).^2+(Z-z66).^2); R7=sqrt((X-x77).^2+(Y-y77).^2+(Z-z77).^2); R8=sqrt((X-x88).^2+(Y-y88).^2+(Z-z88).^2); %根據疊加原理計算電勢 U=(1./(4*pi*ep0))*((q11./R1)+(q22./R2)+(q33./R3)+(q44./R4)+(q55./R5)+(q66./R6)+(q77./R7)+(q88./R8)); %根據電場強度等于電勢的負梯度計算電場強度lyd [Ex,Ey,Ez]=gradient(-U,x(2)-x(1),y(2)-y(1),z(2)-z(1)); %畫圖 figure view(3);%建立三維坐標系視圖 title('三維電場線和三維等勢面分布圖');%設置標題 %設置坐標名 xlabel('X/m'); ylabel('Y/m'); zlabel('Z/m'); grid on%顯示軸網格線 hold on%疊加繪圖 %標出各點電荷所在位置 if q11~=0 %只有電荷量不為零時才會標記電荷位置plot3(x11,y11,z11,'o','MarkerSize',10)%標出電荷位置 end if q22~=0plot3(x22,y22,z22,'o','MarkerSize',10) end if q33~=0plot3(x33,y33,z33,'o','MarkerSize',10) end if q44~=0plot3(x44,y44,z44,'o','MarkerSize',10) end if q55~=0plot3(x55,y55,z55,'o','MarkerSize',10) end if q66~=0plot3(x66,y66,z66,'o','MarkerSize',10) end if q77~=0plot3(x77,y77,z77,'o','MarkerSize',10) end if q88~=0plot3(x88,y88,z88,'o','MarkerSize',10) end %畫等勢面 colormap('jet'); %設置配色,顏色表示電勢大小 for i=-10e-10:1e-10:10e-10 isosurface(x,y,z,U,i); %繪制等勢面 end alpha 0.1 %設置透明度 %畫電場線 for k=-xm:xm/2:xmfor l=-xm:xm/2:xm%從x=0的平面上的幾個點作為出發點,繪制到相應點電荷的圖線,后面同理streamline(x,y,z,Ex,Ey,Ez,0,l,k); end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,Ex,Ey,Ez,xm,l,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,Ex,Ey,Ez,-xm,l,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,Ex,Ey,Ez,l,0,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,Ex,Ey,Ez,l,xm,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,Ex,Ey,Ez,l,-xm,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,Ex,Ey,Ez,l,k,0);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,Ex,Ey,Ez,l,k,xm);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,Ex,Ey,Ez,l,k,-xm);end endfor k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,0,l,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,xm,l,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,-xm,l,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,l,0,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,l,xm,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,l,-xm,k);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,l,k,0);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,l,k,xm);end end for k=-xm:xm/2:xmfor l=-xm:xm/2:xmstreamline(x,y,z,-Ex,-Ey,-Ez,l,k,-xm);end end附錄D 靜電場中任意一點的電場強度和電勢大小的計算代碼
ep0=8.85*10.^(-12);%真空介電常數 e=1.602*10.^(-19); %元電荷電量 %獲取坐標和電荷量參數 x1=get(handles.edit1,'String');x11=str2num(x1); y1=get(handles.edit2,'String');y11=str2num(y1); z1=get(handles.edit29,'String');z11=str2num(z1); q1=get(handles.edit3,'String');q11=str2num(q1)*e;%q的值為e的整數倍x2=get(handles.edit5,'String');x22=str2num(x2); y2=get(handles.edit6,'String');y22=str2num(y2); z2=get(handles.edit30,'String');z22=str2num(z2); q2=get(handles.edit7,'String');q22=str2num(q2)*e;x3=get(handles.edit8,'String');x33=str2num(x3); y3=get(handles.edit9,'String');y33=str2num(y3); z3=get(handles.edit31,'String');z33=str2num(z3); q3=get(handles.edit10,'String');q33=str2num(q3)*e;x4=get(handles.edit11,'String');x44=str2num(x4); y4=get(handles.edit12,'String');y44=str2num(y4); z4=get(handles.edit32,'String');z44=str2num(z4); q4=get(handles.edit13,'String');q44=str2num(q4)*e;x5=get(handles.edit14,'String');x55=str2num(x5); y5=get(handles.edit15,'String');y55=str2num(y5); z5=get(handles.edit33,'String');z55=str2num(z5); q5=get(handles.edit16,'String');q55=str2num(q5)*e;x6=get(handles.edit17,'String');x66=str2num(x6); y6=get(handles.edit18,'String');y66=str2num(y6); z6=get(handles.edit34,'String');z66=str2num(z6); q6=get(handles.edit19,'String');q66=str2num(q6)*e;x7=get(handles.edit20,'String');x77=str2num(x7); y7=get(handles.edit21,'String');y77=str2num(y7); z7=get(handles.edit35,'String');z77=str2num(z7); q7=get(handles.edit22,'String');q77=str2num(q7)*e;x8=get(handles.edit23,'String');x88=str2num(x8); y8=get(handles.edit24,'String');y88=str2num(y8); z8=get(handles.edit36,'String');z88=str2num(z8); q8=get(handles.edit25,'String');q88=str2num(q8)*e;xq=get(handles.edit27,'String');xqq=str2num(xq); yq=get(handles.edit28,'String');yqq=str2num(yq); zq=get(handles.edit37,'String');zqq=str2num(zq); %準備計算所用的數據 Q=[q11 q22 q33 q44 q55 q66 q77 q88]; Xz=[x11 x22 x33 x44 x55 x66 x77 x88]; Yz=[y11 y22 y33 y44 y55 y66 y77 y88]; Zz=[z11,z22,z33,z44,z55,z66,z77,z88]; %計算所求坐標與各個點電荷之間的距離 deltx=-Xz+xqq; delty=-Yz+yqq; deltz=-Zz+zqq; R=sqrt(deltx.^2.+delty.^2+deltz.^2); %計算所求坐標處的電勢lyd U=(1./(4*pi*ep0)).*sum(Q./(R+eps),'all'); %計算所求坐標處的電場強度 Ea=(1./(4*pi*ep0)).*sum(Q./((deltx.^2)+eps),'all'); Eb=(1./(4*pi*ep0)).*sum(Q./((delty.^2)+eps),'all'); Ec=(1./(4*pi*ep0)).*sum(Q./((deltz.^2)+eps),'all'); E=sqrt(Ea.^2+Eb.^2+Ec.^2); %回傳顯示結果 set(handles.text37,'String',U); set(handles.text34,'String',E); guidata(hObject,handles);總結
以上是生活随笔為你收集整理的基于MATLAB的静电场模拟系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微型计算机原理与接口技术(周荷琴 冯焕清
- 下一篇: 6.13一天知识总结