椭圆方程的有限差分法
问题描述:
如果R是平面(0,1)x(0,2)的区域,设L是二维拉普拉斯算子,并考虑R上的泊松方程Lu = 4。解是函数v(x,y)=(xy)^ 2。设g是对R的边界的限制。为了得到它,我们设h = k = 1/2,m = 3,n = 5。椭圆方程的有限差分法
这是我的代码:但它不起作用。
function w=poisson(xl,xr,yb,yt,M,N)
[email protected](x,y) 0; % define input function data
[email protected](x) (x^2-2*x+1); % define boundary values
[email protected](x) (x^2-4*x+4); % Example 8.8 is shown
[email protected](y) y^2;
[email protected](y) y^2;
m=M+1;n=N+1; mn=m*n;
h=(xr-xl)/M;h2=h^2;k=(yt-yb)/N;k2=k^2;
x=xl+(0:M)*h; % set mesh values
y=yb+(0:N)*k;
A=zeros(mn,mn);b=zeros(mn,1);
for i=2:m-1 % interior points
for j=2:n-1
A(i+(j-1)*m,i-1+(j-1)*m)=1/h2;A(i+(j-1)*m,i+1+(j-1)*m)=1/h2;
A(i+(j-1)*m,i+(j-1)*m)=-2/h2-2/k2;
A(i+(j-1)*m,i+(j-2)*m)=1/k2;A(i+(j-1)*m,i+j*m)=1/k2;
b(i+(j-1)*m)=f(x(i),y(j));
end
end
for i=1:m % bottom and top boundary points
j=1;A(i+(j-1)*m,i+(j-1)*m)=1;b(i+(j-1)*m)=g1(x(i));
j=n;A(i+(j-1)*m,i+(j-1)*m)=1;b(i+(j-1)*m)=g2(x(i));
end
for j=2:n-1 % left and right boundary points
i=1;A(i+(j-1)*m,i+(j-1)*m)=1;b(i+(j-1)*m)=g3(y(j));
i=m;A(i+(j-1)*m,i+(j-1)*m)=1;b(i+(j-1)*m)=g4(y(j));
end
v=A\b; % solve for solution in v labeling
w=reshape(v(1:mn),m,n); %translate from v to w
mesh(x,y,w')
答
根据您的问题描述,我改变了以下,并得到一个答案:
h=1/2;
它是利用一定的差异的方法找到近似解,并将其与比较正确的一个。它不起作用,因为它不给我任何答案。它显示N/A。 –
它说从底部的第三行有一个错误。 –
我用错误截图更新了我的问题。谢谢! –