超松弛迭代法求解接地金屬槽內(nèi)電位分布_第1頁
超松弛迭代法求解接地金屬槽內(nèi)電位分布_第2頁
超松弛迭代法求解接地金屬槽內(nèi)電位分布_第3頁
超松弛迭代法求解接地金屬槽內(nèi)電位分布_第4頁
超松弛迭代法求解接地金屬槽內(nèi)電位分布_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗一用超松弛迭代法求解接地金屬槽內(nèi)電位分布-、實驗內(nèi)容:試用超松弛迭代法求解接地金屬槽內(nèi)電位的分布。已知:,mmM 10h*'a/4a*'cm給疋邊值如怪所不。給定初值:KH?0?:九誤差范圍:5- ! 0"計算迭代次數(shù),分布。一實驗思路 由邊界條件用泊松方程的五點差分格式求得中央點的點位。再以所得點及邊界再次利用泊松方程的五點差分格式求出 另四個點,依照此方法求出其余點的電位分布。用最佳收斂因子的經(jīng)驗公式計算收斂因子。利用超松弛迭代法進行差分方程的求解,當(dāng)遇到邊界是采用 邊界值或者邊界差分格式。直到所有節(jié)點電位滿足誤差條件。二.實驗設(shè)計原理:有限差分法 有限差分法

2、(Finite Differential Method)是基于差分原理的一種數(shù)值計算法。其基本思想:將場域離散為許多小網(wǎng) 格,應(yīng)用差分原理,將求解連續(xù)函數(shù)?的泊松方程的問題換為 求解網(wǎng)格節(jié)點上?的差分方程組的問題。編程時將邊值編入到程序中,這樣可以省略輸入,從而直接 輸入迭代因子進行求解,可以減少編程的難度。迭代時所用公式是和書上一樣,為)j二bi j+w/4*(bi+l j+bi j+l+ai jT +o k代表b,而k+1代表a其中輸出開始菜單(邊值都已經(jīng)給定)輸入迭代因w迭代次n=0n+開始循環(huán)迭函數(shù)判斷相鄰二次差值是否小于給定輸 n 電 aij終止.三、程序運行界面及結(jié)果四-源程序代碼

3、#include<iostream> #include<mathh>#include<iomani p> using names pace std; classoverrei /over-relaxation iterative method private:intm,n;doublex.e;double *p,*q;public:int k;overrei(int mOJnt nO,double eO)inti;e=eO;k=0;rn=mO;n=nO;p=new double *m; fori=0;i<m;i+)p i=newdoublenj; q=

4、new double *(m;迭代因了求解 fori=0;i<m;i+) qli=newdoublen;if(m=n)/(m-1);x=2/(l+sin(3.141592654 elsex=2-3.141592654*sqrt(2)*sqrt(l/(m-l)*(m-l)+l/(n-l)*(n-l);:«x«endl;憫環(huán)?最佳收斂因了void Initialization。;void Cal();void DiedaiO;void Show();賦邊界條件 計算 迭代函數(shù)輸出部分賦邊界條件邊界條件void overrei:lnitiali2atio n()intij;

5、for(i=0;i<m;i+)forj=0;j<n;j+)if(i=O)else計算憫璜?初始點位:vvendl; ShQW();void overrei:Cal()intij; int c=l; while(l)c=l:for(i=0;i<m;i+)forj=0;j<n;j+)if(P【i】U卜q【i】U】)Q| |g【i】U】P【inj】)Q)/相鄰兩次迭代誤差是否小于le-5c=O;break;if(c=O) break;if(c=l && k!=0) break; Oiedaif);void overrei:Dieddi()迭代函數(shù)double

6、y=x/4;if(k%2)fori=l;i<m-l;i+) forj=l;j<n-l;j+)q【i)Urpi】U】+y(q【il】W+q【i)Ul】+P【i+】U】+P【i)U+l】Qp【OU】);elsefori=l;i<m-l;i+) forj=l;j<n-l;j+)k+;void overrei:Show()輸出部分intij;for(i=0;i<m;i+)forj=0;j<n;j+)cout«setw12)«set pycision(6)<<fiXd<<qiU)<vends;cout<<e

