10、1,j);
f=u(i,j-1);
g=0.25.*(c+d+e+f);
u(i,j)=b+a.*(g-b);
end
end
end
mesh(u);
通過對相關(guān)資料的查詢及學(xué)習,我認為運用MATLAB編程就是要將有限差分法的基本公式實現(xiàn)。以此為出發(fā)點可以讓解析和編寫過程相對簡單化。
首先,先要對電場的邊界條件進行設(shè)定:
u=zeros(15,20);
i=2:14;
u(i,20)=100;
使其滿足題目的要求右側(cè)邊界電位為100,其余三邊為0,由此也可以判斷出此題目為
11、第一類邊界條件的問題。
精品
.
同時,此處,也要特別注意,因為在MATLAB程序中,編寫一個矩陣的默認順序是從左到右,從上到下。另外,命名矩陣時是先編寫行,后編寫列,因此,對于u(i,j)中,i代表的是第i行即對應(yīng)縱坐標,j代表的是第j列即對應(yīng)橫坐標,與坐標表示有一定的差別,需要區(qū)分和注意。
之后是相對關(guān)鍵的編寫部分,就是對電場內(nèi)部的電位設(shè)定,此處,我通過分離變量法將u分解為u(x)和u(y),分別求解。為讓計算簡便,我設(shè)定其內(nèi)電場為線性變化的,即u(x)=kx+b,u(y)=0作為初值進行計算(應(yīng)用分離變量法得到的結(jié)果是u(x)=Bsinh m∏/15
u(y)=Asinm∏/1
12、5??梢酝ㄟ^此處在得出結(jié)果后進行對比和誤差分析。)又因為要在MATLAB中進行運算,所以首先要轉(zhuǎn)化為i和j的形式,因此可得:u(j)=kj+b和u(i)=0。從而得到方程組:
u(1)=k+b=0;
u(20)=20k+b=100。
解得:u(j)=100/19*(j-1),即:u(i,j)=100/19*(j-1)。由此得到了內(nèi)電場除去上下邊界(衡為零)的電位方程,在MATLAB中我運用了for循環(huán)語句來實現(xiàn)其內(nèi)電場的賦值,源代碼如下:
for j=1:20
for i=2:14
u(i,j)=100/19*(j-1);
end
精品
.
13、end
將電場各點的電位賦初值完成后,就需要帶入公式進行計算了。在之前先要對“加速收斂因子” α的最佳值和預(yù)定的最大允許誤差進行確定。關(guān)于加速因子的最佳值確定問題,我通過學(xué)習和查閱相關(guān)資料得到了兩種方法,如下:
一是逐步搜索法;
將α的取值區(qū)間(1,2)進行M等分,α分別取1+1/M,1+2/M……1+(M-1)/M,通過上面提到的迭代公式2依次對同一個精度要求求出迭代次數(shù)k的值,并從中選出“加速收斂因子” α的最佳值,具體步驟如下:
步驟1 給定等分數(shù)M和精度要求ε的值,令α的初始值為1;
步驟2 令p=1,2,3,……M-1,重復(fù)步驟3-5;
步驟3 αp=1+p/
14、M;
步驟4 按照如下公式迭代
找出符合精度要求ε的迭代次數(shù)kp;
步驟5 比較找出kp值最小的αp為最佳的加速收斂因子α的值。
二是黃金分割法:
依據(jù)黃金分割法的思想,通過計算機自動選取最佳加速收斂因子α的近似值,具體步驟如下:
步驟1 對(1,2)區(qū)間第一次0.618的分割,區(qū)間分界a
精品
.
1=1,b1=2,在(a1,b1)區(qū)間分割出黃金點point1= a1+0.618(b1- a1),進行迭代公式2的迭代,求出迭代次數(shù)K值,如果迭代次數(shù)沒有超出規(guī)定的發(fā)散常數(shù),迭代結(jié)束,否則轉(zhuǎn)為步驟2。
步驟2 在(1,1.618)和(1.618,2)之
15、間進行第二次的黃金分割,找出分割點point2=a2+0.618(b2- a2),其中a2和b2是新分割區(qū)間的左右邊界。找出迭代次數(shù)最少的α。
以上兩種方法是比較具有實踐和研究價值進行的,在這里介紹和分享給大家探討。在我分析過后認為第二種較好,因為其可以通過計算機自動選取到最佳的加速收斂因子,但是實施起來比較復(fù)雜,要通過MATLAB或其它語言進行編碼實驗得到,我初步試驗過,沒能成功,就運用了第一種方法進行了計算,但是,我發(fā)現(xiàn)其運算過于復(fù)雜,筆算正確的成功率比較低,而運用電腦編程要重復(fù)多次運算,雖然,計算機運算快速且方便,但是,這樣的源代碼同樣過于復(fù)雜,可以進一步進行深入的研究。
本次的題目
16、解答中,由于是應(yīng)用計算機計算,所以計算速度和計算效率在不同的α取值中沒有明顯區(qū)別。因此,我就只是設(shè)定了一個1~2之間的一個數(shù)字:1.8為“加速收斂因子” α的值了,進行了近似計算,實驗誤差在可接受的范圍。
然后,是對于迭代次數(shù)的確定。當?shù)鷿M足停止條件:
時,對應(yīng)的迭代次數(shù)即為最終的迭代次數(shù),這里的W為設(shè)定好的允許誤差,為從簡方式,我選擇運用輸入迭代次數(shù),并通過多次輸入對比輸出結(jié)果選取最佳迭代次數(shù)的方法來選取,存在了一定的誤差。但是,相比于我運用上面的公式求解計算迭代次數(shù),進而得出的圖形的誤差比要小許多,我一直嘗試進行改進,但一直沒能很好的解決誤差過大的問題:最主要的問題是邊界值一
17、直不滿足我的設(shè)定值。希望通過進一步的研討和大家的交流能過得到最優(yōu)方式。
精品
.
通過以上的分析,我得出了進一步的編程代碼:
a=input(please input a(1
18、代求解,并用圖形形式表示出來。其源代碼如下:
for n=1:m;
for i=2:14;
for j=2:19;
b=u(i,j);
c=u(i,j+1);
d=u(i+1,j);
精品
.
e=u(i-1,j);
f=u(i,j-1);
g=0.25.*(c+d+e+f);
u(i,j)=b+a.*(g-b);
end
end
end
mesh(
19、u);
上述代碼中,b,c,d,e,f分別場內(nèi)一點及其左右上下各點的電位值,之后的g和u(i,j)則實現(xiàn)了逐次超松弛法的迭代,最后用mesh實現(xiàn)圖形的輸出。
六、 結(jié)果和誤差的對比分析
由分離變量法得到的初步結(jié)果是u(x)=Bsinh m∏/15和u(y)=Asinm∏/15,從而應(yīng)有u=Csinh(m∏/15)sinm(∏/15)的結(jié)果,從其表達式的形式,我們可以簡單推斷出電場的電位在x軸上的分布是成虛指數(shù)函數(shù)的形式呈現(xiàn),而在y軸上是成正弦函數(shù)呈現(xiàn)的,這和通過有限差分法的計算機仿真的圖形基本符合,如下圖:
精品
.
因此,可以基本確定通過計算機仿真得到的結(jié)果的正確性。
另外
20、,可能存在較大誤差的方面是跌代次數(shù),因為迭代次數(shù)是我們?nèi)斯ぽ斎氲?,所以判斷其正確與否要通過輸出的結(jié)果來判定、來選擇,下面幾幅圖是當“加速收斂因子” α=1.8時,不同的迭代次數(shù)m的對應(yīng)圖形:
m=1時:
m=10時:
精品
.
m=20
m=30
m=32
精品
.
m=35
m=40
通過上面迭代次數(shù)m取不同的值對應(yīng)的不同圖形分析可以看出,在m=1,10,20時期計算結(jié)果都存在較大誤差,圖形與分離變量法得到的結(jié)果相差很大,有明顯的不規(guī)則部分,不成現(xiàn)光滑的曲線。而當
精品
.
m=30后圖形與分離變量法計算到的圖形近似,
21、而且圖形規(guī)則,曲線光滑,而且隨著m值的增大圖形的變化非常微小了,因此,我選擇m=32為迭代次數(shù),所得到的結(jié)果誤差比較小,結(jié)果相對準確。
七、 研究結(jié)論
學(xué)習了運用有限差分法計算第一類邊界條件的電位值,通過計算機仿真進行了實際例題的求解,通過與分離變量法求解的對比,證明可行性和有效性,適用于解決第一類邊界問題,而且更加方便和快捷。同時,“加速收斂因子”最佳解問題比較復(fù)雜,不過通過計算機仿真的過程中,不同數(shù)值“加速收斂因子”的加速效果不易體現(xiàn)出來。跌代次數(shù)對計算結(jié)果又較大影響,迭代次數(shù)越多,結(jié)果越準確,誤差越小,但相應(yīng)的計算也會更加復(fù)雜,因此只要迭代次數(shù)得到得結(jié)果滿足一定的允許誤差范圍即可。
22、
附錄:
① 三類邊界條件:第一類:已知電位在邊界上的數(shù)值。
第二類:已知電位的導(dǎo)數(shù)在邊界上的數(shù)值。
第三類:已知電位在一部分邊界上的數(shù)值和在其余邊界上的導(dǎo)數(shù)的數(shù)值。
② 解析法包括:分離變量法,鏡像法,復(fù)變函數(shù)法,保角變換法,格林函數(shù)法。
③ 數(shù)值法包括:數(shù)值積分法,有限差分法,有限元法,矩量法。
④ 解析法的優(yōu)點:由有限個項構(gòu)成閉合解或無窮級數(shù),通常具有鮮明的物理意義。
精品
.
缺點:解題范圍窄小,對邊界形狀十分挑剔。
數(shù)值法的優(yōu)點:解題范圍寬廣,對邊界的形狀沒有限制。
缺點:數(shù)據(jù)離散,物理意義深藏其中。
心得體會:
有限差分法的公式套用很簡單,記住結(jié)果很簡單,但是要想深刻理解其內(nèi)容和靈活應(yīng)用則比較困難,需要一定時間的深刻學(xué)習和做題應(yīng)用,同時,這個方法確實是一個非常方便和有效地解決三類邊界條件問題的工具。
MATLAB在電磁場方面的應(yīng)用相當廣泛,其內(nèi)擁有的很多函數(shù)都可以模擬靜電場中的實例,就比如這次的研討就應(yīng)用了矩陣,通過有限差分法來模擬靜電場的電位分布,相信將來還會有更多的有意思,有研究價值計算和模擬電磁場的相關(guān)知識。是學(xué)好電磁場必須要牢固掌握的工具。
如有侵權(quán)請聯(lián)系告知刪除,感謝你們的配合!
精品