有限差分法的Matlab程序.doc_第1頁
有限差分法的Matlab程序.doc_第2頁
有限差分法的Matlab程序.doc_第3頁
有限差分法的Matlab程序.doc_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

有限差分法的Matlab程序(橢圓型方程)function FD_PDE(fun,gun,a,b,c,d) % 用有限差分法求解矩形域上的Poisson方程 tol=10(-6); % 誤差界 N=1000; % 最大迭代次數(shù) n=20; % x軸方向的網(wǎng)格數(shù) m=20; % y軸方向的網(wǎng)格數(shù) h=(b-a)/n; % x軸方向的步長 l=(d-c)/m; % y軸方向的步長 for i=1:n-1 x(i)=a+i*h; end % 定義網(wǎng)格點(diǎn)坐標(biāo) for j=1:m-1 y(j)=c+j*l; end % 定義網(wǎng)格點(diǎn)坐標(biāo) u=zeros(n-1,m-1); %對u賦初值 % 下面定義幾個參數(shù) r=h2/l2; s=2*(1+r); k=1; % 應(yīng)用Gauss-Seidel法求解差分方程 while knorm; norm=abs(u(i,m-1)-z); end u(i,m-1)=z; end % 對右上角的網(wǎng)格點(diǎn)進(jìn)行處理 z=(-h2*fun(x(n-1),y(m-1)+gun(b,y(m-1)+r*gun(x(n-1),d)+r*u(n-1,m-2)+u(n-2,m-1)/s; if abs(u(n-1,m-1)-z)norm norm=abs(u(n-1,m-1)-z); end u(n-1,m-1)=z; % 對不靠近上下邊界的網(wǎng)格點(diǎn)進(jìn)行處理 for j=m-2:-1:2 % 對靠近左邊界的網(wǎng)格點(diǎn)進(jìn)行處理 z=(-h2*fun(x(1),y(j)+gun(a,y(j)+r*u(1,j+1)+r*u(1,j-1)+u(2,j)/s; if abs(u(1,j)-z)norm norm=abs(u(1,j)-z); end u(1,j)=z; % 對不靠近左右邊界的網(wǎng)格點(diǎn)進(jìn)行處理 for i=2:n-2 z=(-h2*fun(x(i),y(j)+u(i-1,j)+r*u(i,j+1)+r*u(i,j-1)+u(i+1,j)/s; if abs(u(i,j)-z)norm norm=abs(u(i,j)-z); end u(i,j)=z; end % 對靠近右邊界的網(wǎng)格點(diǎn)進(jìn)行處理 z=(-h2*fun(x(n-1),y(j)+gun(b,y(j)+r*u(n-1,j+1)+r*u(n-1,j-1)+u(n-2,j)/s; if abs(u(n-1,j)-z)norm norm=abs(u(n-1,j)-z); end u(n-1,j)=z; end % 對靠近下邊界的網(wǎng)格點(diǎn)進(jìn)行處理 % 對左下角的網(wǎng)格點(diǎn)進(jìn)行處理 z=(-h2*fun(x(1),y(1)+gun(a,y(1)+r*gun(x(1),c)+r*u(1,2)+u(2,1)/s; if abs(u(1,1)-z)norm norm=abs(u(1,1)-z); end u(1,1)=z; % 對靠近下邊界的除第一點(diǎn)和最后點(diǎn)外網(wǎng)格點(diǎn)進(jìn)行處理 for i=2:n-2 z=(-h2*fun(x(i),y(1)+r*gun(x(i),c)+r*u(i,2)+u(i+1,1)+u(i-1,1)/s; if abs(u(i,1)-z)norm norm=abs(u(i,1)-z); end u(i,1)=z; end % 對右下角的網(wǎng)格點(diǎn)進(jìn)行處理 z=(-h2*fun(x(n-1),y(1)+gun(b,y(1)+r*gun(x(n-1),c)+r*u(n-1,2)+u(n-2,1)/s; if abs(u(n-1,1)-z)norm norm=abs(u(n-1,1)-z); end u(n-1,1)=z; % 結(jié)果輸出 if norm=tol fid = fopen(FDresult.txt, wt); fprintf(fid,n*用有限差分法求解矩形域上Poisson方程的輸出結(jié)果*nn); fprintf(fid,迭代次數(shù): %d次nn,k); fprintf(fid, x的值 y的值 u的值 u的真實(shí)值 |u-u(x,y)|n); for i=1:n-1 for j=1:m-1 fprintf(fid, %8.3f %8.3f %14.8f %14.8f %14.8fn, x(i),y(j),u(i,j),gun(x(i),y(j),abs(u(i,j)-gun(x(i),y(j); end end fclose(fid); break; % 用來結(jié)束while循環(huán) end k=k+1; end if k=N+1 fid = fopen(FDresult.txt, wt); fprintf(fid,超過最大迭代次數(shù),求解失??!); fclose(fid); endclca1 a2 a3 a4 = textread(F:aa.txt,%f %f %f %f);a = a1 a2 a3;a=a;b=a4;pa,mina,maxa,pb,minb,maxb=premnmx(a,b);net =newrb(pa,pb,0,1.3,24,2);an =sim(net,pa);E = an - pb;m =sse(E)n = mse(E)f1 f2 f3 f4= textread(F:bb.txt,%f %f %f %f);f = f1 f2 f3

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論