第五章場問題脉顿,選做了課后5.1題
由場中已知的邊界位置電勢來確定其它各處的電勢,之后進(jìn)一步求電場強(qiáng)度莉恼。
解題分析
觀察下圖,已知小正方形區(qū)域?yàn)橐坏葎蒹w區(qū)域速那,且電勢為1类垫;大正方形外框亦為一等勢邊界,電勢為0琅坡。則由系統(tǒng)整體的對稱性,設(shè)置各選定位置處的電勢初始參考值
如下圖残家,將小正方形和大正方形之間的距離等分為三份(分界線由虛線標(biāo)出)榆俺,并將電勢差等分,設(shè)置各虛線處的具體參考值(已標(biāo)識于虛線處):
一坞淮,9×9矩陣
設(shè)置一個9×9的矩陣茴晋,記錄下初始值,之后進(jìn)行迭代更新回窘。迭代時應(yīng)注意到小正方形區(qū)域和大正方形邊框處的電勢不應(yīng)變化诺擅。
上圖即為場區(qū)域一些格點(diǎn)處的初始電勢設(shè)定值。
Mathematica代碼:
While[Abs[u1 - (u[[2, 1]] + u[[2, 3]] + u[[1, 2]] + u[[3, 2]])/4] >= 10^-4,
For[i = 2, i <= 8, i++,
For[j = 2, j <= 8, j++,
If[i >= 4 && i <= 6 && j >= 4 && j <= 6, Null, u[[i, j]] = (u[[i, j - 1]] + u[[i, j + 1]] + u[[i - 1, j]] + u[[i + 1, j]])/4]]]; u1 = u[[2, 2]]]啡直;
MatrixForm[u]
設(shè)定的迭代終止條件為矩陣元素(2,2)在迭代前后值之差小于10^-4烁涌,得到迭代結(jié)果矩陣為(截圖效果AV畫質(zhì)苍碟。。撮执。):
按矩陣元素值的大小對應(yīng)顏色深淺微峰,畫出顏色表示圖(外周一圈純白表示著0):
二,17×17矩陣
由上圖可直觀的看出迭代達(dá)到穩(wěn)定時勢場的大致分布抒钱,但像素點(diǎn)還有待增多蜓肆,增多后效果會很好。我試著寫任意步長細(xì)分區(qū)域的程序谋币,而且把初始矩陣的設(shè)定也有編程解決了仗扬,于是這個問題在任意細(xì)分下的情況也可以解決,首先蕾额,設(shè)置初始矩陣為17×17早芭,矩陣初始值自動設(shè)定程序?yàn)椋?/p>
Mathematica代碼:
step = .166667;
For[i = 1, i <= 17, i++,
For[j = 1, j <= 17, j++,
If[(i == 2 || i == 16) && (j >= 2 && j <= 16) || (j == 2 || j == 16) && (i >= 2 && i <= 16), u[[i, j]] = step*1];
If[(i == 3 || i == 15) && (j >= 3 && j <= 15) || (j == 3 || j == 15) && (i >= 3 && i <= 15), u[[i, j]] = step*2];
If[(i == 4 || i == 14) && (j >= 4 && j <= 14) || (j == 4 || j == 14) && (i >= 4 && i <= 14), u[[i, j]] = step*3];
If[(i == 5 || i == 13) && (j >= 5 && j <= 13) || (j == 5 || j == 13) && (i >= 5 && i <= 13), u[[i, j]] = step*4];
If[(i == 6 || i == 12) && (j >= 6 && j <= 12) || (j == 6 || j == 12) && (i >= 6 && i <= 12), u[[i, j]] = step*5];
If[(i == 7 || i == 11) && (j >= 7 && j <= 11) || (j == 7 || j == 11) && (i >= 7 && i <= 11), u[[i, j]] = 1];
If[(i == 8 || i == 10) && (j >= 8 && j <= 10) || (j == 8 || j == 10) && (i >= 8 && i <= 10), u[[i, j]] = 1];
If[i == 9 && j == 9, u[[i, j]] = 1]]]
因?yàn)閰^(qū)域被分成了更多小區(qū)域,所以判斷穩(wěn)定的條件由之前的10^-4改變?yōu)?0^-5凡简,得穩(wěn)定的17×17矩陣為(請忽略畫質(zhì)逼友。。秤涩≈钠颍可點(diǎn)擊原圖查看,會清晰一些):
彩圖為:
中心小正方形為1勢能區(qū)域筐眷,最外面一圈為0勢能黎烈,顏色由紅向藍(lán)過度,勢能值由1向0減小匀谣,此圖已經(jīng)比較細(xì)膩了照棋,顯示效果也比較好。顏色相同的條帶可近似看作是等勢線武翎。
三烈炭,33×33矩陣
為了更好的顯示效果,做了個33×33矩陣宝恶,運(yùn)行結(jié)果矩陣很大符隙,迭代運(yùn)算的截止精度也向小數(shù)點(diǎn)后又推進(jìn)了一位,達(dá)到了10^-6垫毙,最終結(jié)果矩陣大到無法完全截屏(下圖只截取了一部分):
但彩圖的效果很好:
從上圖已經(jīng)可以看出很好的顯示效果了霹疫,直觀又上眼。其“等勢線”也更加精細(xì)综芥,場的分布已經(jīng)比較了然丽蝎,是一個很好的效果。
我在編程過程中發(fā)現(xiàn)在理解了教材的算法和原理后膀藐,用Mathematica處理這個問題很容易屠阻,于是順便把下題也解決了红省,與上題不同,此題的初始電勢值設(shè)置要從頭再來栏笆,且+1與-1之間也不是上題中的小正方形區(qū)域:
在上題的代碼基礎(chǔ)上类腮,修改一下限制條件,有:
Mathematica代碼:
While[Abs[u1 - (u[[2, 1]] + u[[2, 3]] + u[[1, 2]] + u[[3, 2]])/4] >= 10^-4, For[i = 2, i <= 8, i++, For[j = 2, j <= 8, j++, If[i >= 4 && i <= 6 && (j == 4 || j == 6), Null, u[[i, j]] = (u[[i, j - 1]] + u[[i, j + 1]] + u[[i - 1, j]] + u[[i + 1, j]])/4]]]; u1 = u[[2, 2]]]
MatrixForm[u]
運(yùn)行結(jié)果矩陣為:
由該矩陣我們能發(fā)現(xiàn)勢場分布與之前一題在左部分矩陣元上的區(qū)別蛉加,此題左半部分勢場雖然有與上一題相似的地方(位于勢值1和勢值0之間)蚜枢,但是由于勢值1區(qū)域由小正方形平板縮小為一個線分布,且右半部分增加了勢值為-1的線分布针饥,對勢值有了明顯影響厂抽。
轉(zhuǎn)換為顏色圖,效果更直觀(藍(lán)色越深丁眼,值越小筷凤,白色為0勢值,顏色越偏向黃則勢值越大):
因?yàn)檫@個題目初始矩陣的設(shè)置比較麻煩苞七,故只做了9×9的矩陣藐守,但原理是類似的。
結(jié)論
由課本的拉普拉斯等式出發(fā)蹂风,做分析得出數(shù)值解法卢厂,取得了一定效果,穩(wěn)定矩陣的存在表明了方法的可靠性惠啄,矩陣轉(zhuǎn)換為彩圖顯示令結(jié)果更加明顯而直觀慎恒,將區(qū)域細(xì)分為更多取樣點(diǎn),初始矩陣越大時撵渡,最終結(jié)果越精細(xì)融柬,越了然直觀。不得不說趋距,課本的分析介紹的這種數(shù)值方法很好很有用粒氧,取樣點(diǎn)密度高了之后會有更好的結(jié)果。
說明
這次我沒用Python节腐,改用的Mathematica靠欢。我現(xiàn)在對那玩意有點(diǎn)陰影,有時候出問題找不到源頭铜跑。。骡澈。但既然是計算物理而不是計算Python锅纺,用什么工具就不重要了,結(jié)果出來了就行肋殴。