⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poisson.m

📁 matlab的60个小程序
💻 M
字号:
close all;
clear all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%具体实例%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a=0;b=2;c=0;d=1;
n=6;m=5;TOL=1e-10;
ITMAX=200;
f=inline('x*exp(y)','x','y');
ga=inline('0','x','y');gb=inline('2*exp(y)','x','y');
gc=inline('x','x','y');gd=inline('exp(1)*x','x','y');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%程序部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
h=(b-a)/n;
k=(d-c)/m;
x=linspace(a,b,n+1);
x=x(2:n);
y=linspace(c,d,m+1);
y=y(2:m);
u=zeros(n-1,m-1);
lmd=h^2/k^2;
mu=2*(1+lmd);
xx=[];
yy=[];
uu=[];
ture=[];
l=1;
while (l<=ITMAX)
     z=(-h*h*f(x(1),y(m-1))+ga(a,y(m-1))+lmd*gd(x(1),d)+...
	   lmd*u(1,m-2)+u(2,m-1))/mu;
     NORM=abs(z-u(1,m-1));
     u(1,m-1)=z;
     for i=2:n-2
         z=(-h*h*f(x(i),y(m-1))+lmd*gd(x(i),d)+u(i-1,m-1)+...
	        u(i+1,m-1)+lmd*u(i,m-2))/mu;
         if(abs(u(i,m-1)-z)>NORM)
	        NORM=abs(u(i,m-1)-z);
         end
	     u(i,m-1)=z;
     end
    z=(-h*h*f(x(n-1),y(m-1))+gb(b,y(m-1))+...
	  lmd*gd(x(n-1),d)+u(n-2,m-1)+lmd*u(n-1,m-2))/mu;
	  if(abs(u(n-1,m-1)-z)>NORM)
	     NORM=abs(u(n-1,m-1)-z);
      end
      u(n-1,m-1)=z;
	   for j=m-2:-1:2
	       z=(-h*h*f(x(1),y(i))+ga(a,y(j))+lmd*u(1,j+1)+...
	         lmd*u(1,j-1)+u(2,j))/mu;
	       if(abs(u(1,j)-z)>NORM)
		      NORM=abs(u(1,j)-z);
          end
          u(1,j)=z;
	    for i=2:n-2
	        z=(-h*h*f(x(i),y(j))+u(i-1,j)+lmd*u(i,j+1)+...
		      u(i+1,j)+lmd*u(i,j-1))/mu;
		    if( abs(u(i,j)-z)>NORM)
		       NORM=abs(u(i,j)-z);
           end
           u(i,j)=z;
       end
        z=(-h*h*f(x(n-1),y(j))+gb(b,y(j))+u(n-2,j)+...
	      lmd*u(n-1,j+1)+lmd*u(n-1,j-1))/mu;
	    if(abs(u(n-1,j)-z)>NORM)
	       NORM=abs(u(n-1,j)-z);
        end
         u(n-1,j)=z;  
     end
	   z=(-h*h*f(x(1),y(1))+ga(a,y(1))+lmd*gc(x(1),c)+...
	     lmd*u(1,2)+u(2,1))/mu;
	   if(abs(u(1,1)-z)>NORM)
	     NORM=abs(u(1,1)-z);
      end
      u(1,1)=z;
	   for i=2:n-2
	     z=(-h*h*f(x(i),y(1))+lmd*gc(x(i),c)+...
		   u(i-1,1)+lmd*u(i,2)+u(i+1,1))/mu;
		if(abs(u(i,1)-z)>NORM)
		   NORM=abs(u(i,1)-z);
        end
         u(i,1)=z;
    end
	       z=(-h*h*f(x(n-1),y(1))+gb(b,y(1))+lmd*gc(x(n-1),c)+...
		     u(n-2,1)+lmd*u(n-1,2))/mu;
		 if(abs(u(n-1,1)-z)>NORM)
		    NORM=abs(u(n-1,1)-z);
         end
         u(n-1,1)=z;
         if(NORM<=TOL)
           for i=1:n-1
               for j=1:m-1
                   xx=[xx,x(i)];
                   yy=[yy,y(j)];
                   uu=[uu,u(i,j)];
                   tur(i,j)=x(i)*exp(y(j));
                   ture=[ture,tur(i,j)];
               end
           end
           break;
       end
       l=l+1;
end
     re=[xx'      yy'        uu'        ture']
     
%%%%%%%%%%%%%%%%%%%%%%%问题%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    [Y,X]=meshgrid(y,x);
    mesh(X,Y,u)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -