资源描述:
《用完全紧凑差分法求解椭圆型偏微分方程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用完全紧凑差分法求解椭圆型偏微分方程(高斯赛德尔迭代法)2010-05-2319:31functionvarargout=liu(varargin)a=0;b=2;c=0;d=1;h=1/16;f=inline('-(pi^2-1)*exp(x)*sin(pi*y)','x','y');g1x=inline('0');g2x=inline('0');g1y=inline('sin(pi*y)');g2y=inline('exp(2)*sin(pi*y)');[X,Y,Z]=chfenmethed(f
2、,g1x,g2x,g1y,g2y,a,b,c,d,h);mesh(X,Y,Z);shadingflat;xlabel('X','FontSize',14);ylabel('Y','FontSize',14);zlabel('error','FontSize',14);title('误差图');function[X,Y,Z]=chfenmethed(f,g1x,g2x,g1y,g2y,a,b,c,d,h)%求解下问题%u_xx+u_yy=-f(x,y)x,y在区域内xina3、(x,y)x,y在边界上%u=g(a,y)=g1yu=g(b,y)=g2yc=4、(i));endforj=1:nU(1,j)=feval(g1y,y(j));U(m,j)=feval(g2y,y(j));end%whiletrue%下为高斯赛德尔迭代法%----------------------------------------------------------------------fork=1:N U0=U; fori=2:m-1 forj=2:n-1 s1=U(i+1,j)+U(i,j+1)+U(i-1,j)+U(i,j-1)
5、; s2=U(i+1,j+1)+U(i-1,j+1)+U(i+1,j-1)+U(i-1,j-1); s3=feval(f,x(i+1),y(j))+feval(f,x(i-1),y(j))... +feval(f,x(i),y(j+1))+feval(f,x(i),y(j-1)); U(i,j)=(4*s1+s2-h^2/2*s3-4*h^2*feval(f,x(i),y(j)))/20; end end
6、ifmax(max(abs(U0-U)))