7、ndl;int main()cout«cout«超松弛迭代法求解接地金屬槽內(nèi)電位的分布“介(1|;cout«overrei A(5,5,le-5);AJniUalization()jACal();制璜?電位分布:«endl;AShQW();制璜?迭代次數(shù):Ak<“ndl;return 0;實驗二按對稱場差分格式求解電位的分布XHMMHMMMKXNMMM XMMNM MMHXMXMICMMWMXNMMHN M 超松弛送企法求解揍地金匡槽內(nèi)電位的金希leoIWUWWUleuIWueuwae0匕削咖0。也刪0suuu 知0owwn0U0妣刪o.uw 知u

8、UWWltetiWlWU0血也咖0nHWWde0BHHHm巳位介市:leuUWWlliwlUU.(JtAtlMAtIW4285714252678 S7142.857143nn.metwd1825nfwmn18.咎MMn(LAM 伽7142fi5798214287442857Aeflfl,咖MRR次如2億 Any hey co continue:,一實驗思路只計算一半的區(qū)域,對另一半進行對稱性計算,減小計算量。選取二維數(shù)組,同樣是兩個數(shù)組a4141. b4141,分別用于表示迭代前后的取值。由此對第20列進行特殊處理。即第21列是和第20列相等的,因為在第21列上標(biāo)注了?/?x=0,即要求每次迭

9、后都要求uli20=uli19b其余則列的電位值時,根據(jù)對稱性可得到22同前。當(dāng)計算出了前 右半邊的電位值,即要求uli40-j=ulij;,直接賦值。四周的電位值依舊保持不變,不能夠參與迭代。并且中間對稱列上的電位值為零,故也不參與迭代。由題意可知,只有第1列到第20列參與迭代。在進行精度計算時,用數(shù)組b的值與相應(yīng)數(shù)組a里的值進行比較,沒迭代一次都要進行比較。如果在誤差允許的范圍內(nèi),則繼續(xù)迭代;當(dāng)超過誤差標(biāo)準(zhǔn)的時候則停止迭代。依舊按照比較得到最少收斂次數(shù)的方法在程序中計算出最佳收斂因子。然后對對稱列右邊的點進行對稱賦值。最后輸出輸出最佳迭代因子、迭代的次數(shù)和迭代后各相應(yīng)點的電位值。二源程序代

10、碼#includeiostream h>#includeinath h>#include<iomanip h> void mainO double ul4141,u24141: int flag=10000, i, j, e, n:double a, d: /a最佳加速收斂因子 for(j=0:j<41:j+)ul0j=100: ul40j=0:for(i=l:i<40:i+)uliO=O: uli40=0:for(i=l:i<40:i+) /內(nèi)部點賦初值for(j=l:j<21:j+):«endl:迭代前左半?yún)^(qū)域各電位點上的初始值憫璜

11、? for(i=0:i<41:i+)for(j=0;j21;j+)cout«uli j« ; /輸出迭代初值cout«endl;cout«endl«for(d=l:d<2:d+=0.01)/取迭代次數(shù)最少的加速收斂因子n=0: for(j=0:j<41:j+)ul0j=100: ul40j=0: for(i=l:i<40:i+) uliO=O: uli40=0: for(i=l:i<40:i+)for(j=l:j<21:j+) d。/迭代X次 for(i=0:i<41:i+) for(j=0:j<

12、22:j+) for(i=l:i<40:i+) for(j=l;j20;j+) ulij=u2ij + (d/4)*(u2i+lj+u2ij+l+uliTj+ulij-l-4*u2ij): uli20=uli19:判斷精度 for(i=l;i<40;i+)/ for(j=l;j21;j+) if (fabs(ulij-u2ij)>le-5) e=l; break: else e=0: if(e=l) break: n+;/迭代次數(shù) while(e);if (n<flag) flag=n: a=d: for (1=1; i<40; i+) /對其對稱點賦值 for(

13、j=l:j<21:j+)澗璜?迭代后各節(jié)點上最終電位近似值:«endl: for(i=0:i<41:i+) for(j=0:j<41:j+)條?淇?鳥哲擾?狐軸扌宛獗淇?敗暉?字變嵩蹶?尼;/對齊輸cout«endl;cout«endl«endl;澗璜?收斂因子:«a«endl; cout«endl;澗璜?迭代次數(shù):«flag«endl; cout«endl;程序運行界而及結(jié)果三.附錄:程序一:#include<iostream,h>#include<math

14、h>void main()double m川;int N=0,b=l;intij;double e=0,00001;double a=2/(l+sin(3.1415926/4); for(i=0;i<=4;i+)forj=0;j<=4;j+)m(l4=100;m(24=100;ml34=100; nllt4=100; n(2(4=100: n(3t4=100;for(j=4;j>=0;j-)for(i=0;i<=4;i+)cout«endl;while(b=l)b=0;N=N+1;fori=l;i<=33+)for(j=l;j<=3;j+)f

15、ori=l;i<=3;i+)for(j=l;j<=3;j+) b=l;forj=4;j>=0;j-)for(i=0;i<=4;i 卄)cout«endl;cunt«N=«N«endl;程序二:#include<iostream> #include<math.h>#include<iomani p> using names pace std;classoverrei /over-relaxation iterative method p hvate:intm,n; doublex,e;double

16、 «*p/*q;public:int k;overreifint mOJnt nOdouble eO)inti;e=eO;k=0;m=mO;n=nO;p=new double *m;fori=0;i<m;i+)p i=newdoublenj;q=new double *m;/迭代因子求解for(i=0;i<m;t+)qi=newdoublenj;if(m=n)x=2/(l+sin(3.141592653/(m-l)jelsex=2-3.141592653*sqrt(2)*sqrt(l/(m-l)*(m-l)+l/(n-l)*(n-l); 憫璜?最佳收斂Wf:«x

17、«end!;void Initialization); void Cal();void OiedaiO;void Show);賦邊界條件計算 迭代函數(shù)輸出部分void overrei:lnitiali2ation()intij;邊界條件 for(i=0;i<m;i+) forJ=0;j<n;j+)if(i=O)ptiDJ=100;elsep>D=o; qtiD=O;泯瑾?初始點位:«endl; Show();voidoverrei:Cal()intij; int c=l; while(l)c=l;for(i=0;i<m;i+)forj=0;j<

18、n;j 卄)if(p(iil-qlilj)>e|(qinjl-pliljl)>e)c=O;break;ifc=O) break;if(c=l && k!=0) break;Oiedai()j voidoverrei:Diedai)intijjdouble y=x/4; if(k%2)fori=l;i<m-l;i+) forj=l;j<n-l;j+)qi|jl=ptiJ+y*(qi-lD+qD(j-l+PD+lUhpIiJlj+ll-4*pi|j);elsefor(i=l;i<m-l;i+) forj=l;j<n-l;j+)p【i)U】=q【i

19、】U】+yrp【ii】U】+p【i)Ui】+q【i+i】U】+q【i)U+i】4p【i)u】);k+;voidoverrei:Show() inti J;for(i=0;i<m;i+)forj=0;j<n;j+)cout«setw12)«set precision(6)<<fixed<<qiU<<6nds;cout«endl;int main()cout«cout«cout«*瘴«瘴*»水瘴*瘴*瘴*瘴*瘴*瘴*»*«*«*瘴*瘴*瘴*&

20、#187;水VQnd|趙松弛迭代法求解接地金屬槽內(nèi)電位的分布“介(1|;*瘴*水瘴*瘴*瘴*瘴*瘴*瘴*«*«*瘴*overrei A(5,5Je6);AJnitializationO;A.CalO;憫il?電位分布:«endl;A.ShowO;憫坯?迭代次數(shù):«A.k«endl;return 0;程序三ffinclude <iostream.h> #include<mathh> int iJ,N=O;/N為迭代次數(shù) double ul;定義電位 double u2; double e=0.00001;誤差范圍 doub

21、le a=l5;/加速收斂因了 int finish。;/迭代結(jié)束函數(shù) int NresiHtO;/求解迭代次數(shù) void pnnt();void main()if(i=4)for(j=0;j<5;j 卄) uiiaj=ioo;/邊界值else ulijJ=O;N=Nresult(); print();void print)憫璜?迭代次數(shù)為:«N«endl;for(j=0;j<5;j+) cout«u24(jj«'t'cout«endl;for(j=0;j<5;j+)cout«u2 cout«

22、;end!;for(j=0;J<5;j+)cout«u2 cout«endl;forj=0;j<5;j+)cout«u2l(j«At'cout«endl;for(j=0;j<5;J+)cout«u20(jJ«At'cout«endl;int finishO double b; b=u2iljj-ullilj; if(-e<b)&&(b<e) return 1;else return 0;int Nre$ult() doN+; for(i=l;i<4

23、;i+)for(j=l;j<4;j+)ulilU=u2injl;for(j=l;j<4;j+)u2lJ(jl=ultlj+a/4*(u2(0jl+u2llEj-ll+ul2nj+ulllU+l-4*ul(ll(Jl);for(j=l;j<4J+)u2 tjl=ult2j+a/4*(u2tlj+u22j(j-l+ul IjHul j十 1 卜431 jl);for(j=l;j<4;j+)u2 ljl=ul j+a/"(u2j+u23)(j:l+ulUHulJ+1卜431 U】);while(finish()=O);return N;程序四#include<

24、iostream> #include<math.h> #include<iomani p> using names pace std; class cscdd p hvate:int m,n;double x,e;double *p/*q;public:int k;cscdd(int mOJnt nO,double eO) int i;e=eO;k=0;m=mO;n=nO;p=newdouble *m; for i=O;i<m;i+) p i=new doublen;q=newdouble *m; for i=O;i<m;i+)qi=new doublen;if(m=n)x=2/(l+sin(3.141592654/(m-l);elsex=2-3.141592654*sqrt(2)*sqrt(l/(in-l)*(nn-l)+l/(n-l)*n-l); 憫璜?巌佳收斂W f :«x«endl;void bjtj(); void

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論