Poisson 泊松方程的差分方法matlab实现.docx
Poisson 泊松方程的差分方法matlab实现Poisson 泊松方程的差分方法 问题: 设G 是如下图所示的十字形区域,由5 个相等的正方形构成。 试用五点差分格式求解下面的Possion 问题: 解法分析: 原方程用五点差分格式写出来就变成了: 源代码: function F=fivepointdiff(l,n) h=l/n; N=2*(n-1)*n+(3*n-1)*(n-1); XY=zeros(2,N);%分割xy轴后每一个节点的坐标 for i=1:n for j=1:n-1 XY(:,(n-1)*(i-1)+j)=l+j*h;i*h; end end for i=1:n-1 for j=1:3*n-1 XY(:,n*(n-1)+(3*n-1)*(i-1)+j)=j*h;l+i*h; end end for i=1:n for j=1:n-1 XY(:,n*(n-1)+(3*n-1)*(n-1)+(n-1)*(i-1)+j)=l+j*h;2*l+(i-1)*h; end end A=zeros(N,N); for i=1:N for j=1:N if(i=j) A(i,j)=4; else if(XY(1,i)-XY(1,j)2+(XY(2,i)-XY(2,j)2)<2*h*h)%若是相邻点 择系数为-1 A(i,j)=-1; end end end end f=zeros(N,1);%就是等号右边F for i=1:N f(i,1)=h*h; end U=bicg(A,f,0.1,100);%求解Au=F F=XY;U'%输出 命令框中输入: fivepointdiff(1,25); x=ans(1,:); y=ans(2,:); z=ans(3,:); plot3(x,y,z) 得到的结果: